見出し画像

NTech Predictが挑戦したKaggleの「M5 Forecasting – Accuracy」③


■はじめに


記事は3回に分けての報告になります。
1回目 Kaggleのコンペ「M5 Forecasting – Accuracy」について
2回目 NTech Predictでどうやって結果を出していったか?の経過
3回目 NTech Predictでやったらどうなったのか?「最終結果」までの経過
今回は3回目(最終回)になります。

NTech Predictでやったらどうなったのか?「最終結果」までの経過


今回は多変量データ予測モデルを作る方向で検証してみました。
NTech Predictは単変量時系列予測ですが特定の条件下では多変量データ予測モデルを生成可能です。特定の条件は以下の3点です。

  1. 説明変数になりえる列が一つ以上あること。
    これは予測したい波形のみのデータが複数ある多変量データではないこと。

  2. 予測すべき部分の説明変数が正しく埋まっていること。

  3. 縦形式のテーブルデータであること。

具体的に表すと以下のようになります。

横形式(個別に予測モデルを生成)
多変量として扱う場合は条件3がNG

それぞれ個別に予測モデルを生成できます。自動特徴量エンジニアリングが活用されます。

横形式(説明変数あり)(個別に予測モデルを生成)
多変量として扱う場合は条件2と3がNG

この場合も個別に予測モデルを生成で自動特徴量エンジニアリングが活用されます。
ただし、説明変数が埋まっていないためNTech Predictは過去の情報を参照してあり得そうな説明変数を自動的に埋めます。何通りものパターンを計算するためシミュレーションに使うことができます。

望ましい形式は説明変数が埋まっている形式になります。

横形式(説明変数あり)(個別に予測モデルを生成)
多変量として扱う場合は条件3がNG

どの形式でも計算は可能ですが前回の記事に書いたように単変量として予測モデルが作成されます。この場合も自動特徴量エンジニアリングが活用されます。
この例の場合はGUIで3回計算が必要になります。一方、今回実施しているコンペでは30490系列もあるためGUIで行うのはもはや不可能です。その場合はAPIを直接使う形でバッチ処理を行うことになります。

前回の記事で書いたように多変量データを単変量で行うのには個々の変量(目的変数)間の関係性がまったく無視されるのと説明変数からの寄与による影響が無視されてしまうため多変量として扱うことが望ましいということになります。ということでこの横形式のデータを縦形式に変換しておく必要があります。

縦形式
多変量として扱える

こうすることでNTech Predictでも多変量データが扱えるようになります。ただし、自動特徴量エンジニアリングが一部制限されます。
 
そのため以下の簡単な特徴量だけ追加させて頂きました。
(1)過去28日の販売個数、過去28日間の販売個数平均と標準偏差
(2)過去60日の販売個数、過去60日間の販売個数平均と標準偏差
 
結果は以下のようになりました。

score

計算時間は21時間でした。
 
NTech Predictのver2(正式リリースはver2.1)から精度優先(速度改善)、通常(バランス)というオプションを追加しました。そこで精度優先(速度改善)オプションをONにして計算した結果は以下の様になりました。

score
score

この結果概ね銀メダル相当の成績でした。各内訳は以下の通りです。

  • 金メダル:1位~21位

  • 銀メダル:22位~277位

  • 銅メダル:278位~555位

また、1位~5位の猛者には賞金が付与されました。

  • 1st Place - $25,000

  • 2nd Place - $10,000

  • 3rd Place - $5,000

  • 4th Place - $3,000

  • 5th Place - $2,000

参考までに1位の「YeonJun IN_STUさん」のスコアは0.52043でした。
計算に使ったモデルはRecursive Featureを使ったモデルとのアンサンブルモデルを使ったらしいです。ちなみにNTech Predictでは単変量ではRecursive Featureモデルですが多変量ではRecursive Featureは使いません。

■Top1.56%の成績というのはどんな意味があるのか?

“M5 accuracy competition: Results, findings, and conclusions”
https://www.sciencedirect.com/science/article/pii/S0169207021001874
によれば参加チームの約92.5%がES_bu(Exponential Smoothing bottom-up:指数平滑法モデルの一種)に勝てなかったと報告しています。

ES_bu を上回る成績を収めることができなかったチームの多くが途中で放棄し、その結果、最初の提出物が改善されなかった可能性があるとしています。そういう中で非常に良い結果を残せたのは限られたチームだけだったと推測しています。

