더북(TheBook)

변수 중요도 평가

‘9.2.3 변수 선택’ 절에서는 모델링에 사용할 변수를 선택하는 방법에 대해 살펴봤다. randomForest( ) 역시 변수의 중요도를 평가하고 모델링에 사용할 변수를 선택하는 데 사용할 수 있다. randomForest( )의 변수 중요도는 변수가 정확도와 노드 불순도 개선에 얼마만큼 기여하는지로 측정된다. 이렇게 구한 변수 중요도는 다른 모델(예를 들면, 선형 회귀)에 사용할 변수를 선택하는 데 사용할 수 있다. 즉, 이 방법은 변수 선택 방법 중 필터 방법이다.

변수의 중요도를 알아보려면 모델 작성 시 randomForest( )에 importance=TRUE를 지정한다. 그런 다음 importance( ), varImpPlot( )을 사용해 결과를 출력한다.

다음은 iris에 대한 랜덤 포레스트로부터 변수 중요도를 평가한 결과이다. 정확도MeanDecreaseAccuracy에서는 Petal.Length, Petal.Width, Sepal.Length, Sepal.Width 순으로 변수가 중요함을 알 수 있다. 노드 불순도 개선MeanDecreaseGini에서는 Petal.Width, Petal.Length, Sepal.Length, Sepal.Width 순으로 중요했다. 다수의 의사 결정 나무로부터 변수가 정확도와 노드 불순도 개선에 기여하는 측면을 평가하므로 평균(Mean)이 언급되어 있다.

> m <- randomForest(Species ~., data=iris, importance=TRUE)
> importance(m)
                setosa versicolor virginica MeanDecreaseAccuracy MeanDecreaseGini
Sepal.Length  6.622012   8.534426  7.485710            10.923173         9.920924
Sepal.Width   4.626843   2.962443  4.699581             5.799664         2.392394
Petal.Length 23.070189  32.907859 27.733675            33.648923        42.229501
Petal.Width  21.420105  32.365774 28.948582            32.420192        44.710727

varImpPlot( )을 사용해 이를 그림으로 좀 더 쉽게 알아볼 수 있다.

> varImpPlot(m, main="varImpPlot of iris")
그림 10-6 randomForest를 사용한 변수 중요도 평가
그림 10-6 randomForest를 사용한 변수 중요도 평가

정규화 랜덤 포레스트RRF, Regularized Random Forest[9]는 랜덤 포레스트를 개선한 변수 선택 방법으로, 부모 노드에서 가지를 나눌 때 사용한 변수와 유사한 변수로 자식 노드에서 가지를 나눌 경우 해당 변수에 패널티를 부여한다. 이 방식은 랜덤 포레스트를 직접 변수 선택에 사용하는 경우에 비해 좋은 변수들을 선택해주는 것으로 알려져 있다. 관심 있는 독자는 RRF 패키지[10]를 사용해보기 바란다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.