4. Les données à disposition
4
Train :
1 700 000 lignes représentant des zones de textes
33 labels à prédire (data, adresse, champs libres, nom, etc.)
145 features : float, int, catégorielles hachées avec nombreuses modalitées
(> 200 000)
Test :
540 000 lignes
540 000 * 33 = 17 000 000 millions de prédictions
7. Online learning
7
● Descente de gradient stochastique
● Learning rate adaptatif :
● Hashing trick
● Gros avantage : passage à l’échelle (20min, <400MB)
● Problème : modèle linéaire, ne capte pas les
interactions entre les variables
http://www.kaggle.com/c/tradeshift-text-classification/forums/t/10537/beat-the-benchmark-with-less-than-400mb-of-memory
8. Online learning - ajout non linéarité
8
● Random Forest (librairie sklearn)
rf.fit(X,y) rf.apply(X)
id tree_1 tree_2
0 3 7
1 2 3
2 4 6
3 4 8
4 3 4
Xinran He, Junfeng Pan, Ou Jin, Tianbing Xu, Bo Liu, Tao Xu, Yanxin Shi, Antoine Atallah, Ralf Herbrich, Stuart Bowers and Joaquin
Quinonero Candela, Practical Lessons from Predicting Clicks on Ads at Facebook, ADKDD'14.
id x1 ... x145
0 3.7 ... 204
1 -5.0 ... 4
2 12 ... 35
3 0.1 ... 83
4 -2.3 ... 56
9. Online learning - problème
9
Le script construit 33 modèles disjoints alors que les labels
à prédire ne sont pas indépendants
Exemple : quand y33 == 1 alors y1,...,y32 == 0
10. 10
● Séparation du dataset en deux :
● Apprentissage de 33 modèles sur X_base
● P = prédictions de ces modèles sur X_meta
● Concaténation de P et X_meta et
apprentissage du meta modèle :
X_base
X_meta
P X_meta
Two-stage learning
12. Un peu différent de sklearn
12
[Label] [Importance [Tag]]|Namespace Features |Namespace
Features ... |Namespace Features
rf.fit(X_train, y_train)
Focus sur une dizaine de labels seulement