👋

レコメンド系kaggleコンペまとめ

2022/12/08に公開

はじめに

この記事はBrainPad Advent Calendar 2022の8日目の記事です。過去にあったいくつかのレコメンド系コンペの概要と上位解法のまとめです。解説ではなく今後調査するための備忘録の位置付けです。

H&M Personalized Fashion Recommendations

概要

  • H&Mのオンライン・オフラインの行動履歴をもとに、次にユーザーが購買する商品を予測するコンペ。
  • 提供されたデータは約二年間のユーザーの行動データ。大別して下記の三種類に分けられる。
    • ユーザーデータ: 年齢、ハッシュ化された住所、会員登録の状況などデータ数は137万件程度。
    • アイテムデータ: 商品のカテゴリ、色・模様、商品の説明文(英語)、商品画像などで10万件程度。
    • トランザクションデータ: 日付、オンラインかオフラインかなど、データ数は3000万件程度。
  • 評価指標はユーザーごとに予測対象の商品の中から12個予測した時のMAP@k。
    • レコメンデーションで一般的な評価指標。
    • 予測したものの中にユーザが実際に購入した商品があればスコアがつく。
    • 予測対象には順序があり購入した商品が上位にあるほどスコアが上がる。

上位解法の特徴抜粋

  • 基本方針としては購入される商品の候補生成からのランク付けという流れ。候補生成はルールベースも用いられていた。
  • 二値分類を使ったランク付け。
  • graph embedding(ProNE)によるユーザとアイテムの類似度を用いた候補生成。また、類似度を特徴量に利用。
  • Bayesian Personalized Ranking(BPR)を使用した特徴量生成。ユーザの購入アイテムとサンプリングした未観測アイテムを用いて、購入アイテムとユーザのベクトルが近づくように学習。類似度を特徴量に利用。
  • word2vecによるアイテム間の類似度。
  • 各候補生成時の候補内での商品数を特徴量にする(例:先週の人気アイテムtop nを候補に追加するならそのnを特徴として入れる)。
  • 商品、ユーザの連続購買回数。
  • 協調フィルタリング系。
  • ユーザが過去に購入した商品をconcatして文章と見なして、特徴量生成。

その他Tips

  • ユーザー、アイテムのIDやカテゴリなどの文字列を最初から連番の整数に変換しておくことで、省メモリになるうえ、コードが簡潔になる。
  • 毎回全てのデータで計算すると時間がかかりすぎて実験サイクルが遅いので、ユーザーを1%, 10%サンプリングしたデータセットで実験する。
  • catboost-gpuでlgbの30倍高速化。
  • feature storeで特徴生成を短縮。

参考

Elo Merchant Category Recommendation

概要

  • クレジットカードの購買データをもとに、顧客ロイヤリティスコア(データの提供元の決済サービス企業Eloが定義したスコア)を予測するコンペ。
  • 提供されたデータは約20万件のカードの購買データ、予測対象のカードは12万件程度。下記の三種類。
    • 各カードを一意に識別できるIDとロイヤリティスコアを持つカードマスタ。ロイヤリティスコアはおおよそ0を中心とした-10から10程度の正規分布だが、-33付近に外れ値が存在。
    • カードごとの取引履歴データ。
    • カードが使われた店舗の購買データ。
  • 評価指標はRMSE。

上位解法の特徴抜粋

  • 外れ値を予測する2値分類モデルを使って、外れ値と外れ値抜きで学習した予測値を加重平均する。外れ値の確率が低いものについては、外れ値抜きで学習させたモデルでの予測値と差し替える方法は公開コードにもあった。
  • 取引履歴データにロイヤリティスコアをマージして集約統計量を作成。
  • ロイヤリティスコアを[0, 1]の範囲に正規化し、xentropy lossを最小化。
  • target encoding
    • targetの値そのものを使ったり、外れ値かどうかのバイナリを利用など。
    • また、特徴量の組み合わせに対してtarget encodingを行った後、最近のものほど重要視されるように重みをつけて集約。
  • 利用した店のidや購買量を文字列で並べてベクトル化。
  • コルモゴロフ-スミルノフ検定を利用し、trainとtestで分布の違う特徴量を削除
  • magic featureを予測し、本来の値との誤差を特徴量にする

参考

Instacart Market Basket Analysis

概要

  • オンライン食料品配達サービスで既存のユーザーが次回のページ訪問で再購入する商品を予測するコンペ。
  • 提供されたデータはユーザが過去に購入したログデータ。ユーザー数は約20万、商品数は約5万、合計の注文回数は約340万。
  • 注文IDごとに任意の数の商品を予測し、F1-scoreで評価。

上位解法の特徴抜粋

参考

GitHubで編集を提案

Discussion