1 앙상블 모형 1

\(H_2 O\) 앙상블 모형과 슈퍼학습기에 대한 전반적인 의미를 바탕으로 캐글 신용데이터를 통해 2년내 신용불량 위험을 예측해보자. 앙상블 모형은 배깅(bagging), 부스팅(boosting), 스택쌓기(stacking) 등 다양한 모형조합 알고리즘이 존재한다.

앙상블 모형 특징
배깅(Bagging) * 분산을 줄이고, 정확도를 향상
* 이상치와 잡음이 있는 데이터에 강건
* 흔히 의사결정나무(Decision Tree)와 함께 사용, 즉 확률숲(Random Forest)
부스팅(Boosting) * 분산을 줄이고, 정확도를 향상
* 이상치와 잡음이 있는 데이터에 강건하지 않음
* 유연성 – 어떤 유형의 손실함수와 함께 사용가능
스택쌓기(Stacking) * 강력한 성능을 갖는 다양한 분류학습기를 앙상블로 조합
* “메타학습기(metalearner)” 알고리즘을 사용하여 다음 수준 기계학습을 통해 기초 학습기에 대한 최적의 조합을 찾아내도록 학습.

슈퍼학습기(Super learner) 는 버클리 통계학과 교수 Mark van der Laan가 2007년 발표한 논문에 뿌리를 두고 있다. 물론 그 이전에 관련된 연구를 지속적으로 진행하였으며, 슈퍼학습기가 점근적으로 최적 조합이라는 것을 증명한 이론적 토대를 제공했으며 2010년 첫 R 코드로 구현되었고, SuperLearner - Super Learner Prediction, tlme로 CRAN에서 설치가능하다.

슈퍼학습기 이전에 David H. Wolpert가 1992년 Stacked Generalization 으로 메타학습기를 통한 스택쌓기를 처음 공식화했고, Leo Breiman 교수가 1996년 Stacked Regressions 을 제안했고, 이 연구결과가 슈퍼학습기로 이어졌다.

2 슈퍼학습기 알고리즘

“수준 0(Level-zero)” 데이터는 전통적인 통계모형에 사용된 데이터 형태로 이해하면 쉽다. 즉, 설계행렬 \(X\)와 종속변수 \(y\)로 모형 모수와 함께 기본 학습기를 지정한다. 필요하면 다른 알고리즘을 지정해서 메타 학습기를 지정하기도 한다. 그리고 나서 k-집단 교차타당도를 기본학습기에 적용하여 성능을 평가한다.

수준 0 데이터

“수준 1(Level-One)” 데이터는 k-집단 교차타당도를 적용한 기본학습기에서 나온 예측값을 수집한다. 이를 칼럼마다 모아 새로운 설계 행렬 \(Z\)를 생성한다. \(Z\), \(y\)를 사용해서 메타학습기를 훈련시켜 최적 모형을 개발한다.

수준 1 데이터

슈퍼학습기는 교차타당도를 통해 다른 모수를 갖는 다양한 모형을 명세하여 모형선택과정을 거친다는 점에서 격자탐색(Grid Search)과 임의탐색(Random Search) 과정을 거치는 모수 미세조정, 모수 탐색 방법론과 맥을 함께 한다. 하지만, 메타러닝 단계로 알려진 슈퍼학습기 알고리즘 후반부는 또다른 모형을 하나 생성한다는 점에서 차별점이 있다.

3 캐글 신용점수 사례

캐글, Give Me Some Credit 데이터로 신용을 제공한 후 2년안에 누가 신용불량자로 될 확률이 높은지 예측하는 대회다.

3.1 \(H_2 O\) 클러스터 및 환경설정 2

  1. h2o 팩키지와 h2oEnsemble 팩키지를 설치하고, \(H_2 O\) 클러스터를 생성한다.
    • devtools::install_github("h2oai/h2o-3/h2o-r/ensemble/h2oEnsemble-package")
  2. \(H_2 O\) 클러스터를 nthreads = -1 최대 코어수와 max_mem_size = '8g' 최대 메모리 8G를 설정하고 생성한다.
 Connection successful!

