Developers summit 2013 2日目 参加メモ
【15-C-3】 Webと自然科学の意外な接点、先端アドテクとの必然的な出会い(吉井伸一郎氏)
- 複雑ネットワーク理論
- 行動履歴をネットワーク的に解析する
- 購入情報を有向グラフで表現する
- 同じIDをベースに二部グラフを変換
- トポロジが嗜好の類似性を表す
- 行動履歴をネットワーク的に解析する
- リターゲティングの課題
- 設定が大変
- 効果は高いが、配信数が少ない
- 行動履歴を使って、商品をオススメする
- クリックによるonline learning
【15-B-5】 SQLアンチパターン - 開発者を待ち受ける25の落とし穴(和田卓人氏)
- 他人の失敗を学ぶことで、自分の失敗を回避する
- 「とりあえずIDを振っておく」「ファイルは物理ファイルとして保存し、DBにはパスを保存するものだと思い込む」というのはアンチパターン
- アンチパターンとは問題の解決を意図しながらも、しばしば他の問題を生じさせてしまうような技法(Bill Karwin)
【15-C-6】 5msの中身を公開!〜ネット広告配信と支える職人達〜(佐藤由紀氏)
DSP
- 「適切な広告選定・入札額決定」と「高速な入札処理」どちらも追い求めることが重要
1. 適切な広告選定・入札額決定
-
- どの広告を入札すべきか
- 落札/配信するだけが目的ではない
- 成果につながらないと・・・ダメ
- いくらで入札すべきか。配信量/コストのトレードオフ
- どの広告を入札すべきか
⇒ 多目的最適化問題を解く
2. 高速な入札処理<制約条件あり>
⇒ 入札処理に使える時間は実質10ms以下
広告選定と入札額決定
1. 広告リストアップ-
- 広告データ
- リターゲティングデータ
- オーディエンスターゲティングデータ
- demographicsデータ
2. 配信不可広告の除外
-
- 配信NG 広告データ
3. 入札額の導出
-
- Frequencyデータ:誰がどの広告を何回見ているかというデータ
- 入札額算定パラメータ
4. 入札広告の決定
5msの取り組み
- データ参照がボトルネックになりがち
- アプリケーション周りのデータ参照の工夫
1. KVS(Kyoto Tycoon)の利用
-
- BLADEでは主に、Webユーザに紐付くデータ
Step1: 参照は複数台のスレーブ
Step2:更新が多い場合はストレージIO高速化
-
- 更新遅延よりも参照遅延が致命的なのでスレーブの高性能化が必要
Step3:更新負荷がきつい場合はマスタ分散
-
- キーによるパーティショニング
- Kyoto Tycoon Java用ライブラリを自作
2. レプリケーションによるローカル参照
-
- データを参照するサーバ(RTBサーバ)上にレプリケーションする
3. キャッシュ
使い分けが大事!
- 整合性やリアルタイム性をどの程度担保すべきか
- 全件キャッシュ
- 全データがまんべんなく参照されるもの
- 例) 広告配信データ
- 全データがまんべんなく参照されるもの
・アプリ起動時に全件ロード
・以後、2分ごとに別スレッドで更新
- 有効期限付きLRUキャッシュ
- 特定のデータだけ頻繁に参照されるもの
- 例) 広告枠ごとのベース入札額
- 特定のデータだけ頻繁に参照されるもの
・一定件数だけキャッシュ
・キャッシュにない場合だけマスタであるKVSから取得
4.オブジェクトキャッシュ
- KVS/DBから取得し生成したオブジェクトをJavaアプリでキャッシュ
【15-C-7】 アドテク・ターゲティング技術(太田祐一氏)
- モデル作成の流れ
- 各ユーザの情報をKVSに保存
- 各ユーザの特徴をベクトル化
- ユーザベクトルを標準化
- ユーザベクトルをMahoutでk-Means
- k-Meansした結果からRandom Forestモデルを作成
- KVSに保存
- どのKVSを採用するか
- データ形式は何にするか
- ベクトルの標準化
- 平均0, 標準偏差1にする