ZOZOTOWNホーム画面のパーソナライズ最新アップデート ─ Two-Towerモデルで目指す多様性と受注系指標の向上

ZOZOTOWNホーム画面のパーソナライズ最新アップデート ─ Two-Towerモデルで目指す多様性と受注系指標の向上

はじめに

こんにちは。データシステム部推薦基盤ブロックの新卒1年目の上國料(@Kamiko20174481)と、5年目の宮本(@tm73rst)です。私たちのチームでは、ZOZOTOWNの推薦システムを開発しています。2024年7月のテックブログでは、ZOZOTOWNのホーム画面に表示される「モジュール」の並び順をパーソナライズする取り組みを紹介しました。

techblog.zozo.com

モジュールとは、トレンドやキャンペーンなど特定のテーマに基づき商品群を表示する枠のことです。

モジュール説明

モジュールの内容は企画チームの意図に基づいて設定されますが、ユーザーごとに関心や求めるコンセプトが異なるため、一律の表示ではなく最適な順序で並べることが重要です。

このように、ユーザーごとに適したモジュールを配置する仕組みをモジュールパーソナライズと呼びます。本記事では、このモジュールパーソナライズの精度を向上させるために実施した「モジュールの多様性向上」と「受注系指標の改善」についてご紹介します。

パーソナライズ機能や推薦システムの開発に携わる方々の参考になれば幸いです。

目次

モジュールパーソナライズ

ZOZOTOWNではユーザーの興味を引く商品を効果的に訴求するため、ホーム画面に多様なモジュールを表示しています。しかし、すべてのユーザーに同じモジュールを一律に表示すると、ユーザーによっては興味の薄いコンテンツが前面に出てしまい購買促進につながりにくいという課題がありました。

そこで、ユーザーの嗜好に応じてモジュールの並び順を最適化する「モジュールパーソナライズ」を導入しました。本手法の中核となるのがTwo-Towerモデルです。

Two-Towerモデルによる推薦

モジュールパーソナライズは、以下の図に示すTwo-Towerモデルを利用して構成されています。

Two-Towerモデルの概念図

Two-Towerモデルでは、ユーザーの特徴商品の特徴をそれぞれ個別のニューラルネットワーク(タワー)で学習し、共通の埋め込み空間へマッピングします。類似した特徴を持つユーザーと商品が近い位置に配置されるよう学習されるのが特徴です。

具体的には、ユーザーの属性(例:年齢、性別、閲覧履歴など)を元にユーザー埋め込み(ユーザーの嗜好を表すベクトル)を計算し、商品の属性(例:カテゴリ、ブランド、価格帯など)を元に商品埋め込み(商品の特徴を表すベクトル)を計算します。

推薦する際は、ユーザー埋め込みと候補商品の埋め込みのコサイン類似度を算出し、ユーザーの嗜好に合った商品をランキング化します。

モジュールパーソナライズの仕組み

ZOZOTOWNのホーム画面における推薦対象は商品単体ではなく、複数の商品を含むモジュールです。そこで、以下の手順でモジュール単位のランキングを行います。

  1. 各商品の推薦スコアを算出(Two-Towerモデルによるスコアリング)
  2. モジュール内の商品のスコアを集約
  3. 統合スコアが高い順にモジュールを並び替え

このフローにより、ユーザーの興味に合ったモジュールが上位に表示され、より最適なコンテンツを提供できるようになります。

モジュールパーソナライズの概念図

モジュールパーソナライズをリリースしてわかった課題

モジュールパーソナライズの導入により判明した課題は、多様性の欠如購入促進の難しさの2点です。

1. 多様性の欠如

多様性はやや抽象的な概念ですが、ここでは以下の2つの観点で課題を整理します。

パーソナライズロジックの過度なクリック履歴依存

ユーザーの商品クリック履歴は、特定のカテゴリや同一商品に偏る傾向があります。これは購入検討時に類似商品を比較したり、関心のあるカテゴリを集中的に探索するといった行動が要因です。しかし、従来のモデルは直近のクリックデータに最適化されているため、その履歴に強く依存してしまうリスクがあります。その結果、最近クリックしたカテゴリの商品ばかりが上位に表示され、ユーザーの探索の幅が狭まります。また、一時的に興味を持った商品や意図せずクリックした商品が学習へ影響を与え、ユーザーの本来の嗜好を正確に捉えにくくなる可能性もあります。

モジュール間での商品の重複表示

従来のZOZOTOWNのホーム画面では、同じ商品が複数のモジュールにわたって重複表示されるケースがありました。

モジュール間で商品が重複しているケースのイメージ

特に、モジュールごとに横スクロールなしで表示される商品群は、サイト全体の印象やユーザーの探索行動に大きく影響を与えるため、重要な要素です。本稿では、これらの商品群を「ファーストビュー」と定義します。

