時系列データ

機械学習による時系列予測:AutoMLによる多次元時系列予測への挑戦

  • ブログ

背景機械学習による時系列予測

世界最大のデータサイエンスコミュニティであるKaggleとニコシア大学は、世界最大の小売業者であるウォルマートが販売する何千もの商品の売り上げを予測する国際コンペを主催し、4カ月間にわたるコンペには世界中から5,500以上のチームが参加しました。課題は米国3州にあるウォルマート10店舗における3000種類の商品の日次売り上げを予測するというもので、利用可能なデータは、商品レベル、部門、商品カテゴリー、カレンダー、販売価格と店舗詳細です。

今回、「M5 Forecasting – Accuracy」で公開されているデータにdotDataのAI自動化を適用したところ、上位1.8%(5,500以上の参加チーム中102位)相当のスコアを得ることができました(注:dotDataがチームとしてコンペに参加したわけではなく、コンペ終了後に公開されたデータによる検証となります)できる限り自動的に実施するために、データの前処理はほとんど実施せず、作業そのものは、dotData社員が一人で1時間程度でした。このブログでは、dotDataプラットフォームによって、ビジネスアナリストや業務部門のメンバーのような市民データサイエンティストであっても、最小限の作業によって世界レベルのデータサイエンティストとも競い合えるレベルの結果を出せるということをお伝えします。

時系列予測の課題:超高次元時系列予測データ

需要予測、収益予測、売上予測といった時系列予測は多くのビジネスに共通する最も基本的な問題です。予測手法は多数ありますが(例:自己回帰モデルやARIMAモデル、長短期記憶ニューラルネットワーク(LSTM)など)、実世界の時系列予測問題は簡単なものではありません。

