ARISE Kaggle部活動記

Kaggle部

ARISE analyticsの長谷井です。ARISE Kaggle部の活動記へようこそ!

我々は世界的に知名度の高いKaggleを中心に、国内外の分析コンペティションへ参加し、上位ランクインを目指して頑張っています。今後Kaggle部の活動記を連載していきますので、どうぞよろしくお願いします。 Kaggle部は2020年9月現在、参加人数は約30名。業務に支障のない範囲で楽しく活動中です。 

今まで参加したコンペは下記の通りです。

  • M5 Forecasting – Accuracy @ Kaggle (398/5598 銅ランク) 
  • 対戦ゲームデータ分析甲子園 @prob.space(参加中)

今回は銅ランクになったM5 Forecasting – Accuracyで取り組んだ分析内容と苦労や工夫した点について説明します!

M5 Forecasting – Accuracy参戦(2020年6月~)

オンライン飲み会の際に、Kaggleで実績をつくっていきたい!と熱く語ったARISE社員が有志で5人集まり、コンペに参加することにしました。今回のメンバーは普段データ分析の仕事をしていますが、業務の繁忙期なども踏まえ、まずは今回のコンペでメダルを受賞するという目標を立てました。

役割分担・サブミットの管理・MTG等のコミュニケーション方法に工夫を加え、無事にコンペを最後まで諦めずにやりきりました。今回の結果は5598人中398位で銅ランク(メダル)となり、今後のKaggle参戦に役立つヒントをたくさん得られました。

M5コンペ概要とデータ構造 

今回のミッションは世界最大小売Walmartにおける売上個数予測でした。M5コンペの概要は以下の通り。 

上記に掲載されているロゴは、商標または登録商標です。 

以下の図では月別の売上データです。青い部分が与えられている過去の売上データで、オレンジの部分が予測をする断面です。 

州別の売上データです。カリフォルニアが突出して高くなっています。 

まずは与えられたデータの構造を理解するため、ディスカッションボードにある情報をひたすら読み込み、データの情報を整理するというところからはじめました。以下はその一部の抜粋です。

コンペにおける試行錯誤 

頻繁に発生する欠損値 

継続的に売れている商品でも、在庫切れなどが原因で売り上げが0になっている商品があり、欠損値の状態でモデルに組み込んだ場合、予測に無意味な周期性などが生まれてしまい、問題となっていました。欠損値補完のために4つの補完手法を比較した結果、テストデータのスコアが一番改善される指数平滑法を採用しました。 

特殊な評価関数に対するモデル選定 

今回の評価指標はWRMSSEというかなり特殊なもので、モデリングによる最適化が困難でした。どのようなモデルを使えば、アウトプットの最適化をうまく行えるか、決めるために試行錯誤が必要でした。

モデル選定については、各時系列の探索は、スペックや時間に制限があり困難なため、初期変数のみを用いたベースモデルの作成で当てはまりの良いLightGBMを採用しました。 

マシンスペックの制限 

Kaggle Notebookは無料でGPU環境が使えますが、Kaggleで戦うには心もとなく、モデルが回せないときもしばしばあり、int64をint8型に変換する等の工夫でなんとか処理コストの短縮を図りました。

その結果、今回のコンペはKaggle NotebookやGCPの無料枠(2020/6時点)を活用し、モデリングを行うことができました。以下はそれぞれの環境の比較表となります。反省としてはやはり、高スペック環境の準備がコンペで戦うために必要だと気づかされました。 

サブミットモデルの概要 

最終的にサブミットに利用したモデルはLight GBMとなりました。

今回の取り組みで工夫したこと 

業務との兼ね合い 

メンバーは部門横断で集まっているため、お互い別々のプロジェクトを担当しており、繁忙期などにはあまり貢献できない人もいました。そのため、毎回進捗を共有する人を決めて週に1度のリモート会議を実施しました。お互いの分析内容を共有し、チームで効率的に進められるよう工夫しました。 

チームビルディングやコミュニケーション 

参加メンバーはそれぞれ違ったレベルのモチベーションや時間的余裕をもって分析コンペに取り組んでいるので、目的意識の統一と情報共有がとても重要です。今回は初めての本格的なKaggle参加ということで、まずはメダル受賞を目標としていました。コミュニケーションとしては、リモート会議の他、Slackで逐一情報を共有し、コードやサブミットファイルのバージョン管理と分析知見の認識合わせをしていました。 

おわりに

今回は銅メダル受賞となりましたが、これからもっと効率的に・スピーディにKaggleに取り組めるヒントをたくさん得られました。今後はもっと強力な分析基盤をKaggle部として用意し、様々な分析コンペに参加予定です。  

分析はチームワークです。1人でもできるかもしれませんが、役割を決め、お互いの強みを持ち合う事でより効率に分析課題に取り組めます!我々と一緒にKaggle部を盛り上げてくださる方はこちらのページからご連絡お待ちしております!