Ensamblado de modelos

Cómo ganar una competición de Kaggle con Python

Yauhen Babakhin

Kaggle Grandmaster

Ensamblado de modelos

diseño de ensemble de una solución ganadora en la competición de Kaggle

Cómo ganar una competición de Kaggle con Python

Mezcla de modelos

  • Problema de regresión
  • Entrena dos modelos distintos: A y B
  • Haz predicciones en el test:
ID test Predicción modelo A Predicción modelo B
1 1.2 1.5
2 0.1 0.4
3 5.4 7.2
Cómo ganar una competición de Kaggle con Python

Mezcla de modelos

 

ID test Predicción modelo A Predicción modelo B Media aritmética
1 1.2 1.5 1.35
2 0.1 0.4 0.25
3 5.4 7.2 6.30
Cómo ganar una competición de Kaggle con Python

Mezcla de modelos

 

Media aritmética

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

Media geométrica

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

Cómo ganar una competición de Kaggle con Python

Stacking de modelos

 

  1. Divide el train en dos partes
  2. Entrena varios modelos en la Parte 1
  3. Predice en la Parte 2
  4. Predice en el test
  5. Entrena un modelo nuevo en la Parte 2 usando predicciones como features
  6. Predice en el test con el modelo de 2º nivel
Cómo ganar una competición de Kaggle con Python

Ejemplo de stacking

ID train 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
IDs test feature_1 ... feature_N Target
11 0.49 ... -2.32 ?
12 0.32 ... 1.15 ?
13 0.91 ... 0.81 ?
Cómo ganar una competición de Kaggle con Python

Ejemplo de stacking

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

 

ID train feature_1 ... feature_N Target
4 0.10 ... 2.87 1
5 0.54 ... -0.10 0
Cómo ganar una competición de Kaggle con Python

Ejemplo de stacking

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

 

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

Entrena modelos A, B, C en la Parte 1

Cómo ganar una competición de Kaggle con Python

Ejemplo de stacking

ID train 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

 

IDs test 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
Cómo ganar una competición de Kaggle con Python

Ejemplo de stacking

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

 

IDs test 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
Cómo ganar una competición de Kaggle con Python

Ejemplo de stacking

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

 

IDs test 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

Entrena el modelo de 2º nivel en la Parte 2

Cómo ganar una competición de Kaggle con Python

Ejemplo de stacking

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

 

IDs test Target A_pred B_pred C_pred Predicción stacking
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
Cómo ganar una competición de Kaggle con Python

¡Vamos a practicar!

Cómo ganar una competición de Kaggle con Python

Preparing Video For Download...