모델을 사용한 변수 중요도 평가
caret의 varImp( )는 모델로부터 변수 중요도를 계산한다. 이 함수가 변수의 중요도를 평가하는 자세한 방법은 인자에 주어진 모델에 따라 다르다. 모델별 중요도 계산 방식은 도움말 ?varImp에 설명되어 있으니 참고하기 바란다.
caret::varImp : 회귀, 분류 모델을 위한 변수 중요도를 계산한다. |
caret::varImp(
object # 회귀 또는 분류 모델
)
반환 값은 변수 중요도를 저장한 객체다. |
rpart 패키지(‘10.3 의사 결정 나무’ 절 참고)를 사용해 mlbench의 유방암 데이터 BreastCancer에 대한 의사 결정 나무를 만든 다음, 그로부터 변수의 중요성을 계산하는 예를 보자. varImp는 의사 결정 나무의 노드에서 가지가 나뉠 때의 손실 함수loss function 감소량을 각 변수에 더하는 방법으로 변수 중요도를 평가한다.
> library(mlbench) > library(rpart) > library(caret) > data(BreastCancer) > m <- rpart(Class ~., data=BreastCancer) > varImp(m) Overall Bare.nuclei 203.7284 Bl.cromatin 197.9057 Cell.shape 216.3834 Cell.size 222.9401 Id 307.8953 Cl.thickness 0.0000 Marg.adhesion 0.0000 Epith.c.size 0.0000 Normal.nucleoli 0.0000 Mitoses 0.0000
실행 결과 Bare.Nuclei, Bl.cromatin 등의 순으로 변수의 중요도가 높게 평가되었다.
이제 변수 선택을 하는 방법들이 어떻게 사용되는지 감을 잡았으리라 생각한다. 추가적인 부분은 caret의 변수 선택 매뉴얼[10]과 FSelector 패키지의 참조 매뉴얼[11] 등을 참고하기 바란다.