今回は、筆者がKaggleで準優勝した「Instacart Market Basket Analysis」というコンペについて話します。食料品の配達サービスを提供するInstacartのデータを活用して、ユーザーが次に購入する商品を予測するというものです。このコンペは2017年5月16日~8月14日の3カ月にわたって開催されました。
Instacartという企業について
Instacartはオンラインで商品(食料品)を注文すると、最短1時間で自宅に配達してくれるサービスを提供している米国の企業です。こう書くとネットスーパーのように聞こえますが、正確に言えば買い物代行サービスであって、Instacart自身は在庫を持っていません。フードデリバリサービスのUber Eatsなどと同じように、ユーザーの代わりに買い物に行って、まとめて届けてくれるのです。
実際、コンペに参加したKagglerの大半は同社を大手ネットスーパーだと思っていたようで、今でもそう思っている人はたくさんいると思います。コンペでは企業の情報を詳しく教えてもらえないので、詳細な情報を得たかったら自分で調べる必要があります。
Kaggleに提示された問題について
提示された問題は前述の通り、各ユーザーが次回のページ訪問でどの商品を再購入するかを予測するというものです。
ECサイトなどにおけるレコメンド機能のロジックを考える場合、購買履歴や行動履歴がない新商品や新規ユーザーに対する予測モデルの構築については、とても難易度が高くなります。今回のコンペ課題では、既存ユーザーの再購入を予測すればいいので、機械学習で解きやすい問題でした。
Instacartの狙いは、ユーザーが快適に買い物できるように、目的の商品へたどり着くまでの時間を節約したいというものでした。そもそも時短を目的としたサービスなので、自分で買いに行った方が早いという状況では利用者が増えません。また、対象商品はスーパーに置いてある食料品であり、再購入での利用が大半を占めます。つまり同社のビジネスにとって重要な課題であり、かつ機械学習で解きやすいものなので、非常にうまい問題設計だったと思います。
与えられたデータについて
これまで誰が何を購入したかを記録したログデータが提供されます。購入した時間や曜日が分かるため、例えば、朝と夜や1週間の中で、どういった商品の売れ行きが良いのかが簡単に分かります。