2018-01-09

AdKDD & TargetAd 2017 まとめと感想

改めて発表内容に目を通し直したのでまとめます。 KDD2017 2日目のWorkshop Dayはネット広告分野のワークショップであるAdKDD & TargetAd 2017に参加していました。AdExchange, DSP, Advertiser, Publisherと様々な立場での課題と解決策が聞けて面白かった。ペーパーと発表スライド、動画は以下のサイトから辿れます。

Paper: Optimal Reserve Price for Online Ads Trading Based on Inventory Identification

  • AdExchangeの立場でRTBのReserve Priceの最適化
  • DSPが高額入札してくる枠で1st Priceと2nd Priceが乖離している時にReserve Priceを引き上げる事ができれば媒体収益を高められる
  • これを実現するためにDSPが高額入札してくる枠 (High-value inventory)の識別器とDSPの入札価格の二つの予測器を作った
  • High-valueかどうかの判定は判定機をネストする事でFalse Positiveを下げる
  • 実験ではYahoo ads exchange (YAXR) のデータでシミュレーションをして8%の収益リフトを確認した
やりたくなる気持ちはわかるが、オークショナーがPublisherの味方をすると1st priceオークションに近づいていくので入札側としては嬉しくない奴。
CPAの単位は明示されていないが10以上をHigh CPAと定義していたのでUSDだと思われる。どうでもいいけどReserve Priceよりも自分の回りだとFloor Priceの方が良く使われるのは何でだろう。

Paper: MM2RTB: Bring Multimedia Metrics to Real-Time Bidding

  • RTBの新しい枠組みを提案
  • 広告掲載ページのコンテキストにマッチした広告が表示されるようにする事で、長期的な広告掲載媒体の価値を高められるとしている
  • Viewabilityは2013年から増えていないらしい

Paper: Data-Driven Reserve Prices for Social Advertising Auctions at LinkedIn

  • LinkedInの広告枠におけるRTBのReserve Priceの最適化をした
  • 既にリリース済
  • CPCの中央値の上昇率、入札金額の中央値の上昇率を指標として効果を測った

Paper: Cost-sensitive Learning for Utility Optimization in Online Advertising Auctions

  • RTB入札に使うコンバージョン予測モデルの損失関数と効用(DSPの収益)を関連づける
  • モチベーション: 損失関数にビジネスインパクトの影響を盛りこみたい
  • 高CPA案件のコンバージョン予測精度向上は収益へのインパクトが大きいので、損失をCPAで重み付けする。(CPA配信が前提になっている?)
  • オフライン実験はCriteoのPublic Datasetを使用
  • オンライン実験は10億以上のIMPでA/Bテストした結果2%のROIの上昇となった

Invited Talk: Randall Lewis (Netflix)
Title: Incrementality Bidding & Attribution

  • Netflixの広告効果の因果効果推定と、実務で継続的にこれを行なうための工夫の話
    • 広告主は広告効果の計測に苦労しているとの事
  • 広告掲載を止めたら広告流入の減少と同じボリュームの検索流入が増えた事があった
    • 広告の効果があるように見えたのはセレクションバイアス
  • IV法でTreatment Effectを推定。広告による増分と効果の減衰をモデル化する事で複数の広告の効果をモニタリングできる
機械学習と因果効果推論の組み合わせは面白い。ネット広告の効果測定と言ったら配信業者の立場だとRCTやれば良いってなるけど、広告主の立場だとRCTができないからIV法を使うんですね。

Invited Talk: Susan Athey (Stanford)
Title: Machine Learning & Causal Inference for Advertising Effectiveness

  • 機械学習と因果推論の違いと、両者の手法を織りまぜた手法の紹介
  • Doubly Robust Methods
  • 多次元におけるAverate Treatment Effectの推定
  • 機械学習の手法を因果効果推定に取りいれる
  • 機械学習はパーソナルの予測のパフォーマンスが良いが、バイアスが入っているとの事
あまり聞きとれなかった……

Paper: Blacklisting the Blacklist in Online Advertising

  • ここで言うブラックリスト = パブリッシャーがAdvertiserをBANしているリスト
  • BANされている所に対して入札する際の予測タスクの計算コストがもったいない
  • オークションのWin Rateが異常に低い所には入札を止める。
  • 結果、入札を14%減らしたがIMPが6%増えた。さらにPacing Engine(予算消化速度調整)が良い感じになった。

Paper: Anti-Ad Blocking Strategy: Measuring its True Impact

  • Anti-Ad Block (AdBlockを解除しないとページを見せないよ、って奴) の効果ってどう計測したらいいのか? という話。
