Sagtani+'23 Quantifying and Leveraging User Fatigue for Interventions in Recommender Systems (SIGIR 2023)
TL; DR
オンラインプラットフォームからのユーザー離脱(Churn)の前段階としてユーザー疲労(Fatigue)を定義し、ユーザー疲労を予測する手法を提案
ユーザー疲労予測に基づいた介入を行うオンライン実験を行い、ユーザーエンゲージメントとビジネス指標の向上を確認した
インドのSNS
https://gyazo.com/c79227a64742f8c662cc71acd0eea3ca
MAUは1.8億人
Motivation
オンラインプラットフォームにおいてユーザー離脱の予測と介入戦略の設計は重要
これまで様々なユーザー離脱の予測(Churn Prediction)手法が提案されてきた
ロジスティック回帰や決定木ベースの手法
LSTMなどのSequential Model
生存モデル
しかし離脱を予測できたとしても、離脱を防ぐための介入をするには遅すぎる可能性がある
ユーザー離脱の初期兆候を検出し、介入の時間を確保したい
Key Idea
短期間の不満をユーザー疲労(User Fatigue)として新たに定義し、ユーザー離脱の初期兆候として介入施策に使用する
User Fatigue vs User Churn
ユーザー離脱とユーザー疲労の定義
ユーザー離脱(Churn):恒久的な現象(ユーザーがプラットフォームに戻ってくることはない)
ユーザー疲労(Fatigue):一時的な現象
論文中では 60日後 までに一度もプラットフォームを再訪しなかったユーザーを離脱ユーザーと定義
非離脱ユーザー(青)/ 離脱ユーザー(オレンジ)のユーザーアクティビティ
https://gyazo.com/f6f03e218dbda28757296e4e38ef2be0
左から滞在時間・エンゲージメント数・投稿閲覧数
観察
将来離脱するユーザーは実際に離脱するはるか前からアクティビティが低い
離脱ユーザーの95%信頼区間は非離脱ユーザーのそれと比較して非常に広い
離脱ユーザーは非離脱ユーザーと比較してアクティビティの変動が大きい
このアクティビティの増減は、ユーザー疲労をモデル化するためのユーザーの不満の特徴として使用できる
Problem Formulation
定式化
ユーザー疲労(User Fatigue)= 強いユーザー不満の表出 = 利用者が短期間(N日間)プラットフォームに戻らない状態
課題: Nをどうするか?
疲労をできるだけ早く検出するためにはNの値は小さい方が良い
Preliminary analysis
N日連続でプラットフォームに戻らない or NOT とユーザーの実際の離脱との相関
https://gyazo.com/9c2d2ea1243f72bba1061ae2c3824069
左)ユーザーが次のN日間ログインしないかどうかと実際のユーザー離脱の(ピアソン)相関
中)曲線の傾き
右)次のN日間ログインしない=離脱、と予測した場合の偽陽性率
観察
最初の4日間で急激に相関が強まり、その後曲線がフラットになり始める
曲線の傾きおよび離脱予測の偽陽性率も同程度のレンジで傾向が変化
Nをどのような値にするか
Fig.2の分析を考慮するとN=4が最適
User Fatigue Prediction as Binary Classification
$ \phi_{u,d} = \begin{cases} 1, & \text{if } \delta_{u,d} > d + 4 \\ 0, & \text{if } \delta_{u,d} \leq d + 4 \end{cases}
$ \phi_{u,d}: ユーザー$ uの$ d日における疲労
$ \delta_{u,d}: ユーザー$ uの次のログイン日
Experiments
Datasets & Features
ShareChatのユーザー行動データから1000万のデータ点を抽出
離脱ユーザーの割合は小さくinbalancedなデータセット
利用可能な特徴量
ユーザーのデモグラ
インタラクション、ログイン、コンテンツの履歴
他、165種類
https://gyazo.com/35614a06c20329c80065587fbb1650bb
Models
Interaction Models
インタラクションの統計量に基づくルールベースの手法
過去 𝑑 日間のインタラクションの平均値と現在の値を比較し、現在の値が過去 𝑑 日間の平均よりも低い場合ユーザー疲労(User Fatigue)状態であると予測する
Login Models
ログイン回数の統計量に基づくルールベースの手法
過去𝑑日間におけるユーザーのプラットフォームへのログイン回数が閾値を下回る場合、ユーザーは疲労していると予測する
Trained Models
Logistic Regression (LR)
Multi-Layer Perceptron (MLP)
XGBoost (XGB)
学習時の工夫
inbalancedデータセットのため重み付き損失関数を使用
ハイパラはdevセットでRandomSearchCVで探索
Evaluation Metrics
positive/negative クラスのPrecision, Recall, F1
Results
https://gyazo.com/f001f7eec9c48282a5d547618eb8860b
Trained Models > Interaction Models
Trained Models の中ではXGBoostが最も高くF1=0.65
次点でMLPとLR
年齢などのユーザー属性に加えてユーザーフィードバックとコンテンツ特徴が効いている
例:時間経過、最終7日間のログイン/インタラクション、投稿の表示、エンゲージメント、セッション数、広告でのセッション終了、投稿ごとの広告など
XGBoostで特に重要だった特徴
ads/view (number of ads per number of organic posts)
feed_quit_at_ad (whether the user quits the feed at an ad)
session_quit_at_ad (whether the user quits the session altogether at an ad)
(読み手コメント)
Login Model や Combination が意外に検討しているようにも見える
特徴量の追加によって大幅に性能が向上している
Intervention on Fatigue
ユーザー疲労スコアに基づいてユーザーが見る広告の数をパーソナライズする実験を行う
モチベーション:広告が疲労予測に大きく影響していた
https://gyazo.com/cc8814a5b7a8e7fefddca7421de4e0d9
Ad-Load Policy Design
$ \theta_u: ユーザーに表示する広告数
$ \theta_u = \begin{cases} \theta + 1, & \text{if } \phi_u < \alpha \\ \theta, & \text{if } \alpha \leq \phi_u \leq \beta \\ \theta - 1, & \text{if } \phi_u > \beta \end{cases}
$ \phi_u: ユーザーの疲労スコア
$ \theta プラットフォーム上のフィードでユーザーに表示されるデフォルトの広告数
$ 0 < \alpha < \beta < 1: 高疲労および低疲労ユーザーを判断するために使用されるしきい値
Online Experiments
異なる$ \alpha, \betaの組み合わせでAd-Load Policy Designの効果を検証
A/Bテスト設定
対象:7日間にわたって8000万人のユーザーを含むランダムなトラフィックサンプル
Control: すべてのユーザーにフィードごとのデフォルトの広告数($ \theta_u)
Treatment: Ad-Load Policyに基づく広告数
Results
https://gyazo.com/da212750f5b00e88f0fd53879ec40c4e
variant-4がユーザー満足度を維持しながら、広告クリックの数を増やしており最良の結果
variat- 4はすべての日にわたってコントロールバリアントと比較してユーザーのリテンションが統計的に有意に高い
平均1dRRは+0.07%
適切なタイミングで広告の数を減らして高疲労ユーザーに介入することでユーザー継続率が向上し、収益も向上した
Memo
感想
納得感のあるモチベーションかつ、オンライン実験できちんと結果が出ている
表のF1=0.65は問題の難しさに対しては高い印象
ニュースアプリだとどうなるのか
イントロで「ユーザー離脱予測だと遅すぎるので〜」と振っているが実験で回収されていない(ユーザー離脱予測による介入との比較なし)