Share
Embed
マッチングアプリにおける推薦システム
2023年2月16日開催、サイバーエージェント メディア事業部主催のデータ活用に関する勉強会「メディアサービスにおけるデータ・AIの活用事例 #2」登壇資料です。
https://cyberagent.connpass.com/event/270224/
CyberAgent PRO
February 16, 2023
Transcript
55 slides
-
自己紹介 2 橋爪 友莉子 ( ゆっこ ) • 21年度入社 (
新卒2年目 ) • ML Engineer @MDTS-DSC ( メディアのデータ横軸組織 ) ◦ タップルの推薦システムの分析と開発 ◦ タップルのその他の分析もろもろ • 興味 ◦ 推薦システム、NLP、分散処理、MLOps、面白いって思ったら基本気になるので、たくさん首を突っ込みます ◦ ユーザ理解、ユーザがちょっと幸せになること • 趣味 ◦ カメラ、邦ロック、走る Twitter: @runnlp -
話すこと • マッチングアプリとデータ活用 ◦ プロダクトの説明: タップル ◦ マッチングアプリにとって正解は? ◦ (データによって)
解決したい課題例 • 相互推薦システム ◦ item-to-user推薦と相互推薦の違い ◦ 相互推薦を構成する2つの要素 ◦ 相互推薦の評価、その他のトピック • タップルでの活用事例 ◦ 協調フィルタリングベースの推薦アルゴリズムの一例 ◦ システム構成 3 -
マッチングアプリにとって正解は何? • 課金して貰えばいい? • ユーザ体験が良いと継続してくれる? • 使い続けてもらいたい? • マッチがたくさんあればいい? •
安心安全は絶対に必要だよね? • ゴールは、デートして付き合うこと!(さらには結婚とか) 7 -
解決したい課題の例 • 誰に誰を推薦する?→ユーザ推薦 • 安心安全に使ってほしい→ 監視フィルタ • デートプランカードを使ってもらうために推薦したい→ 起動時推薦 •
どの指標を伸ばすとサービスのグロースに繋がる?→ 指標の分析 • 施策の効果はどう?→ ABテストなどによる検証 8 -
解決したい課題の例 • 誰に誰を推薦する?→ユーザ推薦 • 安心安全に使ってほしい→ 監視フィルタ • デートプランカードを使ってもらうために推薦したい→ 起動時推薦 •
どの指標を伸ばすとサービスのグロースに繋がる?→ 指標の分析 • 施策の効果はどう?→ ABテストなどによる検証 9 参考資料 • マッチングサービスの画像審査における機械学習の応用 / Application of machine learning in image examination - Speaker Deck • AI/ Data Technology Map -
解決したい課題の例 • 誰に誰を推薦する?→ユーザ推薦 • 安心安全に使ってほしい→ 監視フィルタ • デートプランカードを使ってもらうために推薦したい→ 起動時推薦 •
どの指標を伸ばすとサービスのグロースに繋がる?→ 指標の分析 • 施策の効果はどう?→ ABテストなどによる検証 10 デートプランカードが導入されたときに設定率を上げるために 起動時推薦を実施 -
解決したい課題の例 • 誰に誰を推薦する?→ユーザ推薦 • 安心安全に使ってほしい→ 監視フィルタ • デートプランカードを使ってもらうために推薦したい→ 起動時推薦 •
どの指標を伸ばすとサービスのグロースに繋がる?→ 指標の分析 • 施策の効果はどう?→ ABテストなどによる検証 11 参考資料 (ちょっと古いけど) マッチングサービスにおけるKPIの話 -
解決したい課題の例 • 誰に誰を推薦する?→ユーザ推薦 • 安心安全に使ってほしい→ 監視フィルタ • デートプランカードを使ってもらうために推薦したい→ 起動時推薦 •
どの指標を伸ばすとサービスのグロースに繋がる?→ 指標の分析 • 施策の効果はどう?→ ABテストなどによる検証 12 正しく効果を測るための工夫もろもろ 例えば、マッチングの推薦のABテストでは、いいかもする人とありがとうする 人の両側に人がいるので、単純な分割ではだめ (STUVAの問題) -
解決したい課題の例 • 誰に誰を推薦する?→ユーザ推薦 • 安心安全に使ってほしい→ 監視フィルタ • デートプランカードを使ってもらうために推薦したい→ 起動時推薦 •
どの指標を伸ばすとサービスのグロースに繋がる?→ 指標の分析 • 施策の効果はどう?→ ABテストなどによる検証 13 マッチ成立の流れ いいかも→ありがとう (=マッチ) → メッセージができるようになる https://tapple.me/ 累計会員数1700万人が利 用しているので 全員見るのは難しい ↓ それぞれに合ったお相手を 推薦したい 今日話すこと -
item-to-user推薦と相互推薦の違い 相互推薦 • ユーザuにユーザvを推薦する • ユーザu,vがどちらも推薦を受け入れた場合に他の ユーザにユーザu,vを推薦できなくなる • アプリケーションによっては、推薦がうまくいく と、ユーザはそのシステムを使用する必要がなくな
り、離脱してしまう • ユーザu,vが互いに満足しないと、推薦成功とはなら ない 17 ACM SIGIR 2020 Tutorial - Reciprocal Recommendation: matching users w… item-to-user推薦 • ユーザuに対して、アイテムiを推薦する • 複数のユーザにアイテムを推薦することができる • 良い推薦できたからといって、ユーザがシステムか ら離脱するわけではない • 推薦成功は推薦を受けユーザの満足によって決まる -
item-to-user推薦の場合 相互推薦を構成する2つの要素 18 18 ユーザu→ アイテムi の Preference Score 行動履歴や属性データなど
ユーザに関するデータ それぞれの アイテムに 対する Preference Score を 推論する それぞれのアイテムに対するPreference Scoreがわかれば ソートして、候補生成なりリランキングなりに使える コンテンツベースや協調フィルタリングなどの アルゴリズムによって 推薦リスト作成 -
item-to-user推薦の場合 相互推薦を構成する2つの要素 19 19 ユーザu→ アイテムi の Preference Score 行動履歴や属性データなど
ユーザに関するデータ それぞれの アイテムに 対する Preference Score を 推論する それぞれのアイテムに対するPreference Scoreがわかれば ソートして、候補生成なりリランキングなりに使える コンテンツベースや協調フィルタリングなどの アルゴリズムによって 推薦リスト作成 ここで... 相互推薦の場合 単方向のScoreだけでは 両ユーザを満足させる推薦が 実現できない -
相互推薦の場合 相互推薦を構成する2つの要素 20 20 ユーザu→ ユーザv の Preference Score 行動履歴や属性データなど
ユーザに関するデータ Preference Score を 推論する 20 20 ユーザu→ ユーザv の Preference Score ユーザv→ ユーザu の Preference Score -
相互推薦を構成する2つの要素 21 21 ユーザu→ ユーザv の Preference Score 行動履歴や属性データなど ユーザに関するデータ
Preference Score を 推論する 21 21 ユーザu→ ユーザv の Preference Score ユーザv→ ユーザu の Preference Score 相互推薦の場合 ① ①ユーザそれぞれ単方向の Preference Scoreを推論する -
相互推薦を構成する2つの要素 22 22 ユーザu→ ユーザv の Preference Score 行動履歴や属性データなど ユーザに関するデータ
Preference Score を 推論する 22 22 ユーザu→ ユーザv の Preference Score ユーザv→ ユーザu の Preference Score 相互推薦の場合 ① ここで... 2つのスコアがあるので 何かしらの方法で統合して 推薦を作る必要がある ①ユーザそれぞれ単方向の Preference Scoreを推論する -
相互推薦を構成する2つの要素 23 23 ユーザu→ ユーザv の Preference Score 行動履歴や属性データなど ユーザに関するデータ
Preference Score を 推論する 23 23 ユーザu→ ユーザv の Preference Score ユーザv→ ユーザu の Preference Score 相互推薦の場合 ① ①ユーザそれぞれ単方向の Preference Scoreを推論する 相互推薦の場合 集約関数 ユーザu, ユーザv の Reciprocal Preference Score 相互推薦の場合 集約 関数 ユーザu, ユーザv の Reciprocal Preference Score -
相互推薦を構成する2つの要素 24 24 ユーザu→ ユーザv の Preference Score 行動履歴や属性データなど ユーザに関するデータ
Preference Score を 推論する 24 24 ユーザu→ ユーザv の Preference Score ユーザv→ ユーザu の Preference Score 相互推薦の場合 ① ①ユーザそれぞれ単方向の Preference Scoreを推論する 相互推薦の場合 集約関数 ユーザu, ユーザv の Reciprocal Preference Score 相互推薦の場合 集約関数 ユーザu, ユーザv の Reciprocal Preference Score 集約 関数 ② ② 2つのScoreを統合して 双方向のScoreを算出する (手法はScore統合だけではない) -
相互推薦を構成する要素① それぞれのPreference Scoreの推論 25 25 ユーザu→ ユーザv の Preference Score
行動履歴や属性データなど ユーザに関するデータ Preference Score を 推論する 25 25 ユーザu→ ユーザv の Preference Score ユーザv→ ユーザu の Preference Score ① ①ユーザそれぞれ単方向の Preference Scoreを推論する 集約関数 ユーザu, ユーザv の Reciprocal Preference Score 集約関数 ユーザu, ユーザv の Reciprocal Preference Score 集約 関数 ② -
相互推薦を構成する要素① それぞれのPreference Scoreの推論 手法 • RECON: A reciprocal recommender for
online dating • Reciprocal recommendation system for online dating (RCF) • Latent Factor Models and Aggregation Operators for Collaborative Filtering in Reciprocal Recommender Systems (LFRR) • Hybrid Reciprocal Recommender Systems: Integrating Item-to-User Principles in Reciprocal Recommendation 26 コンテンツベース 協調フィルタリング Hybrid -
相互推薦を構成する要素① それぞれのPreference Scoreの推論 RECON: A reciprocal recommender for online dating
[Pizzato 2010] • 相互推薦のために、単方向のPreference Scoreを計算して、最終的に集約してReciprocal Preference Scoreを出すという構造を最初に導入した論文 ( 現在の相互推薦もだいたいこの構造 ) • Preference Scoreの算出方法は、コンテンツベース ◦ ユーザのプロフィール情報を利用:属性情報とフリーテキスト ◦ ユーザの過去にいいかもデータ(厳密にはメッセ依頼用の短いメッセによるコンタクトしたか どうかデータ)を利用して、ユーザが好む属性を見つけて、それに近い属性のユーザを出す • 集約関数は、調和平均 27 コンテンツベース -
相互推薦を構成する要素① それぞれのPreference Scoreの推論 CF Reciprocal recommendation system for online dating
(RCF) [Xia 2015] • Preference Scoreの推論をメモリベースの協調フィルタリングベースの手法 • コンテンツベースの手法(RECON)よりも精度高い • ただ大規模データでは、計算・時間的なコストがかかる • 集約関数は、調和平均 Latent Factor Models and Aggregation Operators for Collaborative Filtering in Reciprocal Recommender Systems (LFRR) [Neve 2019] • Preference Scoreの推論に行列分解を用いる手法 • RCFと性能は同等だが、推論の計算時間がRCFよりはるかに優れている • 集約関数は、いくつか試している 28 協調フィルタリング -
相互推薦を構成する要素① それぞれのPreference Scoreの推論 HRRS Hybrid Reciprocal Recommender Systems: Integrating Item-to-User
Principles in Reciprocal Recommendation [Neve 2020] • item-to-userのScoreとReciprocal Scoreをそれぞれ計算して集約する手法 • 集約関数は、加重平均 • オフライン評価で、コンテンツベース・協調フィルタリングベースよりも優 29 Hybrid -
相互推薦を構成する要素② 集約関数 30 30 ユーザu→ ユーザv の Preference Score 行動履歴や属性データなど
ユーザに関するデータ Preference Score を 推論する 30 30 ユーザu→ ユーザv の Preference Score ユーザv→ ユーザu の Preference Score ① 集約関数 ユーザu, ユーザv の Reciprocal Preference Score 集約関数 ユーザu, ユーザv の Reciprocal Preference Score 集約 関数 ② ② 2つのScoreを統合して 双方向のScoreを算出する -
相互推薦を構成する要素② 集約関数 双方性は相互推薦の最も複雑なところ。 一般的なアプローチは相互のPreference Scoreを集計計算すること。(他にもある) 手法 • aggregation of preferences
a. 相加平均 (Arithmetic mean) b. 相乗平均 (Geometric mean) c. 調和平均 (Harmonic Mean) ▪ RCFなどLFRR以前はこれ d. 交差非平均 (cross-ratio uninorm) 31 a b c d ACM SIGIR 2020 Tutorial - Reciprocal Recommendation: matching users w… ←[Neve 2019]での比較 -
相互推薦を構成する要素② 集約関数 双方性は相互推薦の最も複雑なところ。 一般的なアプローチは相互のPreference Scoreを集計計算すること。(他にもある) 手法と文献例 • matrix multiplication ◦
It's a Match! Reciprocal Recommender System for Graduating Students and Jobs [Javobsen 2019] • weighted mean ◦ Providing explanations for recommendations in reciprocal environments [Kleinerman 2018] • recommendation rankings ◦ scoreではなくて、推薦リストの順位を統合する手法 32 ACM SIGIR 2020 Tutorial - Reciprocal Recommendation: matching users w… -
• 単方向の評価 ◦ ①推薦が受け入れられるか? ◦ ②ユーザのポジ反応が受け入れられるか? • 双方性を考慮した評価 ◦ ③マッチしたかどうか?
指標 • Precision at N • Success rate at N • Failure rate at N • F1 • DCG at N に を推薦する場合 相互推薦の評価 33 ① ② ③ -
相互推薦の評価 (indeedの事例) • item-to-user推薦と相互推薦(特に仕事探し)の推薦だと色々違う ◦ プラットフォームで閉じなくて、実際に面接などをしてどうだったかが大切 ◦ 結果が出るまでに時間がかかりやすい (すぐに結果が出ない) ◦
商品購入くらいなら小さな負担だけど、仕事の決定は大きな賭け ◦ クリックだけで推薦の良さを測ることができるとは限らない • 定量的な評価に合わせて、定性的な評価も必要 ◦ Eye Tracking ◦ Diary Studies ◦ Usability Studies RecSys2022 HR workshopのkeynoteより https://www.youtube.com/watch?v=XsH2OYNY1sY 34 -
相互推薦のTOPIC① Popularity Bias, fairness 人気ユーザに推薦が集中すると、 • 人気ユーザの負担増加 (全部確認しないといけないので...) • 人気ユーザを推薦されたユーザは、マッチする可能性が低くなる
• 人気じゃないユーザはなかなか推薦されずに、マッチの機会が減る ユーザそれぞれにマッチできるキャパシティがあるので、推薦される回数を分散させたい ( → 公平性については、こちらのブログを 皆が幸せになるマッチングプラットフォームを目指して。「マッチング理論に 基づく相互推薦システム」 | CyberAgent Developers Blog ) 35 -
相互推薦のTOPIC② Explainability Explainability (推薦理由の提示など)は推薦分野ではよく研究されている&有効性が示されているが、 相互推薦の文脈ではあまり研究がない Providing Explanations for Recommendations in
Reciprocal Environments [Kleinerman 2018] • 推薦するときに、双方向にとっての推薦理由の説明(利益)を添える • 説明の手法: 推薦理由となるユーザの属性k個を出す (これは先行研究で有効性が示されている) • 単方向の説明と双方向の説明で比較 ◦ 推薦を受け入れるコストが高いプラットフォームでは、双方の説明をした方が良い ◦ 推薦を受け入れるコストが低いプラットフォームでは、一方的な説明の方が良い 36 -
相互推薦のTOPIC③ image ImRec: Learning Reciprocal Preferences Using Images [Neve 2020]
• Siamese networkで単方向スコア算出 + 集約 • RECON(テキストデータ) vs ImRec(画像)だと、画像の方が良い • コールドスタートにおいて、LFRR(協調フィルタリングよりも優) • 計算コストはかなりかかる Photos Are All You Need for Reciprocal Recommendation in Online Dating [Neve 2021] • Siamese network + LSTM • likeした画像とdislikeした画像データを利用 • オフライン評価でLFRR(協調フィルタリングベースの手法より優) • 計算コストはかなりかかる 37 -
① 双方向の好みのを考慮してお相手を出したい 40 例: ある男性ユーザに女性ユーザを推薦する場合 男性から女性の 興味スコア算出 女性から男性の 興味スコア算出 集約関数
双方向の好みを 考慮したスコア ↓ 推薦 男性から女性の好み -
① 双方向の好みのを考慮してお相手を出したい 41 例: ある男性ユーザに女性ユーザを推薦する場合 男性から女性の 興味スコア算出 女性から男性の 興味スコア算出 集約関数
双方向の好みを 考慮したスコア ↓ 推薦 男性から女性の好み 女性から男性の好み -
① 双方向の好みのを考慮してお相手を出したい 42 例: ある男性ユーザに女性ユーザを推薦する場合 男性から女性の 興味スコア算出 女性から男性の 興味スコア算出 集約関数
双方向の好みを 考慮したスコア ↓ 推薦 男性から女性の好み それぞれの興味スコアを算出して 最終的に集約する 女性から男性の好み -
② 好みのお相手を出せば良い??? 43 例: ある男性ユーザに女性ユーザを推薦する場合 男性から女性の 興味スコア算出 女性から男性の 興味スコア算出 集約関数
双方向の好みを 考慮したスコア ↓ 推薦 公平性の考慮 • 人気のユーザに偏ってしまうことを避けたい • 双方のスコアを集約する際に、ユーザキャパシティを考慮する • AI Labと共同研究中 • https://www.cyberagent.co.jp/news/detail/id=27897 アクティブさの考慮 • 好みのユーザだからといって、アクティブではないユーザが推薦されても、いいかもを見て 「ありがとう/ごめんなさい」をしてもらえないと意味ない • アクティブ度合いによるフィルタ ( 推薦候補の鮮度 ) 地域の考慮 • 好みのユーザだとしても北海道と沖縄では会えない • 近くの相手を推薦するようにする -
② 好みのお相手を出せば良い??? 44 例: ある男性ユーザに女性ユーザを推薦する場合 男性から女性の 興味スコア算出 女性から男性の 興味スコア算出 集約関数
双方向の好みを 考慮したスコア ↓ 推薦 公平性の考慮 • 人気のユーザに偏ってしまうことを避けたい • 双方のスコアを集約する際に、ユーザキャパシティを考慮する • AI Labと共同研究中 • https://www.cyberagent.co.jp/news/detail/id=27897 アクティブさの考慮 • 好みのユーザだからといって、アクティブではないユーザが推薦されても、いいかもを見て 「ありがとう/ごめんなさい」をしてもらえないと意味ない • アクティブ度合いによるフィルタ ( 推薦候補の鮮度 ) 地域の考慮 • 好みのユーザだとしても北海道と沖縄では会えない • 近くの相手を推薦するようにする -
② 好みのお相手を出せば良い??? 45 例: ある男性ユーザに女性ユーザを推薦する場合 男性から女性の 興味スコア算出 女性から男性の 興味スコア算出 集約関数
双方向の好みを 考慮したスコア ↓ 推薦 公平性の考慮 • 人気のユーザに偏ってしまうことを避けたい • 双方のスコアを集約する際に、ユーザキャパシティを考慮する • AI Labと共同研究中 • https://www.cyberagent.co.jp/news/detail/id=27897 アクティブさの考慮 • 好みのユーザだからといって、アクティブではないユーザが推薦されても、いいかもを見て 「ありがとう/ごめんなさい」をしてもらえないと意味ない • アクティブ度合いによるフィルタ ( 推薦候補の鮮度 ) 地域の考慮 • 好みのユーザだとしても北海道と沖縄では会えない • 近くの相手を推薦するようにする -
③ 大規模データの学習のための分散処理 46 例: ある男性ユーザに女性ユーザを推薦する場合 男性から女性の 興味スコア算出 女性から男性の 興味スコア算出 集約関数
双方向の好みを 考慮したスコア ↓ 推薦 推薦アルゴリズムの選定 • 大規模な行動ログデータを扱うことになる → 分散処理によって計算コストや実行時間を抑えられるモデルを採用 ( 推薦システムにおいて線形モデルがまだまだ有用な話 | CyberAgent Developers Blog ) 分散処理のためにDataprocの利用 • 実装はPySparkのALS • SparkのためのクラスタはDataprocで用意 以前はオンプレ環境でSparkクラスタを管理していたが 管理の手間を減らすことができた -
ユーザ推薦で実現したいことは? ユーザ推薦の施策ではそれぞれで実現したいことが異なるので、 ABテストごとに検証項目に合わせて、OECとガードレール指標を設定する e.g. • たくさんマッチしてほしい ◦ → マッチ系の指標 (マッチ平均、マッチ成功率など)
• 多くの人がマッチできるようにしたい ◦ → 多様性の指標 (推薦対象者のユニーク数など) • メッセージに繋がるマッチをしてほしい ◦ → メッセージ系の指標 47 -
協調フィルタリングベースのユーザ推薦のシステム構成 • オンプレの推論サーバー + Vertex AI Pipelines (+ Dataproc)を利用 48
オンライン処理 オフライン処理 去年半分移行したので 若干いびつな構成だけど 最適な状態を探りつつ運用中 -
協調フィルタリングベースのユーザ推薦のシステム構成 49 モデルの事前学習 (GCP) • vertex AI pipelinesでバッチ処理のパイプラインを作成 • 分散処理はDataproc
• バッチ処理だけ、去年オンプレから移行 オフライン処理 • オンプレの推論サーバー + Vertex AI Pipelines (+ Dataproc)を利用 -
協調フィルタリングベースのユーザ推薦のシステム構成 • オンプレの推論サーバー + Vertex AI Pipelines (+ Dataproc)を利用 50
Vertex AI Pipelines • Kubeflow Pipelinesをフルマネージドで実行可能 • 実装や実行などがシンプルなので、インターン生もキャッチアップしやすい → 1ヶ月インターンのインターンで分析、実装、ABテストをできる • 実験管理で、Vertex AI Experiments利用できる ( → 過去資料: マッチング理論に基づく推薦とそれを支えるMLOps開発 ) オフライン処理 -
協調フィルタリングベースのユーザ推薦のシステム構成 • オンプレの推論サーバー + Vertex AI Pipelines (+ Dataproc)を利用 51
Dataproc • Sparkなどのクラスタを実行するためのフルマネージドサービス • MFの学習で分散処理をするためにSparkを利用 • 以前はオンプレのクラスタを運用してたが、移行で、クラスタ管理しなくて良くなった オフライン処理 -
協調フィルタリングベースのユーザ推薦のシステム構成 • オンプレの推論サーバー + Vertex AI Pipelines (+ Dataproc)を利用 52
フィルタ + 候補生成 + ランキング • DSCの持つオンプレのk8s上の推薦基盤システムを利用 • 事前学習モデルを利用して、推論 • 事前の行動履歴がないユーザは、直近の行動ログを利用してベクトル生成 • 長く使われているシステム→ 現在モデルストアをアップデート中 オンライン処理 -
まとめ 54 • マッチングアプリとデータ活用 ◦ マッチングアプリにとって正解は? ( デートして付き合ってもらうこと ) ◦
(データによって) 解決したい課題例 ( ユーザ推薦、安心安全(監視)、デートプラン推薦、指標分析、施策評価など ) • 相互推薦システム ◦ item-to-user推薦と相互推薦の違い ( 互いに満足してないといけない, 推薦うまくいくと離脱、離脱すると推薦できない ) ◦ 相互推薦を構成する2つの要素 ( 単方向のPreference推定 + 集約によって双方向のPreference Score算出 ) ◦ 相互推薦の評価、その他のトピック ( popularity bias, fairness, Explainability, image ) • タップルでの活用事例 ◦ 協調フィルタリングベースの推薦アルゴリズムの一例 ( バッチ処理で単方向スコアをMFで学習+オンラインで推論 ) ◦ システム構成 ( Vertex AIやDataprocなどを利用 )