Ground Truthが無いの大変そう。Adobeの人がなんでこんな事やってるんだろうと気になった。

Paper: An Ensemble-based Approach to Click-Through Rate Prediction for Promoted Listings at Easy

  • Contextualな素性を使ったモデルとHistoricalな素性を使ったモデルのアンサンブルによるCTR予測
  • 訓練データをCold(IMPが少ない時点のデータ) とWarmに分割して、前者はContextualなモデルの訓練に使う
  • Contextualなモデルはコールドスタート時にうまく動く
  • アンサンブルモデルは2つの予測器のoutputとlog(imp数)を入力とする。

A Practical Framework of Conversion Rate Prediction for Online Display Advertising

  • RTB入札におけるCVR予測について、自分がオークションに勝ったIMPしか結果を観測できないため真のCVRと観測したCVRに差が出る
  • これはCVRのOver Predictionの原因となり、Over Predictionはビジネスの損失となる。(CPA配信において)
  • 訓練データのCVRにはバイアスが含まれる、これを除去したCVR予測値を求める方法を開発した
  • キャンペーン開始時にはGDBTで予測すると同時に、予測値が信頼できる素性のサブセット(Data-Driven Tree)を育てていく、次のフェーズではData-Driven Treeで予測を行なう
自分達が配信する前からコンバージョン通知は無差別に飛んでくるので、それを使えばコールドスタートできる。みたいな事が書いてあって裏技かよって思った。
「観測したCVR > 真のCVR」の証明があるけど、「リクエストに対する入札金額が対数正規分布する」という仮定はどこから出てきたのだろう。バイアスが除去できる理由がよくわからなかったので後でちゃんと読む。

Paper: Deep & Cross Network for Ad Click Predictions

  • DNNによるCTR予測
  • Feature Engineering不要
  • 既存のDNNによる手法 (Deep Crossing) よりもメモリ使用量が少ない
予測性能が良いという点よりも、素性エンジニアリング不要という点のメリットが大きいなと感じた。

Paper: Profit Maximization for Online Advertising Demand-Side Platform

  • DSPの収益を最大化するRTB入札戦略
  • 目的関数の約定金額の部分が非凸になるので、ラグランジュ緩和する
広告主予算と消化速度(期間?)の両方を制約としているので運用の使い勝手はかなり良さそう。ただ、予めInpression Typeの出現パターンを列挙しないといけないのがつらいのでは。理想の入札ポリシーってこんなんだろうなと思ってた奴が出てきて、かつ非凸になる問題をうまく緩和していて感動した。

Invited Talk: Alex Smola (Amazon)
Title: Users & Time

  • LSTMやRNNの話にはじまり、サービスの利用ユーザーが死んでいるか生きているかの判定手法の話へ
  • Survival Analysis 101, Cox Model
  • すぐに帰ってくるか、翌日帰ってくるかアプリ?によって傾向は異なる
  • Recommender systems, not recommender archaeology (考古学じゃない、未来を予測せよ)
  • Netflix public dataset is wrong
    • 映画が賞を取るとpredicted ratingが上がる全然consistentじゃない
    • 賞を取ってから数ヶ月で下がる
  • Sequence modelはUser return times、Recommender system、User activityの予測に使える

Invited Talk: Thorsten Joachims (Cornell)
Title: Learning from Logged Interventions

  • バンディットアルゴリズムで生成されたデータからのバッチ学習
  • Selectionバイアスがかかっている事に注意 (選択は自分がしている)
  • これを学習する

Paper: Attribution Modeling Increases Efficiency of Bidding in Display Advertising

  • RTB入札のEVB(Evaluated Value Bidder)は、非繰り返し2ndプライスオークションの際には最適
  • だが同じオーディエンスに繰り返し表示する前提ではさらに改善できる
  • アトリビューションモデルを使ったRTB入札ポリシーを提案
  • 以前のクリックの影響を考慮してIMPの価値を割引く
CriteoなだけあってHashing Trick推し

Paper: Ranking and Calibrating Click-Attributed Purchases in Performance Display Advertising

  • Ordinal regression is a good strategy for ranking
  • Sigmoid function is not good for small probability
最後の発表、このあたりになると疲れてあまり聞きとれませんでした

このエントリーをはてなブックマークに追加

2017-11-07

オライリーから「仕事ではじめる機械学習」という本を出しました

オライリーから「仕事ではじめる機械学習」という本を出しました。技術書典2で頒布した同人誌がベースで引き続き @chezou, @tokoroten 両氏と共著です。実務者向けの内容で対象読者は情報システム開発現場のエンジニアです。


