模型集成

用 Python 拿下 Kaggle 競賽

Yauhen Babakhin

Kaggle Grandmaster

模型集成

Kaggle 競賽獲勝方案的集成設計

用 Python 拿下 Kaggle 競賽

模型混合(Blending)

  • 迴歸問題
  • 訓練兩個不同模型:A 與 B
  • 在測試資料上做預測:
測試 ID 模型 A 預測 模型 B 預測
1 1.2 1.5
2 0.1 0.4
3 5.4 7.2
用 Python 拿下 Kaggle 競賽

模型混合(Blending)

 

測試 ID 模型 A 預測 模型 B 預測 算術平均
1 1.2 1.5 1.35
2 0.1 0.4 0.25
3 5.4 7.2 6.30
用 Python 拿下 Kaggle 競賽

模型混合(Blending)

 

算術平均

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

幾何平均

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

用 Python 拿下 Kaggle 競賽

模型堆疊(Stacking)

 

  1. 將訓練資料分成兩部分
  2. 在第 1 部分訓練多個模型
  3. 對第 2 部分產生預測
  4. 對測試資料產生預測
  5. 以第 2 部分的預測作為特徵,訓練新模型
  6. 使用第 2 層模型對測試資料預測
用 Python 拿下 Kaggle 競賽

堆疊範例

訓練 ID feature_1 ... feature_N 目標
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
測試 ID feature_1 ... feature_N 目標
11 0.49 ... -2.32 ?
12 0.32 ... 1.15 ?
13 0.91 ... 0.81 ?
用 Python 拿下 Kaggle 競賽

堆疊範例

訓練 ID feature_1 ... feature_N 目標
1 0.55 ... 1.37 1
2 0.12 ... -2.50 0
3 0.65 ... 3.14 0

 

訓練 ID feature_1 ... feature_N 目標
4 0.10 ... 2.87 1
5 0.54 ... -0.10 0
用 Python 拿下 Kaggle 競賽

堆疊範例

訓練 ID feature_1 ... feature_N 目標
1 0.55 ... 1.37 1
2 0.12 ... -2.50 0
3 0.65 ... 3.14 0

 

訓練 ID feature_1 ... feature_N 目標
4 0.10 ... 2.87 1
5 0.54 ... -0.10 0

在第 1 部分訓練模型 A、B、C

用 Python 拿下 Kaggle 競賽

堆疊範例

訓練 ID feature_1 ... feature_N 目標 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

 

測試 ID feature_1 ... feature_N 目標 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 競賽

堆疊範例

訓練 ID 目標 A_pred B_pred C_pred
4 1 0.71 0.52 0.98
5 0 0.45 0.32 0.24

 

測試 ID 目標 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 競賽

堆疊範例

訓練 ID 目標 A_pred B_pred C_pred
4 1 0.71 0.52 0.98
5 0 0.45 0.32 0.24

 

測試 ID 目標 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 競賽

堆疊範例

訓練 ID 目標 A_pred B_pred C_pred
4 1 0.71 0.52 0.98
5 0 0.45 0.32 0.24

 

測試 ID 目標 A_pred B_pred C_pred 堆疊預測
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...