Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

SSP DSPはどういうこと? 広告 AmebaDSP オークション クリック 入稿・配信設定 広告配信 課金! 広告主 入札額 広告集めて、あるリクエストに理想な広告を決めて、SSPに入札するシステムです。

Slide 4

Slide 4 text

入札額 入札額を決めるために、CPMを知る必要です! = 売上 / インプレッション ~ 広告の価値 CTR, CVRは広告を配信しないと分からない! 過去データから推定する必要です。 機械学習使おう! CPM = CTR x CVR x 目標CPA x 1,000
 予測
 予測
 CTR = クリック率 CVR = CV率

Slide 5

Slide 5 text

AD
 サーバー
 メディア
 学習
 予測
 imp, click, cv
 予測CTR, 予測CVR 
 広告配信
 学習結果
 機械学習による予測 フィードバックループ 1. 配信 2. 学習 3. 予測値に反映する 4. 予測精度が上がる 5. もっと配信できる

Slide 6

Slide 6 text

精度悪ければどうなる? 予測CTR高すぎる -> 赤字!! 予測CVR高すぎる -> 広告主離脱!! 予測CTR, CVR低すぎる -> 勝率低い :( 精度高く予測しましょう

Slide 7

Slide 7 text

どの頻度で予測フィードバックしよう? 高い頻度! ● 精度悪くなったら早くモデ ルが調整される ● 新しい広告・枠を早く予測 結果に反映できる 低い頻度! ● 学習時間が長ければもっ と複雑・精度高いモデル を使える ● 運用・実装しやすい 弊社の場合はできるだけ高い頻度でモデルを更新している - CTR予測: 15分間隔 - CVR予測: 1時間間隔

Slide 8

Slide 8 text

更新頻度が遅すぎる例1:広告主AのCTR

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

更新頻度が遅すぎる例2:広告主BのCVR

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

どうする? ● 更新頻度を上げる ○ 15分よりも短い間隔で更新する ○ でも限界はある。あるリクエストがクリックされるかどうかの判断するた めに5分間が必要です ● 組成に直近の傾向データを考慮する ○ 広告の直近5分間のCTRなどを組成として追加 ○ モデル自体が更新されなくても、直近CTRの組成が変わるので予測 値も変わる

Slide 16

Slide 16 text

移動平均システム 計算したい:直近5分間のCTRの移動平均 あるいは:click数の移動平均 / imp数の移動平均 移動窓

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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