私は同人誌版で「ゲームの試合結果データのマイニング」の章を書きましたが、今回はより実務的な内容として効果検証について書いています。主に仮説検定と因果効果推定です。内容はChezouさんの告知を参照していただくとして、補足とバックグラウンドを紹介します。

お前だれよ

インターネット広告配信システムの配信ロジックの開発をしています。2015年まではデータを集める所から分析基盤の構築を経てBIツールの導入、バッチ処理環境へのワークフローエンジン投入といった足回りの仕事がメインでした。今は足回りが整ってきたのもあり、その上で動かす機械学習モデルの訓練バッチやアプリケーション側の予測処理を実装しています。

特徴

エンジニアがプロジェクトをどう進めるかといった内容ですが、著者が3人ともプロダクションに投入してなんぼの実務者である事から、稼動環境としてHadoop Familyのプロダクト名がさらっと出てきたり、現場であった怖い話が随所に出てきます。アルゴリズムやモデルの詳細については主題から外れているため解説はありません。

書けなかった事

ワークフローエンジンやバッチ処理の設計については時間が許せば書きたかった所です。
機械学習が絡むバッチ処理は例えば複数の予測器を訓練した後にそれぞれの予測結果を入力として凸最適化を行ない結果を保存といった、依存関係をもった複数のタスクが連携する物となります。また、本番で利用しているモデルの他にハイパーパラメータを変えた物や新しく検証したいモデルの訓練・評価も日々のバッチ処理に載せたくなるでしょう。訓練の前に必要な中間テーブルの作成やデータの前処理、後に続くの評価レポートの作成やモデルのシリアライズも含めると複雑なパイプラインになりがちです。タスク毎に必要な計算資源も異なるため、一つのサーバーで全てを終らせるよりも複数の実行環境*1を組合せて利用した方が効率的です。
ワークフローエンジンを利用する事でタスク間の依存解決や実行順序・並列実行の制御をまかせる事ができます。障害発生時の影響範囲の把握・リトライ・リカバリが容易になる点も運用面で大きなメリットもあります。

一体何を供養していたのか

技術書供養寺の時に内容告知を書いていなかったのでこの機に解説します。同人誌版はボツになったデータ分析ネタを集めようという事で、私はElo ratingやStarCraftの勝敗予測手法を紹介し、スプラトゥーンのブキの強さ分析を行ないました。分析はstat.inkのデータを使いBradley–Terryモデルにあてはめて最尤推定でステージ毎のブキの強さを求めるといった内容です。ダイナモローラーが強かったですね。これは Statistical Emerging Pattern Mining with Multiple Testing Correction のデータ集めを手伝った際に行なった分析です。

大変ありがたい書評

一方で「整形されていないログとかはあるんだけど、ここから特徴エンジニアリングをどうやればいいの?」とか「リアルタイム予測に耐えうるような予測モデルと特徴ベクトルってどうやって作ってどこに保持すればいいの?」とか「コールドスタート問題は結局どうやって乗り換えればいいの?」といった具体的かつ詳細な実現方法をこの書籍で身につけるには、ちょっと難しいかと思います。
確かにこれらの点は自分も自信が無く、これがベストと言いきれないので知りたい。コールドスタートは事前分布を仮定して事後分布を更新していく方法だとか、バンディット使ったり、データが無い所は決めうちロジックが走るとか、割り切り面も含めて。応答速度の兼ね合いで訓練処理と予測処理の言語が異なるケース*2はどうしてるんでしょうね皆さん。


媚を売られてしまった。
個人的にワークフローフレームワークは嫌いで機械学習プロジェクトでは使いたくないとまで思っているんですが、まあ便利なので書籍内で取り上げてもらって筆者のプロの方々がどう考えているのか知れれば良かったなあ〜みたいな感じなので
ワークフローエンジンについては上に書いた通りです。今はAWS Batchのようなクラウドサービスで機能が提供されているので導入しやすいかもしれませんね。導入したらしたで単一障害点になる奴なので、可用性の担保をまかせられると安心。
AWSの新しいサービスを触る時間でKaggleをやったほうが良いのでは?
すごい良くわかる。ここは自分もどうすべきか悩んでいる所。ただチームメンバーのサポートがあるなら、リリースするのに何が必要か抽象レベル*3での理解があれば良いかも。仕事を振る側からするとKaggleっぽい仕事に集中したいならKaggleっぽい仕事を切り出すし、ビジネス寄りがやりたいなら要件定義をまかせるので、チーム内でのスタンスを明確にするとやりたい仕事が降ってくるとは思う。

------
*1: GCPを使っているならGCE・BigQuery・Cloud Dataflow・Cloud Dataprocあたりの組み合わせ
*2: 自分は予測処理を自前実装できるロジスティック回帰等を使いがち
*3: 監視やスケジューラー、計算資源の確保といった単位