なお、一般的に「ファーストビュー」は縦スクロールなしで画面上部に表示される範囲を指すことが多いですが、本稿では各モジュール内で横スクロールなしに表示される商品群を意味する点にご注意ください。

モジュールにおけるファーストビューの商品群

ファーストビューで同一商品が繰り返し表示されると、以下の問題が発生します。

  • 商品の偏り:特定の商品やカテゴリへの露出が過剰になり、多様な商品が目に留まりにくくなる
  • 新しい発見機会の減少:同一商品の露出が増えることで、ユーザーが新しい商品に出会う機会が制限される
  • 探索意欲の低下:同じ商品が目立つことで新鮮さが薄れ、ユーザーの縦スクロールや横方向への探索意欲が低下しやすくなる

このため、ファーストビューでの商品重複は、ユーザー体験の質を低下させる要因となっています。

2. 購入促進の難しさ

従来のロジックを用いたA/Bテストの結果、受注に関する指標のさらなる向上の可能性が明らかになりました。特に、パーソナライズロジックがクリック履歴に強く依存していることで、ユーザーの本来の嗜好を正確に捉えきれていない可能性があります。この影響により、推薦されたモジュール内の商品がユーザーの購入意欲を十分に喚起できず、購買へつながりにくい状況になっていると考えます。

改善のアプローチ

パーソナライズの方針

課題を解決するために、図に示すように以下の対応をします。

  • Two-Towerモデルの精度向上
  • 後処理の改善・導入

Two-Towerモデルの精度向上と多様性を考慮した後処理の導入

これにより、ユーザーの嗜好に即したモジュールのスコアリングを行い、後処理によってより多様な商品がユーザーに届くよう順序を最適化し、上述の課題を解決します。ここでいう「ユーザーの嗜好に即した」とは、購入へつながる確度が高いものを指します。

Two-Towerモデルの精度向上

今回モデルを改善する目的は、「ユーザーの短中期的な嗜好を学習し、それに即した多様な推薦をし最終的に購入に促す」ことです。主な改善ポイントは、以下の2点です。

  • 最適化指標の変更
  • UserTowerの特徴量の変更

まず、最適化指標については、従来の「クリック」から「カート投入」に切り替えました。クリックは単なる興味関心の指標に過ぎないのに対し、「カート投入」はユーザーが実際に購入を検討した行動であり、より購買意向に近い嗜好を反映していると考えたためです。一方で、「購入」を最適化指標として採用しなかったのは、データの絶対量が少なく、学習が不安定になる懸念があったためです。そのため、クリックよりも購買意向に近く、かつ十分なデータが確保できる「カート投入」を最適化指標として選定しました。

次に、UserTowerの特徴量については、これまで「直近のクリック履歴(時系列データ)」のみを利用していましたが、過去1か月のクリックログを活用する方針に変更しました。中期的なログを学習することで、ユーザーの継続的な嗜好を捉え、より多様な商品を推薦しやすくなると考えています。具体的には、「商品」「ブランド」「カテゴリ」「カラー」などの複数の軸でユーザーの関心が高い要素を集計し、上位のものを抽出します。さらに、これらの情報に時系列の重み付けをし、直近の行動と過去の一貫性をバランスよく反映できるよう工夫しています。

細かな変更点としては、データ分割におけるトランザクション期間を1週間に設定し、訓練・検証・テストデータそれぞれで四分位範囲を用いたフィルタリングを行いました。これにより、学習から評価までの過程でデータ分布が大きく偏る(Skew)リスクを最小限に抑えつつ、分割の一貫性を高めることができます。

以下では、従来モデルをクリック最適化モデル、改善後のモデルをカート投入最適化モデルと呼ぶことにします。

後処理の改善・導入

後処理を導入する目的は、「Two-Towerモデルでスコアリングされたモジュール群から、重複や偏りを抑えつつ多様な商品をユーザーに届け、体験価値を向上させる」ことです。主な改善ポイントは、以下の3点です。

  • モジュールのスコア計算手法を変更
  • 類似モジュールの連続表示を抑制
  • 関心度に応じたモジュールの再配置

まず、モジュールのスコア計算手法の変更についてです。従来は、モジュール全体の商品を対象にスコアを計算していました。今回はホーム画面の縦スクロールというUI特性に合わせ、ファーストビューのみを対象にスコアを計算するよう変更しました。これにより、ユーザーが実際に注目する領域に基づいた評価が可能となり、より適切なモジュールの順位付けが期待できます。