R is connected to the H2O cluster: 
    H2O cluster uptime:         1 hours 2 minutes 
    H2O cluster timezone:       Asia/Seoul 
    H2O data parsing timezone:  UTC 
    H2O cluster version:        3.20.0.8 
    H2O cluster version age:    3 months and 13 days !!! 
    H2O cluster name:           H2O_started_from_R_victorlee_lyi311 
    H2O cluster total nodes:    1 
    H2O cluster total memory:   3.39 GB 
    H2O cluster total cores:    4 
    H2O cluster allowed cores:  4 
    H2O cluster healthy:        TRUE 
    H2O Connection ip:          localhost 
    H2O Connection port:        54321 
    H2O Connection proxy:       NA 
    H2O Internal Security:      FALSE 
    H2O API Extensions:         Algos, AutoML, Core V3, Core V4 
    R Version:                  R version 3.5.1 (2018-07-02) 
[1] 0

3.2 캐글 신용평가 데이터 준비

Give Me Some Credit 데이터 다운로드 사이트로 이동해서 cs-training.csv (7.21 MB) 데이터를 다운로드 받는다.

그리고, 종속변수 2년내 신용불량 여부가 SeriousDlqin2yrs 변수에 저장되어 있으니 이를 종속변수로 두고, 나머지를 독립변수로 설정한다.

별도 데이터 변환 및 정제 과정은 생략한다.


  |                                                                       
  |                                                                 |   0%
  |                                                                       
  |====                                                             |   6%
  |                                                                       
  |=================================================================| 100%

3.3 슈퍼학습기 모형 적합

일반화 선형모형(GLM), 확률숲(RF), Gradient Boosting Machine, 딥러닝(DL)을 기본 학습기로 두고, 2차 메타학습기로 일반화 선형모형(GLM)을 두는 슈퍼학습기 모형을 설정하고 \(H_2 O\) 클러스터에서 신용불량 예측모형을 개발한다.


  |                                                                       
  |                                                                 |   0%
  |                                                                       
  |=================================================================| 100%
[1] "Cross-validating and training base learner 1: h2o.glm.wrapper"

  |                                                                       
  |                                                                 |   0%
  |                                                                       
  |=======================                                          |  35%
  |                                                                       
  |========================================================         |  87%
  |                                                                       
  |=================================================================| 100%
[1] "Cross-validating and training base learner 2: h2o.randomForest.wrapper"

  |                                                                       
  |                                                                 |   0%
  |                                                                       
  |=                                                                |   1%
  |                                                                       
  |==                                                               |   2%
  |                                                                       
  |==                                                               |   4%
  |                                                                       
  |====                                                             |   6%
  |                                                                       
  |======                                                           |   9%
  |                                                                       
  |========                                                         |  12%
  |                                                                       
  |===========                                                      |  17%
  |                                                                       
  |============                                                     |  19%
  |                                                                       
  |=============                                                    |  20%
  |                                                                       
  |===============                                                  |  22%
  |                                                                       
  |=================                                                |  26%
  |                                                                       
  |==================                                               |  28%
  |                                                                       
  |====================                                             |  30%
  |                                                                       
  |=====================                                            |  33%
  |                                                                       
  |======================                                           |  34%
  |                                                                       
  |=======================                                          |  36%
  |                                                                       
  |========================                                         |  37%
  |                                                                       
  |==========================                                       |  40%
  |                                                                       
  |============================                                     |  43%
  |                                                                       
  |==============================                                   |  47%
  |                                                                       
  |===============================                                  |  48%
  |                                                                       
  |=================================                                |  50%
  |                                                                       
  |==================================                               |  52%
  |                                                                       
  |===================================                              |  53%
  |                                                                       
  |===================================                              |  54%
  |                                                                       
  |=====================================                            |  57%
  |                                                                       
  |=======================================                          |  59%
  |                                                                       
  |=========================================                        |  63%
  |                                                                       
  |==========================================                       |  65%
  |                                                                       
  |===========================================                      |  67%
  |                                                                       
  |============================================                     |  68%
  |                                                                       
  |=============================================                    |  70%
  |                                                                       
  |==============================================                   |  71%
  |                                                                       
  |===============================================                  |  72%
  |                                                                       
  |=================================================                |  75%
  |                                                                       
  |====================================================             |  80%
  |                                                                       
  |======================================================           |  83%
  |                                                                       
  |=======================================================          |  85%
  |                                                                       
  |=========================================================        |  87%
  |                                                                       
  |==========================================================       |  89%
  |                                                                       
  |============================================================     |  92%
  |                                                                       
  |=============================================================    |  94%
  |                                                                       
  |===============================================================  |  97%
  |                                                                       
  |=================================================================| 100%