このエントリーをはてなブックマークに追加

2017-08-28

KDD2017感想 Tutorial Day: Asking the Right Business Questions?

データマイニングの国際会議であるKDDに参加してきました。まずは1日目のチュートリアルの感想です。

From Theory to Data Product: Applying Data Science Methods to Effect Business Change. 

http://www.t4g.com/kdd2017/

ビジネス現場におけるデータ分析プロジェクトをいかに回すかといったテーマ。T4Gというカナダのコンサルティング企業が実際に使っているフレームワークに沿った内容で、次の3部構成。
  1. プロジェクトの初動に何をすべきか。業界とトップダウン or ボトムアップで何が変わるかのケーススタディ
  2. 具体的なアクション導き出すための「Right Question」
  3. アジャイルプロセスを応用した意思決定
講義に加えてそれぞれの課題が渡されてグループディスカッションを行なった。どちらかといえば、現場リーダー向けの話。

参加者は20名程度で他のチュートリアルと比較すると少なかったが、内容に対する反応からほとんどは実務者である事が見てとれた *1。そして常日頃から「実装に集中したいから、腕の良いプロジェクトマネージャーが降ってこないかな」と思っている自分にとっては得るところが大きかった。特にプロジェクトの具体的なアクションを決める際の「Right Questionの導出」のくだりが印象的だった。そこからActionableで実行すると計測可能な結果が得られる物とせよ、という話に続く。

プロジェクトで具体的に何をするか(作るか)を決めるのは難しい。所謂データ分析チームで仕事をはじめて2年経つが、半年以上かけて開発に取り組んだ予測器が実は不要だったケース、課題解決のアプローチを間違えたまま進めて成果に繋がらなかったケースを見てきた。
例えば「事業の粗利率が低い」みたいな課題があったとして、タスクをKaggleの出題レベルの粒度まで分解して落とし込むには課題解決のための道筋と具体的なアクションを決める必要がある。しかしこの能力はKaggleのランキングの様に可視化されない物であるし、能力のある人間の採用も難しい気がする。そもそも職場でコンサルっぽい職種の採用をしていないので、迷いなくコードを書くためには自分ができるようになる必要があるなと思った。

参考: T4G: Are You Asking the Right Business Questions?

A/B Testing at Scale

http://exp-platform.com/2017abtestingtutorial/

午後はMicrosoftのプロダクト改善にまつわるA/Bテストの話。月に1,000個のA/Bテストを回せるシステムがどうなっているかというと、いろいろ凄かった。
実験対象のユーザー群の抽出がシステム化されており、過去のデータを使ってA/Aテストをして即座に実験が開始できるようになっていたり。ユーザーを保護するために結果の悪い実験のアラート通知と自動停止。相互作用のある実験を同時に流すとテストにならないため、実験同士の相互作用を検出したり。
システムの話だけでなく、プロダクト改善のためには何を指標として計測すべきかという根本の話もあって良かった。

本会議のセッションでも統計的検定やp値ハック、因果推論とからめた施策の効果測定ネタがあったので、データマイニング界隈でホットなトピックの一つなのだと感じた。

2日目の感想、AdKDDのまとめに続きます。

----
*1: グループ課題の問題文の1行ごとに「Flequently……」と呟く人がいて面白かった

このエントリーをはてなブックマークに追加

2017-08-01

人工知能学会誌に「アドネットワークにおける広告配信計画の最適化」という記事を寄稿しました

人工知能学会誌の特集「広告とAI」に仕事でやっている事について寄稿しました。



詳しくは職場のブログに。

このエントリーをはてなブックマークに追加

2017-07-12

DATUM STUDIO Conference 2017で講演してきました

お仕事の事例紹介になります。

発表といえば普段はエンジニア向けの内容になるのですが、今回はエンジニアはほぼいないだろうという見込みがあったので悩みました。 結局はいつもと変わらないスタイルに、後で面白かったと感想がもらえて安堵しました。


正直、他のスピーカーの経歴と肩書が凄くてびびった。

発表スライド

感想

普段Web業界の事例ばかり見ているので、映画の興行収入の予測であったり、養殖している魚の成長予測といった話は新鮮だった。 中古車の買い取り業務、魚の養殖の餌やりといった職人の勘の世界だった物が予測モデルに置き換えられていく過程は面白い。

自分はエンジニアなので分析といえばPythonやR使ってガリガリやるイメージが強かったが、統計モデリングソフトを使ってコードは書けないけど統計はわかるという人が分析しまくってる世界があるのを知れてよかった。

このエントリーをはてなブックマークに追加