広告配信の予測におけるデータの反映速度

6c4b331dcdf96d8d5269bcd60f1d33ea?s=47 tirvine
August 05, 2020

 広告配信の予測におけるデータの反映速度

6c4b331dcdf96d8d5269bcd60f1d33ea?s=128

tirvine

August 05, 2020
Tweet

Transcript

  1. 広告配信の予測における データの反映速度 Tristan Irvine 2020/08/05

  2. 自己紹介 名前: Tristan 所属: 株式会社サイバーエージェント 秋葉原ラボ AmebaDSP 学士: 物理学 最近の病気:

    脳震盪 格好いい〜
  3. SSP DSPはどういうこと? 広告 AmebaDSP オークション クリック 入稿・配信設定 広告配信 課金! 広告主

    入札額 広告集めて、あるリクエストに理想な広告を決めて、SSPに入札するシステムです。
  4. 入札額 入札額を決めるために、CPMを知る必要です! = 売上 / インプレッション ~ 広告の価値 CTR, CVRは広告を配信しないと分からない!

    過去データから推定する必要です。 機械学習使おう! CPM = CTR x CVR x 目標CPA x 1,000
 予測
 予測
 CTR = クリック率 CVR = CV率
  5. AD
 サーバー
 メディア
 学習
 予測
 imp, click, cv
 予測CTR, 予測CVR

    
 広告配信
 学習結果
 機械学習による予測 フィードバックループ 1. 配信 2. 学習 3. 予測値に反映する 4. 予測精度が上がる 5. もっと配信できる
  6. 精度悪ければどうなる? 予測CTR高すぎる -> 赤字!! 予測CVR高すぎる -> 広告主離脱!! 予測CTR, CVR低すぎる ->

    勝率低い :( 精度高く予測しましょう
  7. どの頻度で予測フィードバックしよう? 高い頻度! • 精度悪くなったら早くモデ ルが調整される • 新しい広告・枠を早く予測 結果に反映できる 低い頻度! •

    学習時間が長ければもっ と複雑・精度高いモデル を使える • 運用・実装しやすい 弊社の場合はできるだけ高い頻度でモデルを更新している - CTR予測: 15分間隔 - CVR予測: 1時間間隔
  8. 更新頻度が遅すぎる例1:広告主AのCTR

  9. CTR予測失敗で赤字になった! 粗利 軸見ないで、 情報漏洩だよ 赤字!! ある朝、急に大きく赤字になっちゃった。CTR予測急に精度悪化した?

  10. 赤字の調査の結果 ある広告主は全部の赤字を起こした 広告主Aの粗利 0円 闇 全部の赤字はある広 告主である15分期間で 発生した(11:30 - 11:45)

    興味深い。。
  11. 更新頻度遅すぎる!! 広告主Aの粗利 0円 赤字 X - モデル更新時 • 11:30にモデルが更新さ れた

    • 広告主Aはある枠に配 信したらCTR非常に高 いって思われた • 11:30 - 11:45にその条 件で配信した • CTRは高くなかった。赤 字になった。 • 11:45にこの新規情報は モデルに反映されて、赤 字が抑えれた
  12. 更新頻度が遅すぎる例2:広告主BのCVR

  13. CVR予測失敗で広告主怒った! ある朝、広告主Bはのんびりに朝ごはんを食いながら 急に大きく課金された! 広告主Bの課 金額

  14. どうなった?なぜCVR予測のせい? 8時前に合計この広告主3個クリックしかなかった。07:09にCVが発生した。それ上に CVRが33%だって思われて、予測CVR / 入札額大きく上がりました。 実にその後一個もCV出なかった。最初の一個は非常に運良かっただけです。8:15は全 部予測CVR >> CVRの暴発だった。 予測CVR

    CVが発 生した
  15. どうする? • 更新頻度を上げる ◦ 15分よりも短い間隔で更新する ◦ でも限界はある。あるリクエストがクリックされるかどうかの判断するた めに5分間が必要です • 組成に直近の傾向データを考慮する

    ◦ 広告の直近5分間のCTRなどを組成として追加 ◦ モデル自体が更新されなくても、直近CTRの組成が変わるので予測 値も変わる
  16. 移動平均システム 計算したい:直近5分間のCTRの移動平均 あるいは:click数の移動平均 / imp数の移動平均 移動窓

  17. 計算方法 普段の移動窓の移動平均の計算が重い。 - 過去impデータとtimestampを保存しないと - いつでも計算すると各timestampは5分期間に入っている かを確認する -> ストリーミングで移動平均をしよう

  18. ストリーミング移動平均 ~10秒ごとにデータを更新する 既存の移動平均値をみて、直近10秒間で発生したimp数で更新する imp5m - 5分間のimpression数移動平均 30 - 5分間に入る10秒間隔数

  19. アーキテクチャー impressionログ redis 移動平均更新機 10秒間ごとの カウンター API 機械学習 技術: golang

    Apache Flink kinesis stream
  20. 成果 この発表までにリリース間に合わなかった :( 今度聞いてください!

  21. まとめ • 広告配信に予測精度が大事です! • 予測モデル更新の間に赤字・暴発の可能性がある • できるだけ速く配信データを予測結果に反映すべき • モデル自体を十分速く更新するのは難しい。代わりに 組成に直近の情報を入れるのを考えられる