티스토리 뷰
중요도가 높은 핵심 변수 선택하기
모델의 예측률을 높이기 위해, 중요도가 높은 설명변수만 모델에 적용시켜주는 것이 중요합니다.
# 데이터 준비
> 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 캠퍼스 머신러닝기반의 빅데이터분석 양성과정
'R > Analysis' 카테고리의 다른 글
[R 분석] 계층적 군집 분석(hierarchical clustering) (0) | 2019.01.21 |
---|---|
[R 분석] K-NN 알고리즘 적용 및 매개변수 튜닝 (0) | 2019.01.19 |
[R 분석] Random Forest 매개변수 튜닝 (1) | 2019.01.18 |
[R 분석] Random Forest 알고리즘 (0) | 2019.01.17 |
[R 분석] Decision Tree 매개변수 튜닝 (0) | 2019.01.17 |