次に、類似モジュールの連続表示の抑制についてです。従来、同一商品を含むモジュールが連続して上位に表示されることがありました。これは、異なるモジュール間でスコアを独立に算出するため、高スコアの同一商品を含むモジュールが複数上位に配置されやすかったことが原因です。そこで、各モジュールのファーストビューに同じ商品が多く含まれている場合、スコアが低いモジュールの順位を下げる仕組みを導入しました。これにより、ホーム画面上での商品の重複表示を抑え、多様性の向上を図ります。

類似モジュールの連続表示の抑制イメージ図

最後に、関心度に応じたモジュールの再配置についてです。埋め込みを用いたスコアリングには予測誤差が生じるため、ユーザーの本質的な嗜好を完全には捉えきれない可能性があります。そこで、直近でユーザーが閲覧したもののクリックしなかったモジュールは迅速に下位へ移動させ、新しいモジュールを上位に推薦する仕組みを導入しました。これにより、ユーザーの関心に即したモジュールを素早く提示し、飽きを防ぎつつ最適なモジュールを推薦できます。

A/B テスト

概要

新ロジックの効果を評価するために、ZOZOTOWN会員を対象として5週間のA/Bテストを実施しました。現行ロジックと前述のアプローチを組み合わせた以下の4つのパターンを用意しました。また、テスト対象のユーザーが各実験群に均等に振り分けられるよう、4つのグループそれぞれに25%ずつ割り当てています。

実験群 説明
Control クリック最適化モデル
Treatment1 クリック最適化モデル + 後処理
Treatment2 カート投入最適化モデル
Treatment3 カート投入最適化モデル + 後処理

リリースを行う際の実験群の選定方針

A/Bテスト開始前に、プロジェクトメンバー間でリリース判断の基準を明確化しました。具体的には、受注系指標だけでなく、多様性に関する指標も考慮することを原則としました。ただし、多様性が向上してもKGIやKPIが悪化する場合はリリースを見送る方針とし、全メンバーで認識を統一しました。

結果

A/Bテスト結果のサマリを受注系の指標と多様性に関する指標に分けて以下に示します。

受注系指標

指標 備考 T1/C 比(%)  T2/C 比(%)  T3/C 比(%) 
ホーム画面訪問者の受注金額 ホーム画面にランディングしたユーザーの合計受注金額 99.9 100.2 100.1
モジュール経由の受注金額 モジュールに表示された商品の合計受注金額 100.2 100.9 101.2
モジュール経由の受注商品点数 モジュールに表示された商品の合計受注商品点数 100.4 101.2 100.9
モジュール経由のカート投入数 モジュールに表示された商品の合計カート投入数 100.2 101.4 101.3

多様性に関する指標

指標 備考 T1/C 比(%)  T2/C 比(%)  T3/C 比(%) 
モジュール掲載商品のユニーク閲覧数 表示商品の合計ユニーク閲覧数 101.8 99.8 101.4
モジュール掲載商品のユニーククリック数 表示商品の合計ユニーククリック数 100.5 100.0 100.4
モジュール間の閲覧商品の重複率 モジュール間で同じ商品を閲覧した割合 92.0 98.4 91.5
モジュールの重複率 前日と比較して同じモジュールが表示された割合 98.3 106.3 106.1
商品の多様性 ユーザーごとのユニーク閲覧商品数 / 全体の閲覧商品数 100.4 100.0 100.3
カテゴリの多様性 ユーザーごとのユニーク閲覧カテゴリ数 / 全体の閲覧商品数 100.3 101.3 101.6
ブランドの多様性 ユーザーごとのユニーク閲覧ブランド数 / 全体の閲覧商品数 99.8 99.0 99.2

Treatment1(クリック最適化モデル + 後処理)について

従来のロジックでは、特定の商品や子カテゴリに偏りが生じ、新しい商品の発見機会が制限されていました。しかし、商品の多様性を考慮した後処理を追加した結果、ユーザーが閲覧する商品のバリエーションが広がり、多様性に関するほぼすべての指標が飛躍的に向上しました。さらに、クリック数や閲覧ページ数の増加も確認され、ユーザーが新しい商品を発見しやすくなったことが示されました。このことから、後処理の導入が興味喚起の向上に寄与したことが実証されたと考えられます。

一方で、受注系指標への大きな影響は見られませんでした。その要因の1つとして、モジュールのスコアリングに使用した既存のクリック最適化モデルが、直近のクリックログに引っ張られ偏ったカテゴリや商品を推薦していた点が挙げられます。そのため、後処理を追加しても一部のケースではユーザーの嗜好を十分に反映できていなかった可能性があります。

Treatment2(カート投入最適化モデル)について

カート投入最適化モデルは、「短中期的な嗜好を学習し、多様な推薦をすることで購入を促進する」という設計意図を実現し、受注系指標が大幅に向上しました。短中期的な嗜好の学習により、カテゴリや商品の偏りを抑えながら一貫性のある推薦をし、ユーザーに幅広い選択肢を提供した結果、売上向上に寄与したと考えられます。

