Målkodning

Vinna en Kaggle-tävling i Python

Yauhen Babakhin

Kaggle Grandmaster

Kategoriska särdrag med hög kardinalitet

 

  • Label encoder tilldelar ett unikt nummer per kategori
  • One-hot encoder skapar ett nytt särdrag per kategorivärde
  • Målkodning löser problemet!
Vinna en Kaggle-tävling i Python

Medelvärdesbaserad målkodning

Tränings-ID Kategorisk Mål
1 A 1
2 B 0
3 B 0
4 A 1
5 B 0
6 A 0
7 B 1
Test-ID Kategorisk Mål
10 A ?
11 A ?
12 B ?
13 A ?
Vinna en Kaggle-tävling i Python

Medelvärdesbaserad målkodning

 

  1. Beräkna medelvärde på träningsdata, tillämpa på testdata
  2. Dela träningsdata i K delar. Beräkna medelvärde på (K-1) delar, tillämpa på den K:te delen
  3. Lägg till det medelvärdeskodade särdraget i modellen
Vinna en Kaggle-tävling i Python

Beräkna medelvärde på träningsdata

Tränings-ID Kategorisk Mål
1 A 1
2 B 0
3 B 0
4 A 1
5 B 0
6 A 0
7 B 1
Vinna en Kaggle-tävling i Python

Beräkna medelvärde på träningsdata

Tränings-ID Kategorisk Mål
1 A 1
2 B 0
3 B 0
4 A 1
5 B 0
6 A 0
7 B 1
Vinna en Kaggle-tävling i Python

Beräkna medelvärde på träningsdata

Tränings-ID Kategorisk Mål
1 A 1
2 B 0
3 B 0
4 A 1
5 B 0
6 A 0
7 B 1
Vinna en Kaggle-tävling i Python

Testkodning

Test-ID Kategorisk Mål Medelvärdeskodat
10 A ? 0.66
11 A ? 0.66
12 B ? 0.25
13 A ? 0.66
Vinna en Kaggle-tävling i Python

Träningskodning med out-of-fold

Tränings-ID Kategorisk Mål Del
1 A 1 1
2 B 0 1
3 B 0 1
4 A 1 1
5 B 0 2
6 A 0 2
7 B 1 2
Vinna en Kaggle-tävling i Python

Träningskodning med out-of-fold

Tränings-ID Kategorisk Mål Del Medelvärdeskodat
1 A 1 1
2 B 0 1
3 B 0 1
4 A 1 1
5 B 0 2
6 A 0 2
7 B 1 2
Vinna en Kaggle-tävling i Python

Träningskodning med out-of-fold

Tränings-ID Kategorisk Mål Del Medelvärdeskodat
1 A 1 1 0
2 B 0 1 0.5
3 B 0 1 0.5
4 A 1 1 0
5 B 0 2
6 A 0 2
7 B 1 2
Vinna en Kaggle-tävling i Python

Träningskodning med out-of-fold

Tränings-ID Kategorisk Mål Del Medelvärdeskodat
1 A 1 1 0
2 B 0 1 0.5
3 B 0 1 0.5
4 A 1 1 0
5 B 0 2
6 A 0 2
7 B 1 2
Vinna en Kaggle-tävling i Python

Träningskodning med out-of-fold

Tränings-ID Kategorisk Mål Del Medelvärdeskodat
1 A 1 1 0
2 B 0 1 0.5
3 B 0 1 0.5
4 A 1 1 0
5 B 0 2 0
6 A 0 2 1
7 B 1 2 0
Vinna en Kaggle-tävling i Python

Praktiska riktlinjer

Vinna en Kaggle-tävling i Python

Praktiska riktlinjer

Utjämning

$$mean_enc_i = \frac{target_sum_i}{n_i}$$

$$smoothed_mean_enc_i = \frac{target_sum_i + \alpha*global_mean}{n_i + \alpha}$$

$$\alpha \in [5; 10]$$

Vinna en Kaggle-tävling i Python

Praktiska riktlinjer

Utjämning

$$mean_enc_i = \frac{target_sum_i}{n_i}$$

$$smoothed_mean_enc_i = \frac{target_sum_i + \alpha*global_mean}{n_i + \alpha}$$

$$\alpha \in [5; 10]$$

Nya kategorier

  • Fyll nya kategorier i testdata med ett global_mean
Vinna en Kaggle-tävling i Python

Praktiska riktlinjer

 

Tränings-ID Kategorisk Mål
1 A 1
2 B 0
3 B 0
4 A 0
5 B 1

 

Test-ID Kategorisk Mål Medelvärdeskodat
10 A ? 0.43
11 B ? 0.38
12 C ? 0.40
Vinna en Kaggle-tävling i Python

Nu kör vi en övning!

Vinna en Kaggle-tävling i Python

Preparing Video For Download...