Upgrade to Pro — share decks privately, control downloads, hide ads and more …

バックエンド開発に優しい小地域推定モデリング

209f45226d810aae5e2b8616427f8556?s=47 Kumpei Yamada
November 15, 2020

 バックエンド開発に優しい小地域推定モデリング

#statistician-ja 統計勉強会#1 資料.

209f45226d810aae5e2b8616427f8556?s=128

Kumpei Yamada

November 15, 2020
Tweet

Transcript

  1. バックエンド開発に優しい⼩地域推定モデリング keywords: 広告, CVR推定, コールドスタート問題, 階層ベイズ, ⼩地域推定 2020.11.15 Statistician-ja 統計学勉強会(仮)

    #1 1
  2. About Me Kumpei Yamada @ymdpharm ML Engineer at CyberAgent, Inc.

    web広告 (ちょっと前まで) レコメンドシステム (今) 2
  3. Overview ⼩地域推定と,それをミニマルなバックエンド開発に落とし込んだ話です. 3

  4. ⼩地域推定について 突然ですが 4

  5. ⼩地域推定 Small Area Estimation 地域ごとの死亡率などを推定したいが地域によってデータ量が不⼗分な場合. ベイズモデリングの古典的なトピックのひとつ. ⺟数の共通化によるデータのプーリングと変動効果による標本平均の縮⼩作⽤を⽣み出 すことのできるモデル 久保川,2006 fig:

    Gelman and Hill 5
  6. スタイン推定量 各地域 で を観測して を推定したいとき, MLE よりも のほうが誤差平⽅和を⼩さくする. 不偏でない推定量が望ましいときもあるよね,という例. ただし,

    = x ˉ x n 1 i ∑ i w ∝ (x − n 1 i ∑ i ) x ˉ 2 i ∈ {1, .., n} x ∼ i N(θ , σ ) i 2 θ i = θ i ^ x i = θ i S ^ (1 − w)x + i wx ˉ w は実際は σ や n にも依存.また,誤差は何度もサンプリングした結果の誤差.詳しくは 『ベイズモデリングの世界 第Ⅱ 部』 6
  7. Gamma-Poisson Model ⼩地域推定 (ベイズ) の素朴な地域別死亡率モデル 丹後,1988 の⼤きさに応じて事前分布への縮⼩作⽤ が⽣じる. E[p ∣d

    , n ] = i i i β +n −1 i α+d i n , d i i α,β は MCMC 等で定数として取得して,経験ベイズ的な推定モデルとする. 7
  8. Gamma-Poisson Model 地域間の に⾮独⽴な関係を組み込んだモデルは表現できない. 線形混合モデルとしてなら共分散⾏列を⼊れたりできる. でも地域を分割して事前分布を置くくらいならできるよね? (← 今回のはなし) p i

    8
  9. 実問題 広告配信のコールドスタート 9

  10. Ad Network Product KPI メディア収益額最⼤化 広告効果最⼤化 (CV / cost) 内包される機能

    メディア収益最⼤化のオークション機能 広告効果の⽬標達成する⼊札額決定機能 時間帯予算ペーシング機能, etc. プロダクト規模 daily で数億リクエスト, 数 TB の log エンジニア 4,5 名 ∗1 ∗2 : Thompson Sampling ⽅策による探索と活⽤. : 遅れ,季節性を考慮した CVR 推定 ∗1 ∗2 10
  11. Data メディア 広告 cv engage ... group A a 1

    100 0 A b 2 1000 1 A c 3 10000 1 B a 2 5000 2 (メディア,広告) をあるグループに分割すると CVR の⽔準をうまく分離できる. 実際はこれに加えて広告フォーマットなど様々な属性値がある. 11
  12. コールドスタート問題 データ不⾜下でも正当に CVR 推定したい!! ⼩地域推定の枠組みで (メディア,広告) 粒度の CVR を推定したい. グループに分割すると

    CVR ⽔準を分離できるという知識をモデル化したい. 12
  13. モデリング・実装 13

  14. やりたいこと 各 (メディア,広告) を,縮⼩する⽅向を 共有するべきグループに分割する. グループ単位のデータ不⾜時にはさらに縮 ⼩する先を⽤意しておきたい. 14

  15. Beta-Binomial Model × 2 事後分布から期待値をとる操作を2回⾏う. はグループ, が最⼩粒度. i j alpha0,

    beta0, kappa は無情報事前分布を仮定して推定した結果の定数. 15
  16. お気持ち の従う分布は,期待値が に, 分散が(だいたい) 定数 になるように調整. E[μ ∣ i x

    ] = i α /(α + i i β ) i κ = α + i β i データ とすることで, は に対して2回計上される.(関連を無視する ちょっと強引な仮定を置く) p i,j E[μ ∣ i x ] i 1/κ x = i Σ x j i,j x i,j p i,j 16
  17. 挙動 E[p ∣ x , x ] i,j i i,j

    E[μ ∣ x ] i i = E ∣ x [ α + β + (n − x ) i i i,j i,j α + x i i,j i ] = E ∣ x [ κ + (n − x ) i,j i,j μ κ + x i i,j i ] = (E μ ∣ x κ + x ) κ + (n − x ) i,j i,j 1 [ i i] i,j = α + β + (n − x ) 0 0 i i α + x 0 i 17
  18. Production Code (Scala) 分布の更新と推定器としての関数はすべて実装で表現できる. 共役事前分布のみを⽤いたモデルなため. 事前の分析とハイパラを決めるときのみ Stan を利⽤. case class

    Amount(click: Double, cv: Double) { def positiveAmount(): Double = cv def negativeAmount(): Double = click - cv } case class BetaDist(mu: Double, kappa: Double) { def expectedValue(): Double = mu def capMu(mu1: Double): BetaDist = BetaDist(math.min(mu, mu1), kappa) def setKappa(kappa1: Double): BetaDist = BetaDist(mu, kappa1) def update(amount: Amount): BetaDist = { val a0 = kappa * mu val b0 = kappa * (1 - mu) val a1 = a0 + amount.positiveAmount() val b1 = b0 + amount.negativeAmount() BetaDist(a1 / (a1 + b1), a1 + b1) } } 18
  19. まとめ コールドスタート問題 に対して⼩地域推定の枠組みが有効. 統計モデリングでは データへの知識 を明⽰的に⾃由に表現できる. 共役事前分布 のみを⽤いたモデルはバックエンド開発にやさしい. 19

  20. 機械学習との⽐較 (おまけ) ⾼次元データを⽤いてデータ⽣成モデルと推定器を構築するアプローチが "機械学習的" と認 識しています. 機械学習はデータ依存が多くてハイカロリー 環境変化に対応するために再学習の機構が要る. DB,再学習バッチ,挙動監視,etc. の開発と保守が要る.

    他のサブシステムとのデータを介した⼲渉に気を遣う. 対照的に,今回のような統計モデリングではモデルに置いた仮定がデータへの依存を⼩さく してくれる. 20
  21. refs 伊庭幸⼈,他 『ベイズモデリングの世界』 久保川 達也,線形混合モデルと⼩地域の推定,応⽤統計学,2006,35巻,3号,p.139-161 Gelman and Hill "Data Analysis

    Using Regression and Multilevel/Hierarchical Models" 丹後 俊郎,死亡指標の経験的ベイズ推定量について,応⽤統計学,1988,17巻,2号,p.81-96 LIVESENSE DATA ANALYTICS BLOG,階層ベイズによる⼩標本データの⽐率の推定 21