一方で、「ブランドの多様性」は減少しましたが、定性評価ではユーザーの関心が高いブランドの露出が増加し、過去のクリック履歴に含まれていないブランドも、嗜好に基づく推薦が適切に機能していることが確認されました。

また、「モジュールの重複率」は増加しましたが、A/Bテスト結果を基に追加分析を行ったところ、重複したモジュールは売上と正の相関を持つことが判明しました。この結果から、モジュールの重複は必ずしもネガティブな影響を与えるとは言えず、むしろユーザーに適切な商品を継続的に提示することが有効な手段となり得ると考えられます。

しかし、商品の多様性やユニーク商品に対する閲覧数・クリック数の向上は確認されませんでした。この要因として、短中期的な嗜好を学習することで、ユーザーの過去の行動に基づいた推薦が強化され、一貫性のある提案が可能になったことが挙げられます。これにより、関連性の高い商品が表示されやすくなる一方で、ログの即時性が低下し、推薦内容の変化が抑制される傾向があると考えられます。

Treatment3(カート投入最適化モデル + 後処理)について

カート投入最適化モデルと後処理を個別に適用した場合、それぞれ特定の指標には良い影響を与えたものの、一部の指標にはネガティブな影響も見られました。しかし、両者を統合したモデルでは互いの弱点を補完し合い、全体的なスコアの向上が確認され、各指標のバランスを取ることができました。

結論として、カート投入最適化モデルによりユーザーの嗜好に即したスコアリングをするとともに、後処理でより多様な商品がユーザーに届くよう順序を最適化することで、受注系指標と多様性に関する指標の向上を両立させることができました

この結果を踏まえ、受注系指標および多様性に関する指標を総合的に評価した上で、Treatment3のリリースが決定しました。

今後の展望

モジュールパーソナライズのTwo-Towerモデルをカート追加最適化モデルに切り替え、後処理を追加することで、多様性と受注系の指標の向上を実現しました。今後は以下のような取り組みを行う予定です。

  • パーソナライズのリアルタイム化
  • 商品の並び順のパーソナライズ
  • 推薦指標の定式化

パーソナライズのリアルタイム化

カート投入最適化モデルへの切り替えにより、モジュール内の商品の重複率が増加し、ユニークな閲覧数やクリック数が減少しました。これは、短中期的な嗜好を学習した結果として生じたものであり、意図した効果ではあるものの、さらなる改善の余地があります。

現行のシステムでは、推論パイプラインが1時間に1回実行され、ユーザーのパーソナライズ情報が更新されます。従来のロジックでは、更新頻度を上げると直近の閲覧履歴に過度に影響され、ユーザーの短期的な嗜好が強く反映されるという課題がありました。しかし、カート投入最適化モデルでは、中期的な嗜好も考慮することで、短期的な変動に左右されにくい推薦が可能になっています。

この特性を活かし、リアルタイムでのモジュール更新を導入すれば、短期嗜好への過剰適応を抑えつつ、ユーザーの関心に応じた商品を最適なタイミングで推薦できると考えています。

商品の並び順のパーソナライズ

現在、一部のモジュールではユーザーごとに商品がパーソナライズされているものの、多くのモジュールでは共通の商品が表示されています。また、モジュールパーソナライズだけでは、ユーザーごとの微妙な嗜好の違いを十分に捉えきれない場合があります。例えば、同じカテゴリの商品を表示するモジュールであっても、ユーザーごとに好むブランド、価格帯、デザインの傾向は異なります。

現行のシステムでは、表示する商品の選定は行われているものの、ユーザーごとの関心度に応じた並び順の最適化は行われていません。そのため、より個々の嗜好に適した推薦を実現するには、商品の表示順をユーザーごとに最適化することが重要です。現在、このパーソナライズ機能の開発を進めています。

推薦指標の定式化

今回の取り組みでは多様性を重視しましたが、今後は新規性やセレンディピティなど、さらなる推薦指標の改善にも取り組む予定です。推薦指標は、企業やサービスごとに定義が異なるため、適切な指標の選定が重要になります。

そこで、私たちが目指すZOZOTOWNのホーム画面に最適な推薦指標を定義し、それをどのように改善につなげるかをチーム内で議論しながら具体化していきます。

最後に

本記事ではZOZOTOWNのホーム画面に表示するモジュールの並び順をパーソナライズするシステムとその効果について紹介しました。今回取り上げた部分以外にも改善すべき箇所が大量にあるので、これからも1つずつ改善していくことでユーザーにとってより良いZOZOTOWNを提供できるよう邁進していきます。

ZOZOでは、一緒にサービスを作り上げてくれる方を募集中です。ご興味のある方は、以下のリンクからぜひご応募ください。

corp.zozo.com

カテゴリー