Lock in $30 Savings on PRO—Offer Ends Soon! ⏳

Kaggle H&Mコンペ振り返り

Kaggle H&Mコンペ振り返り

DeNAとMoTのAI技術共有会で発表したスライドです。誤って削除したため再掲しています。

Kyohei Uto

April 30, 2023
Tweet

More Decks by Kyohei Uto

Other Decks in Programming

Transcript

  1. 6 ▪ ユーザデータ ▪ 約137万件 ▪ 年齢、会員情報、郵便番号 etc… ▪ アイテムデータ(画像データあり)

    ▪ 約10万件 ▪ 色や商品のカテゴリ等のtext情報、説明文 etc… ▪ 2年分の購買トランザクションデータ ▪ 3000万件 提供されているデータセット 提供されている商品画像の例
  2. 7 ▪ ポイント ユーザごとに最大12個の商品を予測値として使用可能 ユーザが購入した商品(正解)が予測した12個内に含まれているとスコアがつく 購入した商品が推薦リストの上位にあるほどスコアが上がる(予測値の順序が重要) 評価指標 • U: ユーザ数

    • p(k) : rank kでのprecision • n: ユーザの予測数 • m: ユーザの正解数 • rel(k): 予測が正解の場合1それ以外は0 MAP@K: レコメンデーションのタスクでよく用いられる評価指標
  3. 8 ▪ 学習データセットの作成 ▪ ここが今回のコンペの肝であり難しい点だった。データの特性上負例が存在 しないためMLで解ける形式にデータセットを作成するのが難しかった。 ▪ ファッションの特性を考慮したデータ・モデルの構造 ▪ ファッションという特性上サイズ違いによる再購入が割合として多く

    通常のレコメンドタスクとは特性が異なっていた。 ▪ cold start user/itemへの対応 ▪ まだ購入履歴のない新規ユーザや新規アイテムのこと ▪ 割合としてはユーザの0.7%,アイテムの0.9% に該当。 ▪ 結果的にはここで大きな差はつかなかったものの、レコメンドの一般的な 課題が今回のコンペにも含まれていた。 今回のタスクの主要な課題
  4. 9 explicit feedback(明示的評価) データの特徴 implicit feedback(暗黙的評価) 今回はこちら 日時 ユーザ アイテム

    評価 2020-12-01 A k 4 2020-12-22 A m 5 2021-02-01 A l 3 ユーザの評価が明示的に与えられている アイテムに対するネガティブな反応も直 接得ることができる ユーザがアイテムを購入したという情報しかな いため負例が存在しない。 (購入していない ≠ ユーザが好まないアイテム) 日時 ユーザ アイテム 2020-12-01 A k 2020-12-22 A m 2021-02-01 A l
  5. 12 A. 複数の戦略で各ユーザの候補アイテムを抽出 B. ある週にユーザがそのアイテムを購入するかどうかをlabelとして付与 C. ユーザとアイテムの組み合わせから特徴量を生成 基本的なデータセット作成方法 user item

    week label feature A k 103 1 xxx A m 103 0 xxx A   B C データセット作成のTips: • 正例は全て学習に使うのではなく候補として上がった正例アイテムのみを使用する • 正例を1つも含まないuserはデータセットから除く • 負例の比重が多くなるので必要に応じてnegative sampling • 既に販売されていないアイテムを除く
  6. 13 おそらくここが最も重要なポイント ユーザが購入する可能性のある候補を複数の戦略で生成。購入アイテムが候補に 多く含まれるように戦略の配分などを行った。 ▪ 直近の人気アイテム ▪ 多くのユーザにリーチできるためシンプルだが有効な方法 ▪ 全体の人気アイテムに加え、商品カテゴリ別や年齢別のように集計単位を変えた人気商品も有

    効だった。 ▪ 直近に購入したアイテム ▪ ファッションというデータの特性上再購入が多かったため非常に強力 ▪ ユーザが過去に購入したアイテムと関連性の高いアイテム ▪ 協調フィルタリングによる関連アイテム ▪ 色違いアイテム ▪ ユーザと関連性の高いアイテム ▪ 協調フィルタリングによる関連アイテム 1st stage: 候補生成
  7. 14 アイテム情報は用いず、購入履歴のみからユーザの好みを獲得する推薦手法 候補生成や特徴量生成に使用することでスコアを伸ばすことができた 協調フィルタリング(CF: Collaborative Filtering) item based CF アイテムの共起性(よく一緒に購入されるか)を元

    にアイテム間の類似度を計算する推薦手法 user based CF 購入傾向からユーザ間の類似度を計算し対象ユーザの 類似ユーザがよく購入している商品を推薦する手法 ユーザとアイテムの類似度が得られるので、 それをもとにユーザの類似度上位K個のアイテム を候補として使用できる。 アイテム間の類似度が得られるので、 それをもとにユーザが直近で購入した商品の類似 度上位K個のアイテムを候補として使用できる。 前回購入 アイテム 任意のユーザの購入傾向 2.0 1.0 1.0 類似ユーザ 対象ユーザ 2.0 1.0 1.0 類似ユーザがよく買うアイテム
  8. 15 LightGCNによる協調フィルタリング https://arxiv.org/abs/2002.02126 モデル概要 • GCNを使った協調フィルタリング • userとitemの関係をグラフとみなし購入履歴のない アイテム(リンクが未知)に対するリンク予測を行う •

    モデルはuser,itemを入力として両者の類似度を出力 LightGCN BPRLoss 正例 購入履歴 5つrandom samplingしスコアが 高いものを負例として使用 positive score negative score userとitemの類似スコア embedding_size: 256 n_layers: 4 user*item特徴量として類似度と rankを使用 各userの類似度上位 itemを候補として追加 ・・・ Training (RecBoleを使用 https://recbole.io/) 負例 Candidates Features 正例のscoreを上げ、負例の scoreを下げるよう学習 通常のuser based CFの代わりにNNによるCFを使って候補生成と特徴量生成を行った
  9. 16 ▪ ユーザの静的特徴量 ▪ 年齢 ▪ 郵便番号 2nd stage: 特徴量生成

    ▪ アイテムの静的特徴量 ▪ アイテムカテゴリ ▪ textを全てconcatして BERT->UMAP6次元圧縮 ▪ ユーザの動的特徴量 ▪ 購入数 ▪ 前回購入した商品かのフラグ ▪ 前回購入した商品の色違いかのフラグ ▪ 前回購入してからの日数・週数 ▪ 購入品の金額・割引額の統計量 ▪ オンライン購入率 ▪ アイテムカテゴリごとの購入率 ▪ 再購入率 ▪ アイテムの動的特徴量 ▪ 売上の伸び率 ▪ 直近の売上数ランキング(年齢、カテゴリ別) ▪ 直近の売上数(年齢、カテゴリ別) ▪ オンライン購入率 ▪ CFによる特徴量 ▪ 前回購入品との類似スコア ▪ ユーザ×アイテムの類似スコアと 類似度ランキング transactionsから得られるユーザとアイテムを掛け合わせた(動的)特徴量が特に有効だった。 メモリの都合上、入れてもあまり効果なさそうな特徴量は除いたりもしていた。
  10. 20 ▪ 概要 購入履歴を持たない9699人(0.7%)の新規ユーザに対してルールベースで推薦 直近の人気アイテム上位12個を一律に推薦する場合に比べてスコアがわずかに改善 1. 年齢別の人気アイテム x歳のユーザに対して直近3週間におけるx±w歳の人気アイテム上位12個を推薦 直前の売り上げを重要視したいのでテスト期間との日数の差に応じて売上に重みをつけ評価 2.

    購入可能性の低いアイテムの除去 「郵便番号ごとの店舗利用率」をもとに新規ユーザがオンライン/ストアのどちらを利用する かを推定 オンラインを利用すると推定されたユーザからオンラインで購入されにくいアイテムを推薦 アイテムから除く(逆も同じ) 後処理
  11. 24 1st place solution 候補 - graph embedding(ProNE)の類似度上位 - アイテムカテゴリを使ったロジスティック回帰

    特徴量 - word2vecから得たアイテム間の類似度 - graph embeddingによるユーザとアイテムの類 似度 Tips: - catboost-gpuでlightgbm-cpuの30倍の高速化 - feature storeを実装し特徴生成を短縮 - データのencodingや型変換によるメモリ節約 モデリングや特徴量エンジニアリングよりも候補生成の戦略が今回の鍵だったとコメント https://www.kaggle.com/competitions/h-and-m-personalized-fashion-recommendations/discussion/324070
  12. 25 BPR matrix factorizationを使用した特徴量生成 BPR: (Baysian Personalized Ranking) ▪ implicit

    feedbackデータに対する推薦アルゴリズム ▪ ユーザの購入アイテムとサンプリングした未観測アイテムを使用 ▪ 購入アイテムとユーザのベクトルを近づけるように、反対に未観測アイテム とユーザのベクトルを遠ざけるように学習する ▪ この方法で学習したユーザとアイテムの類似度を特徴量として使用すること でスコアを大きく伸ばした。 3rd place solution https://www.kaggle.com/competitions/h-and-m-personalized-fashion-recommendations/discussion/324129
  13. 26 ▪ アイテムの属性情報をembedding ▪ ユーザの属性情報をembedding ▪ 両者のembeddingから類似度を算出 ▪ ユーザのembeddingをする際にgating network

    というものを利用しユーザのアクティブ度合いに 応じてNNを分けて学習するよう工夫 4th place solution https://www.kaggle.com/competitions/h-and-m-personalized-fashion-recommendations/discussion/324094 Two tower NN modelによる候補生成
  14. 28 ▪ implicit https://github.com/benfred/implicit implicit feedback用の協調フィルタリングを提供するライブラリ。 ▪ RecBole https://github.com/RUCAIBox/RecBole PyTorchベースのNN系の推薦アルゴリズムライブラリ。

    ▪ recommenders https://github.com/microsoft/recommenders microsoft製の推薦アルゴリズムライブラリ。古典的手法から最新のNNモデルま で幅広く実装されている。 解法で使われていた推薦アルゴリズムのライブラリ