[PYTHON] Juillet, un certain, M5 ~ Histoire d'échec de la compétition de données de séries chronologiques pour débutants Kaggle ~

Si je pouvais obtenir la 27e place de ma vie, M5 m'a sauvé. La 27e place est différente car le format est différent ... [Chanson originale Yorushika / August, certain, moonlight](https://music.apple.com/jp/album/%E5%85%AB%E6%9C%88-%E6%9F%90-%E6% 9C% 88% E6% 98% 8E% E3% 81% 8B% E3% 82% 8A / 1455955689? I = 1455955692)

introduction

Nous avons participé au concours Kaggle M5 Forecasting Accuracy qui s'est tenu de mars à juin 2020. J'ai soumis un modèle équivalent à 27e place (top 0.4%) </ font>. J'ai fait une erreur dans le format et il est devenu le plus bas </ font>, donc je pleure la solution. Si vous me connaissez la prochaine fois, veuillez me traiter comme une somme réconfortante. Maintenant, appréciez l'histoire de la façon dont nous sommes tombés dans ** l'enfer **.

Aperçu de la compétition

Prévisions Kaggle M5: Concours de prévisions de ventes Walmart (supermarché) Prévision des ventes (volume des ventes) pour chaque produit (3049 types) dans le futur 28 jours à partir des données de ventes des 1913 derniers jours. Les magasins cibles sont 10 magasins en Californie, au Texas et au Wisconsin. スクリーンショット 2020-07-07 21.53.42.png Compte tenu des données -Ventes passées (par ID, par magasin, par article, etc.) -Transition de prix, -Calendrier (vacances, etc.) L'indice d'évaluation est essentiellement RMSE (c'était un peu technique WRMSSE, mais cette fois il est omis)

modèle

Créez des LGBM pour chaque magasin et chaque date de prévision (voir la figure ci-dessous)

  • Fondamentalement, la prédiction de séries chronologiques est une tâche très difficile, donc la plupart de mes ressources ont été consacrées à la création de modèles. Je suis vraiment reconnaissant que mes coéquipiers aient créé les fonctionnalités et construit le modèle de base. スクリーンショット 2020-07-07 20.45.15.png

politique

La prédiction des données de séries temporelles ne convient pas à l'apprentissage automatique (référence), donc au début c'était un modèle statistique J'ai essayé LSTM. Cela n'a pas fonctionné pour une raison quelconque. Par conséquent, le LGBM a été créé pour chaque région et chaque date de prévision afin que la dynamique qui contrôle les données soit la plus uniforme possible.

-Raison de choisir LGBM Je pense que les modèles créés pour la prédiction de séries chronologiques, tels que les modèles statistiques et les LSTM, apprennent essentiellement de grandes dynamiques. Mais ce que je veux prédire cette fois, c'est chaque produit, c'est-à-dire une petite dynamique. Par exemple, même si le mouvement de l'ensemble des Japonais peut être prédit, il est difficile de prédire l'individu (je pense que les Japonais aiment les ramen, mais je ne sais pas si vous aimez les ramen. , J'aime les nouilles Tantan). Par conséquent, j'ai décidé de demander LGBM, qui a une grande expressivité.

Raisons de créer un modèle pour chaque magasin

Quand j'ai visualisé la transition commerciale de chaque magasin en me référant à EDA notebook, j'ai remarqué que le mouvement était assez différent pour chaque magasin. .. スクリーンショット 2020-07-07 20.44.55.png

De plus, lors du regroupement à l'aide de l'UMAP, FOODS avait presque la même distribution, tandis que HOBBBIES présentait des différences régionales remarquables. umap_f_cat.png De ces résultats, nous avons décidé de séparer les modèles car il y en a certains qui se vendent et d'autres qui ne se vendent pas pour chaque magasin, et les dynamiques qui les régissent sont différentes. Les États de Californie, du Texas et du Wisconsin, où se trouvent les magasins, sont géographiquement séparés les uns des autres, et j'ai pensé qu'il était raisonnable qu'ils se vendent différemment.

Raisons attendues quotidiennement

Si un modèle récursif est meilleur ou une prédiction quotidienne est meilleure, comme cela est fait dans Discussion C'était un point important. Nous avons simplement choisi un chemin sûr qui ne manque pas grand chose. Lors de la création d'un modèle de récurrence, le décalage1 était négatif lorsque l'on examinait l'importance de la permutation.

Ingénierie caractéristique

Fonctionnalités de base (moyenne mobile, max / min pendant une certaine période, etc.) ** ・ Le nombre de jours qui se sont écoulés depuis que le prix du produit a augmenté ou diminué ** ** ・ Le jour où les ventes ont été enregistrées pour la première fois ** Les données antérieures n'étaient pas incluses dans la formation. ** ・ TS commandé ** C'est comme un encodage cible sans fuite pour les données de séries chronologiques ** - Ventes maximum et minimum pour une période donnée et nombre de jours écoulés depuis l'enregistrement de l'enregistrement ** J'ai fait cela parce que je voulais enseigner au modèle d'apprentissage le concept du temps. ** - Ratio de 0 à 10 dans les ventes passées ** Je l'ai créé pour exprimer la distribution de probabilité des ventes à ce moment-là. De plus, si les ventes sont nulles, est-ce en rupture de stock? Je l'ai présenté parce qu'il est apparu soudainement, j'ai donc pensé qu'il était nécessaire d'inclure des statistiques liées à 0.

Ce à quoi je pensais lors de la création du montant de la fonctionnalité

J'ai essayé de mettre une fonctionnalité statistiquement significative en plus ・ Coéquipiers: si vous savez ce qui est lié à votre motivation d'achat, vous devez connaître les ventes. ・ Écrivain: choses liées au temps pour donner des informations que les LGBM ne connaissent pas J'y pensais. En fait, j'ai essayé diverses choses telles que le traitement du bruit, la complexité de la forme d'onde et les fonctionnalités dans l'espace de Fourier, mais il n'y en avait pas beaucoup qui étaient assez efficaces.

Politique CV

Nous avons utilisé les données des 3 derniers mois. J'ai pris soin de ne pas adopter ceux avec un CV partiellement amélioré, mais de le rendre robuste. Je ne comptais ni sur la magie noire ni sur le classement public car je soupçonnais une sur-conformité.

Slack avant de soumettre

Je ris parce que je n'ai pas travaillé trop dur Coéquipier 21h10 J'ai demandé une confirmation Iwamo 21:10 ** Ça a l'air bien ** </ font>

Et la mort

スクリーンショット 2020-07-07 21.37.39.png Comme mentionné ci-dessus, il était au même rang que la personne qui n'a pas soumis une partie du format de soumission par erreur, c'est-à-dire le plus bas ...

Ligne mondiale qui aurait pu être

Je posterai le score du modèle original car il n'est pas qualifié. スクリーンショット 2020-07-01 19.57.28.png

finalement

Je suis désolé pour mes coéquipiers. C'était confirmé à la fin ... En fait, j'apprends le kaggle depuis environ six mois pour la première fois, mais je pense avoir beaucoup appris. Je suis vraiment déçu, mais je continuerai à faire de mon mieux.