[PYTHON] Résumé Kaggle: BOSCH (gagnant)

introduction

Nous mettrons à jour les informations de Kaggle qui a participé dans le passé. Ici, nous résumerons les informations publiées par les supérieurs de BOSCH. Pour les grandes lignes de la compétition et du noyau, Kaggle Summary: BOSCH (intro + forum discussion), [Kaggle Summary: BOSCH (kernels)](http: // qiita Il est résumé dans .com / TomHortons / items / 359f8e39b9cd424c2360), et nous nous concentrons ici sur les discussions sur les résultats et les techniques d'analyse.

logo

Cet article utilise Python 2.7, numpy 1.11, scipy 0.17, scikit-learn 0.18, matplotlib 1.5, seaborn 0.7, pandas 0.17. Il a été confirmé qu'il fonctionne sur le notebook jupyter. (Veuillez modifier correctement% matplotlib inline)

1st place solution Beluga décrit l'approche. Cette fois, les données brutes ne contenaient pas une quantité suffisante d'informations, il semble donc qu'une génération de quantité de caractéristiques assez approfondie a été effectuée sur la base des informations de date. (Utilisez xgboost comme critère) De plus, l'apprentissage d'ensemble utilise jusqu'à L3. Le Deep Learning n'a pas fonctionné, probablement à cause d'un surapprentissage, et il semble que je n'ai pas utilisé le ExtraTreeRegressor fréquemment utilisé après tout. C'était une compétition où XGBoost a joué un rôle actif du début à la fin.

Cette fois-ci, le concours portait sur la façon de générer de nouvelles quantités de caractéristiques à partir des trois conditions de transition d'état entre les stations, de la corrélation entre les données des stations et des horodatages anonymes. Certes, les données elles-mêmes sont volumineuses, mais j'estime qu'avoir un grand environnement informatique n'est pas essentiel.

L'analyse des données

Screen Shot 2016-11-21 at 2.02.33.png

Tout d'abord, nous passerons deux semaines à examiner les données. Grâce au traçage des données numériques, à l'analyse statistique, à la transition de probabilité entre les stations et à la matrice de corrélation de chaque station, nous obtiendrons une image globale des données anonymisées. StationFeaturSimilarity.png

La mémoire peut fonctionner avec un 16 Go normal, mais cela nécessite un certain effort. Le point décimal est de type int en le multipliant par une valeur numérique en fonction du nombre après le point décimal. Les informations de date sont la valeur minimale pour chaque station. La valeur manquante elle-même fonctionne comme une quantité de caractéristiques.

Génération de fonctionnalités

Screen Shot 2016-11-21 at 2.07.50.png

J'ai utilisé les fonctionnalités de Magic. Ash a remarqué que les lignes consécutives contenaient des fonctionnalités en double et correspondant à la réponse. Par conséquent, nous avons généré des quantités de fonctionnalités en se concentrant sur l'ordre de l'identifiant de StartStation et StartTime. Pour plus de détails, reportez-vous à Kaggle Summary: BOSCH (kernels).

Screen Shot 2016-11-21 at 2.10.33.png

En examinant le coefficient d'autocorrélation, comme dans les noyaux, nous avons constaté que 0,01 temps équivaut à 6 minutes. En d'autres termes, nous analysons les données de fabrication pendant deux ans. Ce fait n'a pas directement contribué à l'amélioration de la précision, mais il a aidé à générer certaines fonctionnalités basées sur la date.

Je n'ai pas été en mesure d'exploiter pleinement les informations de date moi-même, mais pour autant que je sache, cela semble très utile. Quand je pense aux informations telles que la différence, le décompte des valeurs non manquantes / valeurs manquantes, et le début et la fin de la semaine, je pense que cela devrait affecter l'apparition de produits défectueux.

Screen Shot 2016-11-21 at 2.11.05.png

Les informations numériques utilisées sont les suivantes

La figure ci-dessous est Graphe dirigé écrit en utilisant R. En résumant la relation entre l'horodatage et la valeur non manquante, nous pouvons voir le flux de la ligne de production vers le produit défectueux. Je pense que le point était de savoir si ce flux pouvait ou non être utilisé avec succès pour la génération de quantité d'entités. __results___1_6.png Il y avait une similitude notable dans la matrice de transition de probabilité de S0 --S11, S12 --S23. À ces stations similaires, nous pouvons voir la corrélation des données numériques. Par conséquent, nous avons combiné les caractéristiques de chacun. (par exemple L0_S0_F0 + L0_S12_F330 etc.)

Ce serait bien si les données brutes pouvaient être utilisées telles quelles, mais je pense que ce serait difficile pour un PC normal. Cependant, il semble que cette zone puisse être considérablement gérée en ajoutant des traitements tels que la sélection de quantités de caractéristiques actives dans la prédiction XGBoost et la suppression des données en double. De plus, ce n'était pas un peu que l'ajout, la soustraction et l'intégration de données avec des corrélations contribuaient à améliorer la précision. L'échelle Z a tendance à traiter tous les échantillons à la fois, mais est-il possible d'exprimer «l'anomalie en une semaine» en le faisant chaque semaine? C'est très intéressant.

Screen Shot 2016-11-21 at 2.11.44.png

Il semble que le gagnant n'ait pas non plus utilisé les informations sur la catégorie. Cependant, il semble que les informations uniquement pour les stations [24, 25, 26, 27, 28, 29, 32, 44, 47] ont été utilisées en se concentrant uniquement sur le fait de savoir s'il s'agissait de "T1" ou non. Si la divulgation d'informations du côté BOSCH était solide pour les données de catégorie, elle aurait peut-être été un peu plus utilisée.

Évaluation, ajustement de l'équilibre, résultats

Screen Shot 2016-11-21 at 2.12.11.png

Nous avons commencé avec une validation croisée à 5 fois et finalement nous nous sommes installés à 4 fois. La couche 1 de l'apprentissage d'ensemble a été apprise à l'aide de trois graines différentes. Les duplications et les omissions entre les données ont été utilisées telles quelles sans être compressées. Au lieu de cela, un sous-échantillonnage de 50% à 90% a réduit les coûts de calcul. L'historique de l'amélioration de la précision est le suivant.

results.png

Autres commentaires

À propos de l'ensemble utilisé Il semble qu'il ait essayé d'incorporer ExtraTreesRegressor, mais il a opté pour un ensemble n'utilisant que plusieurs XGBoosts avec des paramètres différents. Un exemple des paramètres est le suivant.

early_stopping alpha booster colsample_bytree min_child_weight subsample eta objective max_depth lambda
auc 0 gbtree 0.6 5 0.9 0.03 binary:logistic 14 4

Parmi eux, eta représente la largeur de réduction de la taille de pas, et en réduisant cela, les performances de renforcement sont améliorées. Cependant, cette fois, c'était une situation étrange que même si eta était réduit, cela ne contribuait pas à l'amélioration de la précision.

Screen Shot 2016-11-21 at 4.09.53.png

Enfin, Ash résume l'ensemble détaillé. Comme je l'ai expliqué plus tôt, je vais le laisser couler ici.

Recommended Posts

Résumé Kaggle: BOSCH (gagnant)
Résumé de Kaggle: BOSCH (noyaux)
Résumé de Kaggle: BOSCH (intro + discussion du forum)
Résumé de Kaggle: Outbrain # 2
Résumé de Kaggle: Outbrain # 1
Résumé lié à Kaggle
Résumé de Kaggle: Redhat (Partie 1)
Résumé de Kaggle: Redhat (partie 2)
Résumé de la méthode du noyau de Kaggle [Image]
Résumé de Kaggle: Analyse du panier de marché Instacart
[Enquête] Kaggle - Résumé de la solution Quora 3e place
[Enquête] Kaggle - Résumé de la solution Quora 5e place
[Enquête] Kaggle - Résumé de la solution Quora 4e place
[Enquête] Kaggle - Récapitulatif de la solution Quora 2nd place