2019/5/23 Bayesian Models for Products Size Recommendation https://gyazo.com/56b1a232843936c2801ef1c55a0ed62b
どんな論文?
靴のサイズに基づくレコメンド手法を提案した論文
フィットしている靴は、「客の足のサイズ」と「靴のサイズ」のズレが小さい。
そんなフィットする確率が高い「靴」をレコメンドしたい。
ただし、客の足のサイズ&靴のサイズは観測できないので、潜在変数としてベイズ推定する。
オフラインの実験で、
モデルはレコメンドする靴が、「小さすぎて返品」、「フィットする」、「大きすぎて返品」でちゃんと予測できる。
潜在変数をシミュレーション上ではうまく推定できている
研究の動機
web上での注文において、「客の足のサイズ」が「靴のサイズ」と大きくズレていると、購入した後に返品されてしまう。
コストがかさむ。
うまいレコメンドがしたい。
面白かったポイント
観測できないデータへの対処
「客の足のサイズ」と「靴のサイズ」のズレが小さい靴をレコメンドしたい。
客の足のサイズ、靴の真のサイズのデータは観測できない
返品されなかった , 返品 (小さすぎ), 返品(大きすぎ) というデータは観測できる。
--> 客のサイズ、靴の真のサイズを潜在変数として、生成モデルで対処
スパース性への対処
だいたい1人あたり数点しか購入していない。
--> 事前分布で主観的に制約を加えて、対処
補足:観測できない靴の真のサイズについて (そんな重要じゃないけど)
Web上で靴のサイズって表示されないの?? --> 表示されない。
Web上で靴のサイズの表示のされ方が、「4,5,6,7,8...」となっている。
測り方はメーカーごとに独自基準をもつ。
NIKEは「4 = 23cm, 5 = 24cm, 6 = 25cm, 7 = 26cm, 8 = 27cm...」
アディダスは「4 = 24cm, 5 = 25cm, 6 = 26cm, 7 = 27cm, 8 = 28cm...」
同じメーカーでも靴のシリーズによって測り方が異なる。
〇〇シリーズは、「4 = 23cm, 5 = 24cm....」
子供〇〇シリーズは、「4 = 15cm, 5 = 16cm....」
靴の種類によって適性サイズが違う
ランニング用の靴は、大きめサイズを履くのが適性 ( ex. 商品の表示が28cmだが、客の足のサイズは26cmを想定して作られている。(逆かも!?) )
普段用の靴は、いつもどおり( ex. 商品の表示が26cmなので、客の足のサイズは26cmを想定して作られている)
なので、一応、各社に対応表はあるが、集めるのが大変&適性サイズを考慮できていない。
生成モデル
潜在変数の導入 : 客の足サイズ sと靴のサイズt、小さすぎの閾値、大きすぎの閾値、a(スケールパラメタ)
logit or probit関数において、潜在変数を係数として持ち、
{小さすぎて返品, フィットする, 大きすぎて返品} という現象発生するという生成モデルを考える。
https://gyazo.com/d6f1669b33ed0cef27ebdda8caae4e21
推定方法
・ギブスサンプリング
・変分推論
いつも通り、事後分布は尤度と事前分布の積の比例で定義。
だが、尤度はロジット、事前分布は正規分布で、解析的に解けない(共役事前分布ではないので)
Polya-Gamma分布とかいうのを組み込んで、解析的に事後分布を求められるようにしている。
そのあとギブスサンプリング等で事後分布からサンプリング。(点推定値以外の情報もほしいので)
本質ではないのでパス。
ベイズ推定することの利点
事前分布の設定で正則化的な効果がある
潜在変数である「客の足サイズ、靴のサイズの平均」に事前の情報をもたせておく。
事前分布は、主観的な正則化的な効果がある。
客の足のサイズは50cmですみたいな推定はしづらくなる。
保守的なレコメンドができる
ちょっと振り返り
「客の足のサイズ」と「靴のサイズ」の差分が小さいようなレコメンド、
客に靴がフィットする確率を推定して、高いものをレコメンドしたい。
レコメンドの方法
点推定でのレコメンド (いつもの統計学) :
フィットする確率の点推定値でのレコメンド
確信区間の下限でレコメンド (ベイズならでは):
確信区間(= 普通の統計学でいう信頼区間)をの95%下限を使ってレコメンドする。
データが少なくて推定に自信がないなら、スコアが低くなる(レコメンドされる確率が下がる、保守的)。
https://gyazo.com/68e3c3d53d24249332298e888f65e3c9
実験
2つのオフラインの実験を行った
1つ目
まず、そもそも本当に靴のサイズが{小さすぎ, フィットする, 大きすぎ}の分類ができているのか?
RFや同類のモデルのSOTAを超える性能を発揮した。
2つ目
潜在変数の推定( 客の足のサイズ、靴のサイズ) がうまくいっているのか? をシミューレションで確認
うまく推定できているみたい。
所感
(本来の目的である「適切な足のサイズによるレコメンドによって、返却率を下げたい」を確認するためのオンラインの実験は行っていなかった。)
拡張
「ユーザー特徴量や靴の特徴量のくみこみ」
「複数人が同一アカウントを使ってしまう場合」
「靴の潜在変数を縦幅*横幅とする場合」
などに拡張可能
まとめ(もう一度)
観測できない「客の足のサイズ」と「靴のサイズ」を、潜在変数として、ベイズ推定し、
「客の足のサイズ」と「靴のサイズ」のズレが小さい確率が高い靴をレコメンドする手法の提案。