## 概要
インターネット広告配信システム(Zucks Ad Network)のデータ分析チーム立ちあげ要員として、以下を行なった。(公開可能な経験のみ記載)
(1) データ分析基盤の構築と維持
(2) 機械学習を使った予測機能の開発
(3) 配信ロジックの改善による収益の最大化
## データ分析基盤の構築と維持
### 目的
日々発生する配信ログをデータウェアハウスに流しこみ、常に最新のデータを好きな形で引き出して利用可能にする事
### 実装
**ETL**
S3 -> SNS -> SQS -> EC2 (Pythonで実装したワーカープロセス) -> GCS -> BigQuery
EC2インスタンスを横に並べればスケールする設計にした
BigQueryのロードJobは1時間毎に叩いている、すぐに必要になるログはStream Insert
**バッチ実行環境**
ジョブの依存解決・並列実行制御・リトライ制御はLuigiにまかせた。
バッチ処理は全てPythonで書いていたため。
### 結果
- S3に配置されるログをBigQueryに流しこむ仕組みを実装し運用した。
- 2017年現在で圧縮状態のサイズにして数TByte/day のログが流れている。
- 分析チームはJupyterからデータを使っている。
- クリック単価調整ロジック等、様々な処理がデータソースとして利用している。
- BIツールとしてre:dashを開放したら普及し、エンジニアに限らずBigQueryを利用するようになった。
その後インフラ担当者がチームにJoinしたため、開発は引き継いだ。
## 機械学習を使った予測機能の開発
1例としてクリック単価調整のためのコンバージョン率予測を挙げる
### 課題
クリック単価を決定するのに広告のコンバージョン率(以降CVRと表記)が知りたいが、広告キャンペーンが始まった時点ではクリック数のサンプルが小さく統計的にはなんとも言えない。しかしなるべく早く妥当なCVRを推定したい。広告案件は予測モデル(e.g. 線形回帰)が作れるような素性データがない。
### 実装
広告案件は短命なため、案件よりも長く生きる広告枠の情報を使った事前確率を導入した。事前分布を導入し、ベイズの定理によりクリック・コンバージョンを観測した時点の事後CVRを考える。CVR事前分布として、クラスタリングで求めたコンバージョン傾向の似た枠集合のクリック・コンバージョンを使う。
Pythonで実装 (NumPy, SciPy, Pandas)
### 結果
実績CPAが目標CPA (コンバージョンあたりの獲得コスト) に近くなり、ブレの分散も小さくなった。
## 収益を最大化するための配信ロジック開発
### 課題
媒体社の収益をもっとあげたい
広告リクエストがサーバーに届いた時にどの広告を配信すべきだろうか。
### 実装
CPAの制約の元で媒体社収益を最大化する。基本的には多腕バンディットのアプローチ。活用と探索という考えを取りいれる。既存のバンディットアルゴリズムは、最良の腕が決まるとそれを選択し続ける動作となるため、活用についてはそのまま使わない。
探索についてはeCPM (収益性の指標) の信頼上界を求め、枠に流れる広告同士でこれを比較し、上位となる見込の無い広告は探索配信を止める。アドサーバーはScala、バッチ処理はPythonで実装。
### 結果
ランダム化比較試験を用いて、広告枠をコントロール群とトリートメント群に分けて検証。
広告枠毎の収益が高くなった事を確認。
## その他
- 中途採用 (求人メディア出稿記事の作成・面接)
- 新卒採用 (面接)
- チームメンバーのプロジェクト支援
## 講演資料
スマートフォン向けインターネット広告配信システムの配信最適化(2017)
https://speakerdeck.com/hagino3000/sumatohuonxiang-keintanetutoguang-gao-pei-xin-sisutemufalsepei-xin-zui-shi-hua
オンライン広告における不正クリック検出手法と歴史(2016)
https://speakerdeck.com/hagino3000/onrainguang-gao-niokerubu-zheng-kuritukujian-chu-shou-fa-toli-shi
アドネットワークのデータ解析チームを支える技術 (2015)
https://www.slideshare.net/hagino_3000/ss-53786917
## Publication
[アドネットワークにおける広告配信計画の最適化 人工知能学会誌 : journal of the Japanese Society for Artificial Intelligence 32(4), 487-493, 2017-07](http://id.nii.ac.jp/1004/00008732/)