h2o.automl(h2o 3.20)는 여러 기초 모델을 생성하고 생성 된 기초 모델을 앙상블하여 보다 우수한 예측 모델을 생성하는 h2o패키지 함수입니다. 여기서 기초 모델을 앙상블할 경우 예측 성능이 높아지는데 이 경우 모델 위에 모델을 쌓는 방식이기 때문에 변수 중요도를 산출할 수 없다는 단점이 존재합니다.
rAutoFS(Auto Feature Selection in R)는 이러한 단점을 보완하는 차원에서 개발되었습니다. rAutoFS는 h2o.automl을 사용하여 변수 중요도를 산출합니다. 변수 중요도 산출 로직은 심플합니다. 기초 모델의 변수 중요도를 종합하여 변수 종합 순위를 도출하고 이를 기반으로 변수 중요도를 산출합니다.
- h2o.automl학습을 통해서 다수의 예측 모델 생성
- 생성 된 예측 모델에서 예측 성능이 높은 TOP N개의 모델을 선택 (num_of_model)
- TOP N개의 모델의 변수 중요도 도출
- 도출 된 변수 중요도을 기준으로 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)