u++の備忘録

国際会議「ACM WSDM」のワークショップ「Booking.com Data Challenge」で6位に

国際会議「ACM WSDM」のワークショップとして開催されていた「Booking.com Data Challenge」*1で6位に入りました*2Wantedlyhakubishin3 さんYuya Matsumura さん とのチームで、解法をまとめた論文は同ワークショップに採択・公開されました*3。同ワークショップは日本時間12日夜に開催され、主催者や上位チームがプレゼンテーションを実施します。

f:id:upura:20210312064818p:plain

図は *2 より引用。

コンペ概要

世界最大規模の旅行代理店サイト「Booking.com」が主催で、たとえば「A->B->C」の旅程のユーザが、次にどこに行くか当てるという課題でした。このタスクが解けると、ユーザが旅行を予約した際に即座に「合わせて○○にも行ってみてはいかがですか?」といった推薦が実現できると説明されていました。

データセットとしては、以下の情報が与えられました。

  • user_id: ユーザID
  • check-in: ホテルのチェックイン日
  • checkout: ホテルのチェックアウト日
  • affiliate_id: ユーザのサイト訪問経路(直接か検索エンジンなど)
  • device_class: デスクトップかモバイルか
  • booker_country: ユーザの国(匿名)
  • hotel_country: ホテルの国(匿名)
  • city_id: 予測対象の都市(匿名)
  • utrip_id: 旅程をまとめるID

Kaggle などのコンペと比べ、中間・最終にそれぞれ一度しかテスト用データセットへの予測値を提出できないのも特徴的でした。評価指標は「Precision@4」(4つの候補を挙げた上での正解率)でした。

チーム解法

最終的には4種類のLSTMモデルを作成し、予測値を重み付き平均しました。最初に主催者が公開している情報*4*5を基にベースラインとなるモデルを構築し、チームメイトと共に徐々に改善を重ねていきました。詳細は公開された論文*6ソースコード*7*8をご参照ください。

f:id:upura:20210312071721p:plain

図は *6 より引用。

工夫した点をいくつか紹介しておきます。

まずは本来使えないはずの「予測対象の都市の滞在日数」という特徴量です。今回のコンペでは、実際に推薦を実施する時点では分からないはずの「予測対象のホテルのチェックアウト日」が与えられており、滞在した日数が計算できてしまいました。滞在日数は都市の特徴をよく表すことが想像でき、実際に性能の向上に貢献しました。

f:id:upura:20210312072917p:plain

図は *6 より引用。

ニューラルネットワークの構造の工夫としては、都市と同時に国を当てるタスクも解く「マルチタスク・ラーニング」の枠組みも導入しました。

f:id:upura:20210312072951p:plain

図は *6 より引用。

与えられたデータセットから、Word2Vecなどのグラフ関係の特徴量も作成しました。得られた都市のベクトル表現を2次元で可視化した結果を下図に示します。遠い目で見ると、世界地図に見えなくもない気もしました。

f:id:upura:20210312072629p:plain

図は *6 より引用。

おわりに

本記事では、チーム参加して6位に入った「Booking.com Data Challenge」について紹介しました。旅行という身近で面白い題材に取り組みつつ、最終的には論文も書けて非常に有意義なコンペでした。一緒に取り組んだチームメイトに改めて感謝します。