このコンペの課題はSKU(Stock Keeping Unit、最小在庫管理単位)レベルの商品需要を予測することで、これは小売業者が在庫管理を最適化するために非常に重要となります。データを扱う際に直面するいくつかの課題は次のとおりです。

  • 超高次元の時系列データを解析する必要がある(商品3000品目以上×10店舗で30000系列を超える時系列データ
  • 店舗・商品レベルの時系列データの多くはスパースでノイズが大きい
  • データは階層的な構造を持っており(州レベル – 店舗レベル – 商品カテゴリーレベル – 商品レベルなど)、時系列データのスケールと動きが多様である
  • 多くの商品の販売が断続的である(例:2011年に販売された商品が、販売休止後2013年に再度販売される)
  • 異なる商品が異なる期間に販売され、時系列データの期間が重複していない(例:2011年に販売開始した商品もあれば、2014年に販売開始した商品もある)
  • 標準的な時系列の分析手法では組み込むことが難しい多くの「外部要因」(例:キャンペーンフラグ)がある

コンペの期間は4カ月で、参加者はさまざまな前処理法やモデル化アルゴリズムを用いてモデルを最適化しました。図1は上位40%の参加者のスコア分布を示しています(スコアが1.0未満の場合)。

  • スコア分布は平均値=6.09、最頻値=5.39と非常に裾が長い
  • しかし、0.75あたりに高いピークがあり(約900チーム=5,500チームの16.3%)、トップパフォーマーの中でもスコアは広く分布している

経験豊富なデータサイエンスチームであっても、高い精度を出すことは難しく、参加者の技量によってスコアが大きくばらついていることが分かります。

時系列予測の課題
図1:トップ40%のスコア分布(スコア<1.0)

試行1回目:前処理をほぼ行わずトップ3%のスコアを獲得

dotDataを使用した試行1回目では各店舗用に合計10のモデルを構築しました。実施したステップは次のとおりです。

ステップ0(dotData Platform外の前処理):

  • 唯一実施した前処理はSales Transaction(売り上げ取引)データのDATEカラムを使い、年、月、週番号の列を追加してSelling Price(販売価格)データと結合できるようにしたこと(これはExcelのYEAR、MONTH、WEEKNUM関数を使って、数分で実行可能です)。

ステップ1(GUIで学習タスクを設定):

  • 「Sales」カラムをターゲット変数として選択
  • 訓練データと検証でータのデータ分割の基準を指定
  • テーブル間の時間ベースの関係を指定(Dateカラムのペアの指定など)。時間ベースの関係を設定することで、dotDataが自動的に時間特徴量を探索

ステップ2(店舗ごとに学習タスクを実行):

  • 設定した学習タスクを実行し、自動的にデータ前処理、特徴量設計、MLアルゴリズムチューニングを実行。店舗ごとに3~4時間の計算を要した(作業時間は数分程度)。
  • 特徴量とモデルが構築された後、最適なRMSEモデルを選択

ステップ3(予測タスクを実行しテストスコアを計算):

  • 予測タスクを実行し予測結果を得て、最終スコアを得る

dotDataで全10モデルの訓練と予測を完了するための計算に要した時間は約48時間でした。この初回実行の予測によって、コンペのトップ3%相当のスコアを得ることができました(5,500以上の参加チーム中170位)。与えられた課題の複雑さと、ドメインからの入力や試行錯誤なしで得られた結果であることを考えると、十分すぎる結果であると言えます。

モデルの分析

dotDataは標準的な設定を利用して、各店舗に対して、自動で100,000以上の特徴量を探索し、その統計的な有意性を検証して特徴量テーブルを生成しました。dotDataはそれらの特徴量を利用して、L1/L2 正則化回帰、回帰木、LightGBM、XGBoost、PyTorch、TensorFlowなどの、線形および非線形の機械学習アルゴリズムに対して、異なる組み合わせのハイパーパラメータを持つ500以上のモデルを生成しました。dotDataは時間的情報を時間特徴量にエンコードする様々な高度な手法に対応していて、MLアルゴリズムでそれらの時間特徴量の組み合わせを最適化して、最も高い予測精度を実現します。

あまり驚くことではありませんが、最も精度の高いモデルは、9モデル(9店舗)が XGBoost、1モデルがLightGBMでした(最終的にはすべてのモデルが勾配ブースティングアルゴリズムを選択したことになります)。図2は各モデルの訓練と検証スコアの比率を示しています。検証のMAEは訓練のMAEより1~2%劣るだけであることが分かります。RMSEに関する検証/訓練の比率はいくつかの店舗で高くなりましたが(3~5%)、これは売上の絶対値が大きかったためです。全体としてみると、dotDataで自動的に構築されたモデルの過学習はほとんどなく、よく一般化されています。

モデルの分析
図2:各モデル(店舗)の訓練と検証スコアの比率(パーセント)。(検証/訓練 -1)* 100

特徴量の分析

ご想像のとおり、ほとんどのKaggle参加者はXGBoost、LightGBMやNeural Networksを使用し、私たちも同じMLアルゴリズムを使用しました。では、なぜ、dotDataは初期段階からトップ3%相当のスコアを達成できたのでしょうか。それは、dotDataが多数の、高度な時間特徴量を設計したためです。

表1はdotDataが自動的に設計した時間特徴量の例を示しています。ご覧の通り、時間特徴量には異なる種類があります。面白いことに、これらの特徴量は、階層的パターンや周期パターンのような、データサイエンティストが作成する特徴量や、ARIMAモデル(自己回帰和分移動平均モデル)のような時系列分析手法が内部的に生成する特徴量に対応づけることができます。これらの特徴量を発見した裏側には、dotDataが各モデルに対して100,000以上の特徴量を探索したこともぜひ強調しておきたい点です。手動で行うとしたら、複雑なクエリや何百・何千行ものクエリやコードを書く必要があるます。さらに、意味のある特徴量を生成するには、そのドメインへの理解が必要です。

時間特徴量の例
表1:カリフォルニア州の店舗モデルで生成された時間特徴量の例

予測結果の分析

コンペの結果は2016年の28日間に対する予測で評価されました(テスト期間のデータは開示されないブラインドテスト)。図3は2016年のカルフォルニア州のある店舗(CA_2)における訓練期間の「実際の売り上げ」と、テスト期間(直近28日間)の「予測」の時系列プロットです。テスト期間の「実際の売り上げ」がないため、定量的な結果は議論できませんが時間経過に対するプロットが示すように、売り上げの傾向は予測によりかなり良く捉えられているといって差し支えないと思います。

予測結果の分析
図3:2016年の店舗CA_2における訓練期間およびテスト期間の売り上げ

試行2回目:アンサンブルモデルを使用して精度を最適化

トップ3%のスコアはそれだけでも満足のいく結果でしたが、私たちはこのトライアルをもう一歩進めてみました。対象データの階層的な性質(州レベル―店舗レベル―商品分類レベル―商品レベル)をモデルに入れることで、精度を改善できると考えました。階層の特定のレベルでモデルを構築すると、他のレベルよりもパフォーマンスが良い場合があるためです。

試行2回目の目標は、このような「階層的情報」を取り入れ、よりロバストで精度のよいモデルを作成することです。手順は非常に単純です。試行1回目と同じステップを使って、異なるレベルのモデルを構築します。

  • 全州向けに1モデル
  • 各州向けに3モデル
  • 各店舗に10モデル(施行1回目と同じ)
  • 各店舗の各カテゴリー(食品、趣味、家庭用品)に計30モデル(10店舗×3カテゴリー)

最終予測値は全4レベルの予測値の単純平均で、特別な後処理や最適化は実施していません。

図4はカルフォルニア州の1店舗(CA_2)における2016年の食品と家庭用品カテゴリーにおける訓練期間の「実際の売り上げ」とテスト期間(直近28日間)の「予測」を時系列でプロットしたものです。

時系列予測
図4:CA_2 店舗における2016年の食品、家庭用品の訓練期間およびテスト期間中の売り上げ

これによって、スコアは試行1回目の第170位から第102位(トップ1.8%)相当へと改善しました。また、試行2回目についても、前処理はカテゴリーごとのデータ分割(それもdotDataのGUI上で可能です)、後処理はスコアの単純平均のみで、ほぼ自動で実施できている点も重要なポイントです。ウォルマートの製品需要予測という非常に実用的な企業での使用例において、私たちの自動化手法が世界レベルのデータサイエンスチームと比較しても引けを取らない結果を出したことをとても嬉しく思っています。

まとめ

小売業者が予測を行うには、何カ月もかけて特徴量を構築し、モデル生成しながら予測を出す必要があります。今回の結果は、dotDataのデータサイエンスの自動化によって、多次元時系列予測を非常に効率的かつ高精度に解決する大きな可能性を示しています(トップ1.8%相当の予測結果を得るのにかかった時間は、約1時間の作業時間と約150時間の計算時間時間でした)。また、dotData外の作業も、Excelで可能な作業しかなく、dotDataの自動化によってデータサイエンスの専門知識がない「市民データサイエンティスト」も時系列予測に取り組むことができるようになり、企業における分析の民主化の起爆剤になれば幸いです。

dotData
dotData

dotData独自の技術である特徴量自動設計は、データサイエンスおよびAI開発工程の最も難しい部分である特徴量設計と事業適用化を自動化します。それにより、企業のAI・機械学習プロジェクトにかかる時間を短縮させ、より高いビジネス価値を生み出します。詳細はdotdata.com、Twitter、LinkedInからご確認いただけます。

dotDataのAIプラットフォーム

dotData Enterprise データサイエンスのプロセス全体を自動化

dotData Enterpriseは、事業部門やデータ分析部門が、ノーコードで予測AI開発を行うことができるAIプラットフォームです。特徴量自動設計と機械学習自動化(AutoML)によって、AIの専門知識やコーディングなしで、業務データから特徴量の抽出、そして機械学習による予測モデルの構築まで、ワンストップでAIを開発することができます。dotData Enterpriseを使用すると、通常は数か月かかる予測分析を、たった数日で実施でき、素早くビジネスでAIを活用でき、将来の予測やデータからの洞察が得られます。

dotData Feature Factory 特徴量をアセット化し全てのAI/BIを強化

dotData Feature Factoryは、データサイエンティストやIT部門が、企業がキュレーションされたデータ(すなわち特徴量)を開発するために、データ加工に関するノウハウを再利用可能なアセットとして蓄積する仕組みを提供します。データ中心に構築される特徴量空間から、アルゴリズムによってデータに隠れたパターン(特徴量)を発見し、特徴量発見のスピードと効率、再利用性と再現性、専門家間の連携、品質と透明性を向上させます。dotData Feature Factoryは、機械学習モデルによる予測、ビジネスインテリジェンス(BI)によるデータ可視化、或いはマーケティングオートメーションのような、全てのデータアプリケーションを強化します。