티스토리 뷰

반응형

중요도가 높은 핵심 변수 선택하기



 모델의 예측률을 높이기 위해, 중요도가 높은 설명변수만 모델에 적용시켜주는 것이 중요합니다.



# 데이터 준비

> library(caret)

> rn <- createDataPartition(y = iris$Species, p = 0.7, list = F) 

> train <- iris[rn,]

> test <- iris[-rn,]

> table(train$Species)  

    setosa versicolor  virginica 

        35         35         35 

> table(test$Species)

    setosa versicolor  virginica 

        15         15         15



# 중요도가 높은 핵심 변수 선택하기


# 방법 1) randomForest 모델을 활용한 방법


> library(randomForest)

> forest_m <- randomForest(train$Species ~ ., data=train)

> forest_m$importance

             MeanDecreaseGini

Sepal.Length         6.270904

Sepal.Width          2.207310

Petal.Length        29.771763          Petal.Length 와 Petal.Width 가 중요한 변수인 것을 확인

Petal.Width         31.027319

> impor_val <- names(forest_m$importance[forest_m$importance>25,])    # 사용할 핵심 변수 이름을 추출 

> impor_val

[1] "Petal.Length" "Petal.Width"


# 중요도가 높은 설명변수만 다시 train data와 test data에 적용

> train <- train[,c(impor_val, 'Species')]

> test <- test[,c(impor_val, 'Species')]

 


# 방법 2) 크로스 산점도를 활용한 방법 


> plot(iris, col = iris$Species)                          # 크로스 산점도를 활용하여, 변수 간 상관관계를 확인




# '네모 1번' 그래프와 '네모 2번' 그래프는 서로 대칭이므로 한 면만 확인하면 됩니다.


설명변수 간 강한 상관관계를 갖을 경우, 45도의 양 or 음의 관계(누런 색 타원)  설명변수가 중복되어 다중공산성의 문제를 발생시킬 수 있습니다 -> 예측력 하락 -> 둘 줄 하나의 변수 제거 필요(변수에 가중치를 부여하여 선택 or 가공)


하지만, 현재 iris data는 초기 4개의 변수밖에 없으므로 어쩔 수 없이 그냥 사용하였습니다.


# 결론으로, 

randomForest 모델로 확인했을 때와 같이 Petal.Length Petal.Width 가 중요한 변수인 것을 확인할 수 있습니다.

분류 기준으로 사용할 수 있다는 뜻이죠.

왜냐! Petal.Length 와 Petal.Width 가 X축이고 Specise 가 Y축 인 그래프(하단 보라색 점선이 있는 그래프)를 보면 약간의 오분류가 있지만 다른 변수들보다 분류 정확도가 높다는 것을 대략적으로 확인할 수 있습니다. 


# 이렇듯, 크로스 산점도를 통해 설명변수끼리의 관계, 각 설명변수와 종속변수와의 관계 확인이 가능하고, 

인과관계도 대략적으로 확인할 수 있습니다. 

plot 함수 하나로 간단하게 변수를 이해하고, 중요한 단서를 찾을 수 있는 방법이므로, 데이터 분석 초기에 꼭 확인하는게 좋습니다 !!




참고: KIC 캠퍼스 머신러닝기반의 빅데이터분석 양성과정

반응형
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday