atma-inc__blog

atma株式会社の公式ブログです。

atmaCup#9 運営振り返り #atmaCup

みなさんこんばんは。atmaCup運営の nyk510 です。この記事では 2021/1/29~2/6にかけて開催しました atmaCup09 について運営サイドとして振り返っていければと思います。

www.guruguru.science

atmaCupとは

atmaCupとは、データ解析・アルゴリズムソリューション・システム開発を行うベンチャー企業atma株式会社( https://atma.co.jp )が主催するデータコンペティションです。

参加者が会場に集まり、準備されたデータをテーマに沿って分析・予測しその精度を競っていただくイベントです。現在はCOVID-19 感染拡大を防止する観点から、基本的にオンラインで分析していただき、会場を用意する際にも十分に考慮した形での開催を行っています。今回の atmaCup#9 も完全オンラインにて行いました。

多数の企業様に協賛いただきました。

コンペティションは、リテールAI研究会さまと共同開催であり、また多数の企業様に協賛をいただき開催の運びとなりました!

敬称略

データと課題の概要

atmaCup09ではトライアルさんの店舗で導入されているスマートショッピングカート(レジカートという愛称で呼ばれることもあります)のデータを使用しました。 スマートショッピングカートは、トライアルグループが開発をしたタブレットバーコードリーダを搭載したセルフレジ機能つきの買い物カートのことです。これによってお客様は商品をスキャンしながら買物をすすめることができます。

f:id:atma_inc:20210225183929p:plain
スマートショッピングカート概要

詳しく知りたい方は「トライアルのスマートショッピングカート、リテールAIカメラ https://www.trial-net.co.jp/cp/mediakit_ssc_aicamera/」や 「トライアルのAIは“店頭”で進化する https://www.trial-net.co.jp/cp/mediakit_ssc_aicamera/message.html」などご覧ください。

スマートショッピングカートは、お客さん目線で見た時、自分で買物を完結させられる点がとてもユニークなデバイスですが、データという観点でも、とてもユニークなデバイスです。

一般の会計レジで集められるデータは、何を・誰が・いつ会計したかという情報で、買物の順番や買い物途中の振る舞いについての情報を得ることはむずかしいです(POSや POSにユーザーが紐付いた ID-POS などが該当します)。

一方でカートではユーザーがその場で商品をスキャンしますから、どういう順番で買ったかという順番の情報がわかります。更には「商品を一度入れたけれどキャンセルをした」イベントや、カートではタブレット上にクーポン情報を表示し利用することができますので「買物と同時にどういうクーポンを閲覧したか」というイベントなど、会計には残らない情報を知ることが可能になります。

f:id:atma_inc:20210225180310p:plain
atmaCup#9 課題設計概要. 日付やユーザー + 特定の時刻までの行動(洋服の追加・クーポン閲覧)を元にしてその後の行動を予測する.

このカートのログデータをもとにして、買物の途中までの状態から、その後にそのユーザーが特定の商品を購入するかどうかの購買予測を行っていただきました。具体的には学習期間と定めた間では完全なるログデータをお渡しし、テスト期間のデータでは特定の時刻までの購買ログのみを渡して、その後特定のカテゴリを購入するのかをカテゴリごとに予測し、カテゴリごとの AUC 平均値 (MacroAUC) で評価します。

前回との違い

リテールAIさんとの前回のコンペ atmaCup#4 https://www.guruguru.science/competitions/9 では ID-POS データに対して同様の課題設定で取り組んでいただきました。こちらと比べると

  1. 厳密に時間がわかっているため、厳密にある時刻の買い物カゴ状態が再現できていること
  2. スマートショッピングカートならではの情報(購入順番・キャンセル・クーポンのイベント)が新しく追加されていること

の2点が大きな違いです。オンラインECならいざ知らず、リアル店舗で上記のような粒度のデータを得ることはスマートショッピングカートのようなデバイスがなければ不可能です。業務ではもちろん、コンペティションでもこの粒度のデータが公開されたことは世界をみても無いのではないでしょうか。大変貴重なデータを出していただいたトライアル様には大変感謝です 🙏

課題がとけると嬉しいこと

カートの状態からユーザーがかわなさそうなものがわかればユーザーごとに何を出せばいいかを判断する際の有益な情報になります。これらの情報を使うことでよりユーザーに気に入ってもらいやすいクーポンを表示するなど、ユーザーごとの体験を洗練させてより楽しく買物をしてもらうためのファーストステップとなります。

また予測に用いられている特徴重要度などを見ることで、どの商品を買いやすい場面は何と関係しているのかといった傾向をつかむことができます。これによって、例えば別の商品との併売傾向がわかったり、クーポンをみたときの影響度合いなどを定量的に判断することができ、新しい商品開発や売り場の配置を考える際の材料として使うことが可能です。今回は特にレジカート独自の情報がありますので、ID-POSの分析以上に踏み込んで関係性を議論できます。

コンペを振り返って

たいへん多数の方々に参加いただきました!

NDAを締結する必要があるハードルがあり、かつデータもレコード数が多く、自由度が高い難しい設定でしたが、合計で 268チーム ・ 2296回の submission をして頂けました!! 多数の方々に参加・コミット頂けたこと、とてもうれしく思います。ありがとうございました!!

f:id:atma_inc:20210225190414p:plain
#268 チーム・#2296 submissions !!

活発にディスカッションをしていただきました!

f:id:atma_inc:20210225175539p:plain
創意工夫が凝らされたEDAをたくさん上げていただきました!

今回は特にデータが完全なログデータであり、よくある教師ありの枠組みを作るのが難しいデータで難易度が高くディスカッションまでやっている余裕がない〜となるのではないかなと危惧していたのですが、多数の投稿でアイディアを共有していただきました。NDAの関係で中身のことが言えないのが残念ですが、協賛企業さんに絡んだ?購買データに関するEDAが多数あったり、純粋に読んでいてとても楽しい投稿ばかりでした。

コンペ終了後にも、多数の方に自分の取り組みをまとめて公開していただきました。運営としては、データをどういうふうに見たのかという部分もとても参考になりますし参加者さん同士の振り返りの機会としてもとても有意義であると思っていますので、このようにディスカッションを使っていただいて嬉しい限りです。

そんななか nyk510賞を取られたのは hakubishin3 さんでした!! おめでとうございます🎉 *1

f:id:atma_inc:20210225175631p:plain
nyk510賞はhakubishin3さんでした! いいね数二位もhakubishin3さんなので完全勝利という感じがします。

コンペ序盤にでたディスカッションで、データをパキっと加工するためのユーティリティクラスの作成を共有されたものでした。今回は過去に比べてとても自由度が高いデータでしたので、こちらのディスカッションのクラスを使って分析をされたかたも多くいらっしゃったのではないかと思います。こういう情報を出して頂けるのはみなさんハッピーになるので、とてもうれしいですね!

初心者向け講座を開催しました

atmaCup はデータ分析・コンペ初心者のかたの参加を歓迎していて、毎回左記の方々を対象として、初心者向け講座を開催しています。今回も nyk510 から初心者向け講座を2回に分けて開催しました。 講座#1は課題についての確認と submission の作成・#2では EDA とその情報を使った特徴量作成とその管理方法についてご紹介しました。

f:id:atma_inc:20210225181255p:plain
初心者向け講座もオンラインで開催です. 一人で家でしゃべるのにもだいぶ慣れてきました.

AzureML環境を提供しました。

「Azure使いたい枠!」として 8core32GB RAM相当のマシンが利用できる環境を提供しました。AzureMLは難しい設定を何もしなくても、セキュアな環境に jupyter notebook 環境を用意できる個人的にも推しのナイスなサービスです。Kagglerはじめとする機械学習勢は基本的にGCPを使われる方が多いと思うのですが、Azureもやれる娘であることが少しでも伝わったらよいなーと思います。*2

最終順位

最終順位は以下のようになりました! 優勝された pao さん、2nd nakama さん, 3rd senkin13 + lemming さんおめでとうございます🎉 (paoさんはなんとこれで通算3回めの優勝です、お強い…)

f:id:atma_inc:20210225175145p:plain
private leaderboard

終盤のデッドヒートはコンペサイト「ぐるぐる」の summary tab からも確認できますので、興味ある方はごらんください。 https://www.guruguru.science/competitions/14/summary

ソリューションをみていても、予測する対象ごとに細かくモデルを分けているチーム・MLPなどのNNモデルとのアンサンブルを行なうチーム・更には transformer を使ったチームなど、多種多様なアプローチがあったことが印象的でした。

また、チームごとの予測カテゴリごとの性能を比較しても特定のカテゴリは強いモデルがいたり、反対にまんべんなく良いスコアがでているモデルがあったりと、取り組みの多様さが出力の多様さにもつながっていて、参加者さんの創意工夫が遺憾なく発揮されていたコンペティションだったように感じています。

f:id:atma_inc:20210225182524p:plain
チームごとの予測対象カテゴリごとのスコア。カテゴリごとに正規化(z化)を施しています。バランス型チームと、特定カテゴリ特化型チームがある。

現在私の方で結果を調査中ではありますが、面白い傾向としてすべてのモデルが正解しているデータがある一方で、全員同じように間違えているデータがあったり、反対に一部モデルだけが当てられているデータがあったりすることもわかっています。これらのデータに対応する買物ログを注意深く見ることで、なぜモデルが外しているのかの気持ちを考えて、ユーザーの買物傾向を深く知るための道具にすることが出来ないか、などを考えています。

f:id:atma_inc:20210225182457p:plain
サンプルごとの予測値と正解ラベルの対応. 行がチームの予測値に、列がデータに対応する。色が高いほうが購入率が高いと予測したデータ.

アウトプットが多様なこともあって、上記以外にもたくさんの見方と分析の切り口があり、分析途中ですが私としても大変ワクワクしてます! 皆さん本当にありがとうございましたmm*3

振り返り会を開催しました

atmaCupでは、コンペ終了後にコンペ内容にかんしてあれこれとお話する振り返り会を毎回開催しており、今回も終了後2週間後に開催しました。

f:id:atma_inc:20210225175724p:plain
paoさん atmaCup#9 1st Place Solution

優勝された pao さんにはソリューションとコンペ中の取り組みについてのお話をしていただきました。コンペ会期中の気持ちやそのばその場で何をするかについての話はなかなか聞く機会がないですので、僕自身とても参考になりました。

f:id:atma_inc:20210225175757p:plain
takapyさん word2vecを利用した埋め込み分析とSWEMを用いた比較実験

またLT枠として、takapyさんに item2vec で商品を埋め込んで予測するときの手法ごとの性能の違いについてのお話をしていただきました。こちらもとても興味深い結果がでていて、聴講枠参加者さんからの質問もいくつもでて活発な議論になりました。

f:id:atma_inc:20210225175830p:plain
わいわいとお話している図

最後に

今回も皆さん多数参加いただきありがとうございました!

次回の atmaCup#10 も開催決定しております。こちらは初心者歓迎コンペとなっていて、#9同様に、データ分析に慣れていない方向けにデータの見方やモデルの作り方・submission作成までをフォローする初心者向けのセッションを開催予定です。今まで「コンペはハードル高いな」と思っていた方も気軽に参加いただければとてもうれしいです。

atma.connpass.com

それでは、次回の atmaCup でお会いしましょう🌟

*1:nyk510賞とは、コンペティション終了時点でもっともイイねを獲得したユーザーに与えられる賞です。僕からの「情報共有してくれてありがとう!」という気持ちが込められています ;)

*2:AzureMLの使い方的な記事はまた別途執筆予定です!

*3:今後これらをまとめて、価値あるアウトプットに繋げられるよう頑張っていきます!