Vポイントマーケティング|TECH LABの Tech Blog

TECH LABのエンジニアが技術情報を発信しています

ブログタイトル

レコメンドモデルに"なぜこの商品?"を聞いてみた ― RecVAE × Captumで推薦根拠を可視化する

はじめに

こんにちは、VポイントマーケティングAIエンジニアの伊藤です。

「なぜこの商品がおすすめされたか?」は、ユーザーにとってもモデルの開発者にとっても(商品の購入を任されたAIやコーディングを任されプロンプトによって自分のことを"この分野に詳しいデータサイエンティスト"だと思い込まされているAIにとっても)重要ですよね、たぶん。

この記事では、実際の小売の購買履歴データでRecVAE(推薦モデル)を学習し、Captumを使ったIntegrated Gradients(IG)で推薦根拠を可視化した実験を紹介します。

※ 本記事で扱う購買履歴データは、個人を特定できない形に匿名化・統計処理された分析用データを使用しています。


RecVAEとIntegrated Gradientsとは

RecVAE(推薦モデル)

RecVAEは変分オートエンコーダ(VAE)をレコメンドに応用したモデルです。

  • 入力:ユーザーの購買履歴(各商品を「買った/買ってない」の二値ベクトル)
  • 出力:各商品の購入確率(推薦スコア)

「このユーザーが買いそうな商品」をスコアで予測するため、スコア上位の商品をレコメンド候補として提示します。

「この時代にTransformerベースではなくVAEベース?」と思われた方もいらっしゃられるかと思いますが、必ずしも最新のモデルが最適とは限らないらしいです。

クックパッドさんの RecBole を用いてクックパッドマートのデータに対する50以上のレコメンドモデルの実験をしてみた という記事では、特定の評価条件下において、RecVAEがTransformerベースのモデルを上回る結果が報告されています。 実際に私も、今回扱ったデータセットおよび評価設定の範囲内でRecBoleを用いたモデル比較を行い、本実験では RecVAE の方が BERT4Rec より高い精度を示したため、RecVAEを採用しました。

Integrated Gradients(IG)

Integrated Gradientsは購買ベースのXAI手法で、Captum(PyTorch公式のモデル解釈ライブラリ)に実装されています。

基本的なアイデアは、「ベースライン(何も買っていない状態)から実際の購買履歴に至るまでの経路に沿って勾配を積分する」というものです。これにより、各入力特徴量(=各商品の購入有無)がモデルの出力に対してどれだけ寄与しているかを数値化できます。

  • 正の寄与 → その商品を買っているとレコメンドスコアがUPする
  • 負の寄与 → その商品を買っているとレコメンドスコアがDOWNする

他にもXAI手法としてSHAPという手法がありますが、計算量が多いせいか、今回のデータセット・モデルでは実行が難しかったです。


実験設計

小売業の購買履歴データ(約10万会員・約9ヶ月分)でRecVAEを学習しました。

分析は以下の2ステップで行いました。

1. ターゲット選定と推論(RecVAE)

  • 対象商品を未購入の会員(匿名化された分析対象)に対して購入予測スコアを算出
  • スコア上位10名を「この商品が強くレコメンドされるユーザー」として抽出

2. 根拠の抽出(Integrated Gradients)

  • 上位10名それぞれについて、IGで各商品の寄与度を計算
  • 10名の平均寄与度を取り、個人に依存しない「代表的な推薦根拠」として可視化
  • 正・負の寄与度上位10商品を棒グラフで可視化

結果:3つの商品で見えたパターン

3つの商品のレコメンドスコアに対して、「どの商品が推論根拠となったか」を可視化しました。

カレールー(甘口)A社

カレールー(中辛)A社がIG寄与度の1位となっており、同一シリーズの中辛を買っていることが推論根拠となっていることがわかります。 加えて、調味料が上位に並び、普段料理をしているかがカレールーのレコメンドスコアに効いているようです。 また、文具(学習帳)が正の寄与になっているので、辛味が苦手なお子さんがいる家庭であることを想定してモデルが甘口をおすすめしたのかもしれません。

カレールー(甘口)


モナカアイス

モナカアイス B社 がIG寄与度の1位になっており、同一ブランドの別フレーバーが最大正寄与になっています。 「コーンアイス C社」の購入歴があり、正の寄与になっているので、サクサクした食感のアイスが好きなユーザーなのでレコメンドスコアが高くなったのかもしれません。 コンビニの総菜やフルーツサンドがIG寄与度の上位に入っているため、コンビニでの買い物が多いユーザーであることも推論根拠の一つになっているようです。 一方で対象とした人の中に野菜カテゴリの商品を購入したことがあるユーザーが含まれていますが、野菜はモナカアイス B社のレコメンドスコアを下げる要因となっています。「健康志向のユーザーにはアイスクリームのレコメンドが効きにくい」という直感とも合う関係性です。

モナカアイス


もやし

ペットフードがIG寄与度の1位となっており、もやしのレコメンドに関係なさそうな商品が最大の正寄与になっています。 その他の商品は食料品が多く、料理をするユーザーであることが推論根拠の一つになっているようですが、負の寄与となっている商品もあり、この理由は不明です。

もやし


考察:IGで分かったこと、分からないこと

分かったこと

  • 購入頻度 ≠ レコメンド根拠:最も購入される商品がIG最大寄与になるとは限らない
  • カテゴリ嗜好の可視化:同カテゴリを買う層がそのカテゴリをよく好むとモデルが予測する傾向
  • 負の寄与の活用:「このタイプのユーザーにはレコメンドが効きにくい」という負の関係性も見える

限界と注意点

  • 相関≠因果:ペットフード×もやしのように、統計的相関は見えても理由が自明でないケースがある
  • 平均化の情報損失:10名の平均を取っているため、個別ユーザーの寄与パターンとは異なる可能性がある
  • 本分析はモデル挙動の理解を目的としたもので、個人の行動や嗜好を特定・評価するものではありません

まとめ

RecVAEにCaptumのIntegrated Gradientsを適用することで、推薦モデルが「どの商品の購入履歴を根拠にしてレコメンドしているか」を可視化できました。

今回の実験からは、モデルの予測の傾向を確認できました。一方でペットフード×もやしのように「相関≠因果」となるケースも現れることがわかりました。

今後の展望としては、ユーザー個別の寄与パターン分析、さらにIG出力を「この商品をよく一緒に買っているから」といった自然言語の説明に変換してレコメンド画面上に表示するといった応用も面白そうです。