模型集成

用 Python 赢下 Kaggle 竞赛

Yauhen Babakhin

Kaggle Grandmaster

模型集成

Kaggle竞赛获胜方案的集成设计

用 Python 赢下 Kaggle 竞赛

模型混合

  • 回归问题
  • 训练两个不同模型:A 和 B
  • 在测试集上预测:
测试ID 模型A预测 模型B预测
1 1.2 1.5
2 0.1 0.4
3 5.4 7.2
用 Python 赢下 Kaggle 竞赛

模型混合

 

测试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 竞赛

模型混合

 

算术平均

$$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. 用二级模型在测试集上预测
用 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部分上训练二级模型

用 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 竞赛

Passons à la pratique !

用 Python 赢下 Kaggle 竞赛

Preparing Video For Download...