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. レプリケーションによるローカル参照

3. キャッシュ
使い分けが大事!

  • 整合性やリアルタイム性をどの程度担保すべきか
  • 全件キャッシュ
    • 全データがまんべんなく参照されるもの
      • 例) 広告配信データ

   ・アプリ起動時に全件ロード
   ・以後、2分ごとに別スレッドで更新

  • 有効期限付きLRUキャッシュ
    • 特定のデータだけ頻繁に参照されるもの
      • 例) 広告枠ごとのベース入札額

   ・一定件数だけキャッシュ
   ・キャッシュにない場合だけマスタであるKVSから取得

4.オブジェクトキャッシュ

  • KVS/DBから取得し生成したオブジェクトをJavaアプリでキャッシュ


【15-C-7】 アドテク・ターゲティング技術(太田祐一氏)

  • モデル作成の流れ
    • 各ユーザの情報をKVSに保存
    • 各ユーザの特徴をベクトル化
    • ユーザベクトルを標準化
    • ユーザベクトルをMahoutでk-Means
    • k-Meansした結果からRandom Forestモデルを作成
  • KVSに保存
  • Pig