모델 앙상블

Python으로 Kaggle 대회 공략하기

Yauhen Babakhin

Kaggle Grandmaster

모델 앙상블

Kaggle 대회 우승 솔루션의 앙상블 설계

Python으로 Kaggle 대회 공략하기

모델 블렌딩

  • 회귀 문제
  • 서로 다른 두 모델 A, B 학습
  • 테스트 데이터에 예측 수행:
Test ID Model A prediction Model B prediction
1 1.2 1.5
2 0.1 0.4
3 5.4 7.2
Python으로 Kaggle 대회 공략하기

모델 블렌딩

 

Test ID Model A prediction Model B prediction 산술평균
1 1.2 1.5 1.35
2 0.1 0.4 0.25
3 5.4 7.2 6.30
Python으로 Kaggle 대회 공략하기

모델 블렌딩

 

산술평균

$$arithmetic = \frac{1}{n}\sum_{i=1}^{n}{x_i}$$

기하평균

$$geometric = \Bigg({\prod_{i=1}^{n}{x_i}}\Bigg)^{\frac{1}{n}}$$

Python으로 Kaggle 대회 공략하기

모델 스태킹

 

  1. 학습 데이터를 두 부분으로 분할
  2. 파트 1에서 여러 모델 학습
  3. 파트 2에 예측 생성
  4. 테스트 데이터에 예측 생성
  5. 예측을 특성으로 하여 파트 2에서 새 모델 학습
  6. 2단계 모델로 테스트 데이터 예측
Python으로 Kaggle 대회 공략하기

스태킹 예시

Train ID feature_1 ... feature_N Target
1 0.55 ... 1.37 1
2 0.12 ... -2.50 0
3 0.65 ... 3.14 0
4 0.10 ... 2.87 1
5 0.54 ... -0.10 0
Test IDs feature_1 ... feature_N Target
11 0.49 ... -2.32 ?
12 0.32 ... 1.15 ?
13 0.91 ... 0.81 ?
Python으로 Kaggle 대회 공략하기

스태킹 예시

Train ID feature_1 ... feature_N Target
1 0.55 ... 1.37 1
2 0.12 ... -2.50 0
3 0.65 ... 3.14 0

 

Train ID feature_1 ... feature_N Target
4 0.10 ... 2.87 1
5 0.54 ... -0.10 0
Python으로 Kaggle 대회 공략하기

스태킹 예시

Train ID feature_1 ... feature_N Target
1 0.55 ... 1.37 1
2 0.12 ... -2.50 0
3 0.65 ... 3.14 0

 

Train ID feature_1 ... feature_N Target
4 0.10 ... 2.87 1
5 0.54 ... -0.10 0

파트 1에 모델 A, B, C 학습

Python으로 Kaggle 대회 공략하기

스태킹 예시

Train ID feature_1 ... feature_N Target A_pred B_pred C_pred
4 0.10 ... 2.87 1 0.71 0.52 0.98
5 0.54 ... -0.10 0 0.45 0.32 0.24

 

Test IDs feature_1 ... feature_N Target A_pred B_pred C_pred
11 0.49 ... -2.32 ? 0.62 0.45 0.81
12 0.32 ... 1.15 ? 0.31 0.52 0.41
13 0.91 ... 0.81 ? 0.74 0.55 0.92
Python으로 Kaggle 대회 공략하기

스태킹 예시

Train ID Target A_pred B_pred C_pred
4 1 0.71 0.52 0.98
5 0 0.45 0.32 0.24

 

Test IDs Target A_pred B_pred C_pred
11 ? 0.62 0.45 0.81
12 ? 0.31 0.52 0.41
13 ? 0.74 0.55 0.92
Python으로 Kaggle 대회 공략하기

스태킹 예시

Train ID Target A_pred B_pred C_pred
4 1 0.71 0.52 0.98
5 0 0.45 0.32 0.24

 

Test IDs Target A_pred B_pred C_pred
11 ? 0.62 0.45 0.81
12 ? 0.31 0.52 0.41
13 ? 0.74 0.55 0.92

파트 2에 2단계 모델 학습

Python으로 Kaggle 대회 공략하기

스태킹 예시

Train ID Target A_pred B_pred C_pred
4 1 0.71 0.52 0.98
5 0 0.45 0.32 0.24

 

Test IDs Target A_pred B_pred C_pred Stacking prediction
11 ? 0.62 0.45 0.81 0.73
12 ? 0.31 0.52 0.41 0.35
13 ? 0.74 0.55 0.92 0.88
Python으로 Kaggle 대회 공략하기

연습해 봅시다!

Python으로 Kaggle 대회 공략하기

Preparing Video For Download...