[1] "Cross-validating and training base learner 3: h2o.gbm.wrapper"

  |                                                                       
  |                                                                 |   0%
  |                                                                       
  |==                                                               |   3%
  |                                                                       
  |=====                                                            |   8%
  |                                                                       
  |======================                                           |  33%
  |                                                                       
  |============================                                     |  44%
  |                                                                       
  |=======================================                          |  59%
  |                                                                       
  |============================================                     |  67%
  |                                                                       
  |===============================================                  |  72%
  |                                                                       
  |=================================================                |  75%
  |                                                                       
  |====================================================             |  81%
  |                                                                       
  |======================================================           |  83%
  |                                                                       
  |============================================================     |  92%
  |                                                                       
  |==============================================================   |  96%
  |                                                                       
  |=================================================================| 100%
[1] "Cross-validating and training base learner 4: h2o.deeplearning.wrapper"

  |                                                                       
  |                                                                 |   0%
  |                                                                       
  |                                                                 |   1%
  |                                                                       
  |=                                                                |   1%
  |                                                                       
  |=                                                                |   2%
  |                                                                       
  |==                                                               |   3%
  |                                                                       
  |===                                                              |   4%
  |                                                                       
  |===                                                              |   5%
  |                                                                       
  |====                                                             |   6%
  |                                                                       
  |====                                                             |   7%
  |                                                                       
  |=====                                                            |   7%
  |                                                                       
  |======                                                           |   9%
  |                                                                       
  |=======                                                          |  10%
  |                                                                       
  |=======                                                          |  11%
  |                                                                       
  |================                                                 |  24%
  |                                                                       
  |========================                                         |  37%
  |                                                                       
  |=========================                                        |  38%
  |                                                                       
  |=========================                                        |  39%
  |                                                                       
  |==========================                                       |  39%
  |                                                                       
  |==========================                                       |  40%
  |                                                                       
  |===========================                                      |  41%
  |                                                                       
  |===========================                                      |  42%
  |                                                                       
  |============================                                     |  43%
  |                                                                       
  |============================                                     |  44%
  |                                                                       
  |=============================                                    |  44%
  |                                                                       
  |=============================                                    |  45%
  |                                                                       
  |==============================                                   |  46%
  |                                                                       
  |==============================                                   |  47%
  |                                                                       
  |===============================                                  |  47%
  |                                                                       
  |===============================                                  |  48%
  |                                                                       
  |=================================================                |  75%
  |                                                                       
  |=================================================                |  76%
  |                                                                       
  |==================================================               |  77%
  |                                                                       
  |===================================================              |  78%
  |                                                                       
  |===================================================              |  79%
  |                                                                       
  |====================================================             |  79%
  |                                                                       
  |====================================================             |  80%
  |                                                                       
  |=====================================================            |  81%
  |                                                                       
  |=====================================================            |  82%
  |                                                                       
  |==============================================================   |  96%
  |                                                                       
  |=================================================================| 100%
[1] "Metalearning"

  |                                                                       
  |                                                                 |   0%
  |                                                                       
  |========                                                         |  12%
  |                                                                       
  |=================================================================| 100%

  |                                                                       
  |                                                                 |   0%
  |                                                                       
  |=========================================================        |  88%
  |                                                                       
  |=================================================================| 100%

  |                                                                       
  |                                                                 |   0%
  |                                                                       
  |=================================================================| 100%

  |                                                                       
  |                                                                 |   0%
  |                                                                       
  |=================================================================| 100%

  |                                                                       
  |                                                                 |   0%
  |                                                                       
  |=================================================================| 100%

  |                                                                       
  |                                                                 |   0%
  |                                                                       
  |=================================================================| 100%

3.4 슈퍼학습기 모형 평가

cvAUC 팩키지를 통해 AUC 면적을 최대화한 개별 모형성능을 살펴본다. 가장 성능이 좋게 나온 것은 확률숲(randomForest)으로 거의 1에 수렴하는 0.985가 나온다.

                   learner       auc
1          h2o.glm.wrapper 0.6991657
2 h2o.randomForest.wrapper 0.9805686
3          h2o.gbm.wrapper 0.8412568
4 h2o.deeplearning.wrapper 0.8139729

슈퍼학습기를 통해 두번째 모형을 돌린 결과 성능이 0.965로 확률숲보다 약간 떨어지는 것으로 나온다. 생각해보면 기본 학습기 중 일반화 선형모형의 AUC가 0.698로 낮은 것도 설명이 가능한 것으로 보인다.

[1] 0.9635588