자동변수선택(rAutoFS) R패키지 개발

2018/06/13

h2o.automl(h2o 3.20)는 여러 기초 모델을 생성하고 생성 된 기초 모델을 앙상블하여 보다 우수한 예측 모델을 생성하는 h2o패키지 함수입니다. 여기서 기초 모델을 앙상블할 경우 예측 성능이 높아지는데 이 경우 모델 위에 모델을 쌓는 방식이기 때문에 변수 중요도를 산출할 수 없다는 단점이 존재합니다.

rAutoFS(Auto Feature Selection in R)는 이러한 단점을 보완하는 차원에서 개발되었습니다. rAutoFS는 h2o.automl을 사용하여 변수 중요도를 산출합니다. 변수 중요도 산출 로직은 심플합니다. 기초 모델의 변수 중요도를 종합하여 변수 종합 순위를 도출하고 이를 기반으로 변수 중요도를 산출합니다.

  1. h2o.automl학습을 통해서 다수의 예측 모델 생성
  2. 생성 된 예측 모델에서 예측 성능이 높은 TOP N개의 모델을 선택 (num_of_model)
  3. TOP N개의 모델의 변수 중요도 도출
  4. 도출 된 변수 중요도을 기준으로 vote방식으로 h2o.automl의 변수 중요도 종합

rAutoFS::autoFS의 변수 중요도 결과는 다음과 같습니다. (패키지 example)

rank vi_GBM14 vi_GBM0 vi_GBM1 vi_GBM23 vi_GBM55 vi
1 Day.Charge State State State State State
2 State Day.Charge Day.Charge Day.Charge Day.Charge Day.Charge
3 CustServ.Calls CustServ.Calls CustServ.Calls Day.Mins Eve.Mins CustServ.Calls
4 Int.l.Plan Day.Mins Day.Mins CustServ.Calls Int.l.Plan Int.l.Plan
5 Day.Mins Eve.Mins Eve.Mins Eve.Mins Night.Mins Eve.Mins
6 Intl.Charge Int.l.Plan Int.l.Plan Intl.Calls Intl.Calls Int.l.Plan
7 Eve.Charge Intl.Calls Intl.Calls Int.l.Plan Night.Calls Intl.Calls
8 VMail.Plan Eve.Charge Intl.Charge Intl.Charge CustServ.Calls Intl.Charge
9 Intl.Calls VMail.Message Eve.Charge Eve.Charge Intl.Charge Eve.Charge
10 Eve.Mins Intl.Charge VMail.Message Intl.Mins Day.Mins Eve.Mins
11 Night.Mins Intl.Mins Intl.Mins VMail.Plan Account.Length Intl.Mins
12 Night.Charge VMail.Plan VMail.Plan Day.Calls Eve.Calls VMail.Plan
13 Intl.Mins Night.Mins Night.Mins Night.Charge Night.Charge Night.Mins
14 Eve.Calls Night.Charge Night.Charge VMail.Message Intl.Mins Night.Charge
15 Account.Length Night.Calls Account.Length Night.Calls Day.Calls Account.Length
16 Night.Calls Day.Calls Night.Calls Night.Mins VMail.Plan Night.Calls
17 Day.Calls Account.Length Day.Calls Account.Length Eve.Charge Day.Calls
18 VMail.Message Eve.Calls Eve.Calls Eve.Calls Area.Code Eve.Calls
19 Area.Code Area.Code Area.Code Area.Code VMail.Message Area.Code


rAutoFS 설치 방법

library(devtools)
install_github("jacobgreen1984/rAutoFE")
library(rAutoFE)


rAutoFS 실행 방법

library(rAutoFS)
library(h2o)
h2o.init()
data(churn, package = "rAutoFS")
data_hex <- as.h2o(churn)
y = "Churn."
x = colnames(data_hex)[colnames(data_hex)!=y]
autoFS(data_hex, x, y, num_of_model=5, num_of_vi=10)


-->