Model-ensembling

Een Kaggle-competitie winnen met Python

Yauhen Babakhin

Kaggle Grandmaster

Model-ensembling

ensemble-ontwerp van een winnende oplossing in de Kaggle-wedstrijd

Een Kaggle-competitie winnen met Python

Model-blending

  • Regressieprobleem
  • Train twee verschillende modellen: A en B
  • Maak voorspellingen op de testdata:
Test-ID Voorspelling model A Voorspelling model B
1 1.2 1.5
2 0.1 0.4
3 5.4 7.2
Een Kaggle-competitie winnen met Python

Model-blending

 

Test-ID Voorspelling model A Voorspelling model B Rekenkundig gemiddelde
1 1.2 1.5 1.35
2 0.1 0.4 0.25
3 5.4 7.2 6.30
Een Kaggle-competitie winnen met Python

Model-blending

 

Rekenkundig gemiddelde

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

Meetkundig gemiddelde

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

Een Kaggle-competitie winnen met Python

Model-stacking

 

  1. Splits trainingsdata in twee delen
  2. Train meerdere modellen op Deel 1
  3. Maak voorspellingen op Deel 2
  4. Maak voorspellingen op de testdata
  5. Train een nieuw model op Deel 2 met voorspellingen als features
  6. Voorspel met het 2e-niveaumodel op de testdata
Een Kaggle-competitie winnen met Python

Voorbeeld van stacking

Train-ID feature_1 ... feature_N Doel
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-ID's feature_1 ... feature_N Doel
11 0.49 ... -2.32 ?
12 0.32 ... 1.15 ?
13 0.91 ... 0.81 ?
Een Kaggle-competitie winnen met Python

Voorbeeld van stacking

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

 

Train-ID feature_1 ... feature_N Doel
4 0.10 ... 2.87 1
5 0.54 ... -0.10 0
Een Kaggle-competitie winnen met Python

Voorbeeld van stacking

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

 

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

Train modellen A, B, C op Deel 1

Een Kaggle-competitie winnen met Python

Voorbeeld van stacking

Train-ID feature_1 ... feature_N Doel 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-ID's feature_1 ... feature_N Doel 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
Een Kaggle-competitie winnen met Python

Voorbeeld van stacking

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

 

Test-ID's Doel 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
Een Kaggle-competitie winnen met Python

Voorbeeld van stacking

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

 

Test-ID's Doel 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

Train 2e-niveaumodel op Deel 2

Een Kaggle-competitie winnen met Python

Voorbeeld van stacking

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

 

Test-ID's Doel A_pred B_pred C_pred Stacking-voorspelling
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
Een Kaggle-competitie winnen met Python

Laten we oefenen!

Een Kaggle-competitie winnen met Python

Preparing Video For Download...