SlideShare a Scribd company logo
Submit Search
Upload
Login
Signup
アドネットワークのデータ解析チームを支える技術
Report
hagino 3000
Follow
Software Engineer at VOYAGE GROUP .inc
Oct. 11, 2015
•
0 likes
•
25,440 views
1
of
48
アドネットワークのデータ解析チームを支える技術
Oct. 11, 2015
•
0 likes
•
25,440 views
Download Now
Download to read offline
Report
Technology
PyConJP 2015にて発表 https://pycon.jp/2015/ja/schedule/presentation/61/
hagino 3000
Follow
Software Engineer at VOYAGE GROUP .inc
Recommended
パーソナライズニュースを支えるML業務のまわしかた@Yahoo! JAPAN
Yahoo!デベロッパーネットワーク
9.6K views
•
33 slides
プロトタイプで終わらせない死の谷を超える機械学習プロジェクトの進め方 #MLCT4
shakezo
24.3K views
•
38 slides
Amebaにおけるレコメンデーションシステムの紹介
cyberagent
12.7K views
•
27 slides
Machine Learning Casual Talks #4 ビッグデータチームを発足するにあたって気をつけておきたいn個のこと
Naoto Tamiya
6.8K views
•
56 slides
タクシードライブレコーダーの動画処理MLパイプラインにkubernetesを使ってみた
Tetsutaro Watanabe
6.8K views
•
23 slides
Retty recommendation project
Jiro Iwanaga
9.6K views
•
72 slides
More Related Content
What's hot
Gunosy における AWS 上での自然言語処理・機械学習の活用事例
圭輔 大曽根
10.7K views
•
62 slides
JapanTaxiにおけるML Ops 〜機械学習の開発運用プロセス〜
Tetsutaro Watanabe
6.2K views
•
22 slides
Sparkを活用したレコメンドエンジンのパフォーマンスチューニング&自動化
Nagato Kasaki
9.5K views
•
38 slides
ML Ops NYC 19 & Strata Data Conference 2019 NewYork 注目セッションまとめ
Tetsutaro Watanabe
3.2K views
•
25 slides
「Data Infrastructure at Scale 」#yjdsw4
Yahoo!デベロッパーネットワーク
584 views
•
15 slides
JapanTaxiにおけるSagemaker+αによる機械学習アプリケーションの本番運用
Tetsutaro Watanabe
3.2K views
•
37 slides
What's hot
(20)
Gunosy における AWS 上での自然言語処理・機械学習の活用事例
圭輔 大曽根
•
10.7K views
JapanTaxiにおけるML Ops 〜機械学習の開発運用プロセス〜
Tetsutaro Watanabe
•
6.2K views
Sparkを活用したレコメンドエンジンのパフォーマンスチューニング&自動化
Nagato Kasaki
•
9.5K views
ML Ops NYC 19 & Strata Data Conference 2019 NewYork 注目セッションまとめ
Tetsutaro Watanabe
•
3.2K views
「Data Infrastructure at Scale 」#yjdsw4
Yahoo!デベロッパーネットワーク
•
584 views
JapanTaxiにおけるSagemaker+αによる機械学習アプリケーションの本番運用
Tetsutaro Watanabe
•
3.2K views
#ibis2017 Description: IBIS2017の企画セッションでの発表資料
Yahoo!デベロッパーネットワーク
•
5.2K views
Sano hmm 20150512
Masakazu Sano
•
9K views
PyData Tokyo Tutorial & Hackathon #1
Akira Shibata
•
13.3K views
データファースト開発
Katsunori Kanda
•
9.9K views
記事分類における教師データおよびモデルの管理
圭輔 大曽根
•
10.1K views
hivemallを使って4日間で性別推定した話
eventdotsjp
•
7K views
[Japan Tech summit 2017] MAI 005
Microsoft Tech Summit 2017
•
1.3K views
kukai: 省エネ世界2位のディープラーニング・スパコン
Yahoo!デベロッパーネットワーク
•
3.3K views
『アジャイルデータサイエンス』1章 理論
Hisao Soyama
•
2.5K views
グロースハック なぜ我々は無意味な施策を打ってしまうのか
Yahoo!デベロッパーネットワーク
•
2.5K views
MonotaRO のデータ活用と基盤の過去、現在、未来
株式会社MonotaRO Tech Team
•
13.1K views
モバイルゲームのためのデータ分析
AtsushiTakada1
•
534 views
Gunosy DM #120 論文紹介 Attention and Engagement-Awareness in the Wild: A Large-...
Koji Yoshida
•
4.4K views
データ収集の基本と「JapanTaxi」アプリにおける実践例
Tetsutaro Watanabe
•
19.4K views
Similar to アドネットワークのデータ解析チームを支える技術
統合キャンペーン管理プラットフォーム概要
Go Sugihara
3.4K views
•
9 slides
Yahoo!プロモーション広告のビックデータ基盤を支える技術と今後の展望
Yahoo!デベロッパーネットワーク
1.5K views
•
57 slides
20100624 サービス説明資料 public
Members_corp
2.6K views
•
49 slides
20141003 webマーケティングエンジニアリング
Innova Inc.
543 views
•
58 slides
Ai の最新動向と今熱い chat bot による業務効率化
Katsuhiro Aizawa
688 views
•
62 slides
[Japan Tech summit 2017] MAI 001
Microsoft Tech Summit 2017
321 views
•
41 slides
Similar to アドネットワークのデータ解析チームを支える技術
(20)
統合キャンペーン管理プラットフォーム概要
Go Sugihara
•
3.4K views
Yahoo!プロモーション広告のビックデータ基盤を支える技術と今後の展望
Yahoo!デベロッパーネットワーク
•
1.5K views
20100624 サービス説明資料 public
Members_corp
•
2.6K views
20141003 webマーケティングエンジニアリング
Innova Inc.
•
543 views
Ai の最新動向と今熱い chat bot による業務効率化
Katsuhiro Aizawa
•
688 views
[Japan Tech summit 2017] MAI 001
Microsoft Tech Summit 2017
•
321 views
ディープラーニングの産業応用とそれを支える技術
Shohei Hido
•
8.1K views
Digital marketing on AWS
Yuta Imai
•
2.1K views
Tableau Conference On Tokyo 2015_ソーシャルメディアデータ活用の5つの戦略_Five Strategies Social ...
Nanae Matsushima
•
225 views
Dyna traceによるuxマネジメント
伸夫 森本
•
854 views
重要チャネルの一つLINEビジネスコネクトを活用したメンバーズのマーケティングオートメーション運用
Members_corp
•
4.6K views
2020/05/18 Alibaba cloud AIソリューションセミナー
寛之 松浦
•
154 views
Building Software Reliability through Distributed Tracing.pdf
Shotaro Suzuki
•
158 views
Gmo media.inc dev ops of own way
Dai Utsui
•
887 views
Developpers Summit2015 Autumn 講演資料
BrainPad Inc.
•
1.1K views
海外向けコンテンツマーケティングについて《インフォキュービック・ジャパン》
Rohan Yamagishi
•
1.3K views
Goalist会社概要
Goalist Co.,Ltd.
•
1.6K views
230405_Saleshub_AiDeal.pdf
AtsushiYoshimura2
•
351 views
データサイエンスを支える基盤とそのテクノロジー@WebDBフォーラム2015 #webdbf2015
Yahoo!デベロッパーネットワーク
•
2.7K views
Looops4uコンサルティング
株式会社ループス・コミュニケーションズ Looops Communications,Japan
•
943 views
More from hagino 3000
スパース性に基づく機械学習 2章 データからの学習
hagino 3000
16.5K views
•
37 slides
Cloud DatalabとBigQueryを使ったアドホックデータ解析
hagino 3000
7.8K views
•
32 slides
異常検知と変化検知 9章 部分空間法による変化点検知
hagino 3000
15.4K views
•
57 slides
Secure Code for Interactive Programming
hagino 3000
2.7K views
•
16 slides
ハイパフォーマンスブラウザネットワーキング 12章「HTTP 2.0」と現在の仕様
hagino 3000
3K views
•
26 slides
iOS WebView App
hagino 3000
14.5K views
•
48 slides
More from hagino 3000
(20)
スパース性に基づく機械学習 2章 データからの学習
hagino 3000
•
16.5K views
Cloud DatalabとBigQueryを使ったアドホックデータ解析
hagino 3000
•
7.8K views
異常検知と変化検知 9章 部分空間法による変化点検知
hagino 3000
•
15.4K views
Secure Code for Interactive Programming
hagino 3000
•
2.7K views
ハイパフォーマンスブラウザネットワーキング 12章「HTTP 2.0」と現在の仕様
hagino 3000
•
3K views
iOS WebView App
hagino 3000
•
14.5K views
Introduction of Leap Motion
hagino 3000
•
4.2K views
Where does my money go チーム発表
hagino 3000
•
961 views
PRML 6.1章 カーネル法と双対表現
hagino 3000
•
4.9K views
PRML ベイズロジスティック回帰
hagino 3000
•
5.2K views
ノンタッチUI時代とフロントエンドエンジニア (Using emotiv)
hagino 3000
•
2.8K views
NUIとKinect
hagino 3000
•
882 views
今日からはじめるKinect Hack
hagino 3000
•
5.9K views
Introduction of Kinect Hacks
hagino 3000
•
914 views
JavaScriptとSalesforceとTwitterマーケティングな話をした時の資料
hagino 3000
•
1.3K views
はじめてのChaos Proxy Viewer
hagino 3000
•
1.1K views
HTML5を使ったウェブアプリケーションの高速化
hagino 3000
•
1K views
逃亡の勧め
hagino 3000
•
1.5K views
Google App Engine で初めるServerSide JavaScript
hagino 3000
•
1.2K views
Extjs + Gears
hagino 3000
•
696 views
Recently uploaded
20230921_IoTLT_vol103_kitazaki_v1.pdf
Ayachika Kitazaki
31 views
•
16 slides
CCoE実践者コミュニティ#1_CCoEが進めるセキュリティカイゼンの旅.pptx
Tomoaki Tada
8 views
•
20 slides
IGDA Japan SIG Audio #20-1 室内・野外でのマイク収録と整音.pdf
IGDA Japan SIG-Audio
91 views
•
31 slides
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
NTT DATA Technology & Innovation
23 views
•
21 slides
20230912JSSST大会基調講演_丸山.pdf
Hiroshi Maruyama
163 views
•
58 slides
gtk4_gem_usage.pdf
ssuser0ef4681
11 views
•
6 slides
Recently uploaded
(9)
20230921_IoTLT_vol103_kitazaki_v1.pdf
Ayachika Kitazaki
•
31 views
CCoE実践者コミュニティ#1_CCoEが進めるセキュリティカイゼンの旅.pptx
Tomoaki Tada
•
8 views
IGDA Japan SIG Audio #20-1 室内・野外でのマイク収録と整音.pdf
IGDA Japan SIG-Audio
•
91 views
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
NTT DATA Technology & Innovation
•
23 views
20230912JSSST大会基調講演_丸山.pdf
Hiroshi Maruyama
•
163 views
gtk4_gem_usage.pdf
ssuser0ef4681
•
11 views
遠隔お酌IoTLT2309.pptx
Yoshiaki Ito
•
7 views
松下研究室紹介_関西大学高槻キャンパスオープンキャンパス
Matsushita Laboratory
•
22 views
テスト自動化.pdf
ssuserf8ea02
•
13 views
アドネットワークのデータ解析チームを支える技術
1.
アドネットワークのデータ 解析チームを支える技術 PyConJP 2015-10-10 Takashi Nishibayashi
(@hagino3000) 1
2.
お前誰よ ID: hagino3000 Takashi Nishibayashi Software
Engineer (Web/Mobile App) Data Scientist 見習い Shibuya.NI (休眠中)
4.
話す事 立ちあがったばかりのデータ解析チームで何をしてきた か。どこでPythonを使ってきたか。使っていないか。
5.
話さない事 • 最適化問題の証明 • 広告ブロッカーについて •
同じ広告がしつこく表示されるのなんとかしたい
6.
1. Ad Networkとは 2.
データ解析チームの業務とPython 3. 分析基盤の構築 4. 調査・実験 5. レポート
8.
Ad Networkとは • インターネットのディスプレイ広告領域において、 複数の広告主と複数のメディア(広告枠)を束ねて広 告を配信する仕組み •
メディアには収益をもたらし、かつ広告主のマーケ ティングを成功させるのが仕事。 • Zucks Ad Networkはスマートフォン用のバナー広 告に特化。現在はCPC(Cost Per Click)課金のみ。
9.
Zucks Ad Network 広告主
広告主 広告主 広告主 Web メディア Web メディア スマホ アプリ スマホ アプリ オーディエンス 入稿 広告配信 広告表示 CPC収益CPC課金 コンバージョン サイトへの流入 ゲームのインストールや課金
10.
1. Ad Networkとは 2.データ解析チームの業務とPython 3.
分析基盤の構築 4. 調査・実験 5. レポート
11.
データ解析チームのミッション • 配信ロジックの改良やデータ分析によってプロダク トの収益性を上げる事 • いい感じに配信できるような仕組みを作る事
12.
いい感じとは 広告主 他社よりも低いコストで優良な顧客が 得られる メディア 他社よりも多く広告収入が得られる オーディエンス 役に立つ・迷惑ではない 弊社
もうかる
13.
どの様な状態を目指すか • 広告主・配信業者・メディア・オーディエンス全体 の利益が最大化される状態 • 誰かが一人勝ちするような施策はまずい
14.
取り組む問題 情報の少ない新規キャンペーンについ てコンバージョン率を求める (クリック単価調節) マルチタスク学習・転移学習 広告枠と相性の良い広告を探す 多腕バンディット問題 人と相性の良い広告を予測する ロジスティック回帰 広告予算の有効活用
線形計画問題
15.
業務内容 • データ分析基盤の構築 • チーム用のAWSアカウントを作る所から運用まで •
データを使える様にする、取得するデータを増やす • 本番環境で検証しやすくする仕組み作り • 配信ロジックの差換、組み合わせ、枠指定適用 • 施策の検討 → 実験 → 実装 → リリース → 結果レポート 作成
16.
Pythonの使い所 • データの取りこみ、バッチ処理 • boto,
BigQuery Python • 調査・実験・レポート作成 • Jupyter Notebook, NumPy, SciPy, Pandas, Matplotlib, Cython • サーバープロビジョニング • Ansible
17.
Not Python • 広告配信サーバー
(Scala) • 広告表示スクリプト (JavaScript) • バッチ処理 (Gauche) • 管理画面 (PHP) • 計測サーバー (PHP)
18.
状況 • 解析チームは3人 • アドネットワーク全体ではエンジニア10人以上 •
チームができて半年程 • まだまだ坂を登り初めたばかり
19.
1. Ad Networkとは 2.
データ解析チームの業務とPython 3.分析基盤の構築 4. 調査・実験 5. レポート
20.
背景 • 何も無い所からスタート • 配信ログはS3に上がっているが…… •
簡単に見る方法は無い • データを見れるようにしないと仕事にならない
21.
方針 • とりあえずGoogle BigQueryに突っこむ •
最新のデータを使った調査実験をいつでも可能にする • 限られた人間が手で叩く程度ならBigQueryの利用金額 は気にならない • 配信システムに影響を与えないようにする • AWSのアカウントを分離し、S3経由でログを貰う • 雑に作ってまずは動かす • BigQuery周りは後々便利な仕組みが出てくると予想
22.
前処理 配信 サーバー 計測 サーバー ログ 計測 サーバー 配信 サーバー ログ S3 前処理 SNS トピック SQS キュー GCP Cloud Storage ログ BigQuery テーブル テーブル テーブル 解析チーム AWS既存AWS 通知 通知 この辺がPython 300GByte/day
23.
稼動後 • 取りこみサイズは300GByte/day程度 • インスタンスを増やせばデータ量増加には対応で きる。スケールアップでコア数増やしても良い •
台数増えてインスタンスの管理が嫌になったら Google AppEngineに引っ越せばいい • マルチコア全てを使いきれるプログラムは楽しい
24.
前処理 配信 サーバー 計測 サーバー ログ 計測 サーバー 配信 サーバー ログ S3 前処理 SNS トピック SQS キュー GCP 解析チーム AWS Cloud Storage ログ BigQuery テーブル テーブル テーブル 既存AWS 通知 通知 AppEngine 前処理 !Task Queue 通知
25.
稼動後にリリースされた物 • 便利そうな物が続々登場してた • Embulk •
BigQueryのUser Defined Function • Cloud Data Flow • Stream Insertの制限緩和
26.
プログラムから使う • pandas.io.gbq • 一瞬でPandasの世界にいける •
独自ラッパーを作成欲に勝てる (MongoDBのクエリは覚えられないがSQLを忘れる 事は流石に無い) • BigQuery Python • Pull RequestのReview/Mergeが速くて安心感がある
28.
画面で使う • BigQuery標準のWebUI • Google
Spread Sheet + Apps Script • 定期的にクエリを投げてグラフを作ったり • クエリをセルに入力して実行 → 結果がシートに 張りつく物を用意しておく • 結果が共有できて便利
29.
分散処理基盤 • 機械学習タスクを日々回すフェーズになったら何ら かの分散処理基盤が必要になる e.g.
Hadoop • 時期を見て導入予定 • 人が少ないのでフルマネージドサービス狙い • Googleから何か出てくる気がする
30.
ログ回り • 使えるようにする仕組みが無いと仕事にならない • 小さく始めてチームの状況に合せて拡充していけ ば良さそう •
今はEC2で動かしてるけど、AppEngineか CloudDataFlowが気になっている インスタンスサイズとか数とか考える事を減らし たい。
31.
ログ回り (続き) • カジュアルに始めるならBigQuery超おすすめ •
取っていないデータは当然流れてこない • 欲しければ自らアプリケーションを弄って取れる ようにする • 検証のために配信に使ったロジックはログに出す
32.
1. Ad Networkとは 2.
データ解析チームの業務とPython 3. 分析基盤の構築 4.調査・実験 5. レポート
33.
Why 実験? • 問題が解けるかわからない •
期待する動作をするかわからない • 割に合う効果が出るかわからない • 本番システムの制約下で動くかわからない • 最適なパラメータを求めたい
34.
とりあえずJupyter Notebook • もはやこれが無いと仕事ができない体に •
Pythonに限らない • GoからJava 9まで動かせる • コマンドラインツールを使った課程、結果も全て残 せる
35.
例:配信スケジュール • 問題設定 • 広告がm個 •
枠がn個 • 1時間毎に配信量を調節したい (時間枠が24) • 広告毎に予算があり、予算を越えて配信できない • 収益が最大になる配信量の組み合わせを求めたい
36.
最適化問題を解く • 配信数は連続値とみなせる、目的関数および制約が線形 • →
線型計画問題 • Pythonなら有償もしくは無償のソルバーが大抵ある • PyConJPを見ている感じではPuLPが人気 • 本番に載せる時は他の言語の方が楽な事もあるのでセオ リーは理解しておきたい
37.
DEMO
38.
この結果は…… • 解けた • しかし時間毎の期待収益(eCPM)の増減が激しい •
時間帯の期待収益の下限を制約に追加しよう • 再実験 • 続く
39.
例:多腕バンディット問題 • どの広告を配信すると収益が高いか、未知の広告に ついてはわからない • 活用と探索 •
活用:収益が高いとわかっている広告を配信 • 探索:収益が未確定の広告を配信
40.
DEMO
41.
実験と並行して
42.
• e.g. 疎結合にして一部処理はPythonで •
KVSを通した時のレイテンシ、コスト(お金)を確認 • e.g. 状態を更新し続ける必要のあるアルゴリズム • 強化学習やバンディットアルゴリズム • 全体で共有? スレッド間に留める? • 状態更新の遅延に対するロバストネス性を確認 本番システムへの実装イメージを固める
43.
1. Ad Networkとは 2.
データ解析チームの業務とPython 3. 分析基盤の構築 4. 調査・実験 5.レポート
44.
• 新しい配信ロジックを特定の枠に50%投入した状態 で、新旧ロジックによるキャンペーンの選択結果を 比較 • クリックログについて確率分布 と を比較して差が大きい枠を抽出
(異常枠) レポートの例 p(x|conversion = 1) p(x|conversion = 0)
45.
説明 クエリ 結果
46.
チームメンバへ共有 • .ipynbファイルをコミットしてGitHubにpushする • GitHubのWebサイト上でレンダリングされた状態 を見る事ができる
47.
まとめ
48.
まとめ • ログ解析基盤はチームに合わせて小さく始めてみた • BigQuery強い •
フルマネージドサービスを使って実験時間を確保 • Jupyter Notebookがあれば生きていける