また、コンペで準備されたベンチマーク(ES_bu等)の精度を超えることができたのは上位415チームでベンチマークより10%以上の精度を達成したのは上位106チーム、ベンチマークより20%以上の精度を達成したのは僅か上位5チームだけだった報告しています。
 
つまり想像以上に難しい課題だったと言えます。
特筆すべきは1563 名の参加者が初Kaggle参加でなんとそのうち 15 名がトップ 100 に入ったことです。これはこのコンペの知名度と挑戦精神が掻き立てられる課題だったとも言えます。また日本人の参加は米国に次いで多く全体の17%が日本チームだったことも興味深い結果だったと言えます。

■結果まとめ

NTech Predictでも整形を除けば完全自動でKaggleのコンペ「M5 Forecasting – Accuracy」でTop1.56%の成績が出せる能力があることが分かりました。

さらなる改善で便利になった製品をリリースする日をお待ちください。

■振り返り

NTech Predictの開発構想は2018年頃で当初想定していた機能がなんとか全て揃ったNTech Predictの最初のバージョンは2022年夏にリリースしました。特に最新バージョン(これからリリースする予定)で多変量時系列予測が正式に可能になるまでにはなかなか大変だった記憶があります。

時系列予測の機能は単変量限定だったので多くの商品販売量を対象にする場合や複数の地域に関わるデータに関して予測モデルを生成するには無理が生じます。そして多変量時系列予測が可能と言えるには最低でも消化したいデータがこの記事でも扱った「M5 Forecasting – Accuracy」になります。
先に投稿したNTech Predictが挑戦したKaggleの「M5 Forecasting – Accuracy」①、②を読んで頂けるとこの辺りの経緯は分かると思います。

単にデータサイエンティストが特定の問題向けに予測モデルを作るというのであれば最高性能の予測モデルは頑張れば構築可能な場合がありますが他の問題に対しても全く同じやり方でできるかと言えば多くの場合そうではありません。

NTech Predictはまったくデータを想定していない、つまりどんなデータが入力されるのかを前提にはできないため内部ロジックは当然ですが特定のデータを対象にせず信頼できるモデルが容易に生成できる事が条件になります。それがTop30%以内という目標でした。

突破口が無いまま時間が経ち2023年5月に家族がUSJに行きたいというので連れて行きましたが私の体調が良くなかったこともあってホテルで持ち込んだPCで突破口を探すという今考えるととっても寂しいことをしていました。
何度かロービーの隅にある喫煙所に行ったんですが「俺、なにやってんだろう」と思いつつ部屋に戻って考えてはプログラムを作って試すということをやってました。その時に思いついて得たのが精度優先(速度改善)、通常(バランス)というオプション(パラメータセット)等の原型と幾つかの機能でした。

その時の私の最高scoreは0.57637、Top0.95%でした。あくまで特定の問題向けに予測モデルを作るという作業のためこのスクリプトはNTech Predictでは役には立ちません。しかし、その時に得たアイデアを元にした追加仕様を開発メンバーに伝えて実装し、検証してもらいました。特に開発メンバーはそれをさらに磨きをかけてくれました。その結果が本記事の内容になります。そしてTop30%以内という目標をクリアして驚きのTop2%以内に入るという結果を出してくれました。この時は安堵と目標達成という達成感があったのは忘れられない出来事だったと思います。

さらなる改善で便利になった製品をリリースする日をお待ちください。

■謝辞

NTech Predictが挑戦したKaggleの「M5 Forecasting – Accuracy」①②③を見て頂けた方、ありがとう御座います。

NTech Predictをご利用して頂いているユーザー様、様々な観点から課題をご指摘いただきありがとう御座いました。NTech Predictをリリースしたのは2022年8月ですが様々なご意見を頂き可能な限りご満足いただける機能・性能を目指してきたおかげでバージョン2をリリースできたのはユーザー様のご意見があったことがとても大きいと感じています。

記事を寄稿するにあたり様々な観点からご指導ご指摘して頂いた
OpeN.lab、NTechブログの運営チームの皆様、ありがとうございました。

またNTech Predict開発チームは厳しいスケジュールと要求仕様を黙々と開発して頂いたことに感謝します。
その他多くのご協力者の皆様ありがとうございました。
そして猛暑の中NTech Predictを持って営業して頂いた営業部の皆さんありがとう!!

そうらしい、、、


この記事が気に入ったらサポートをしてみませんか?