More Related Content
Similar to RTBにおける機械学習システムの実装と運用 (20)
RTBにおける機械学習システムの実装と運用
- 6. RTB: Real Time Bidding
• 誰がどこにどんな広告を表示するか決めるための取引市場
• 多数のSSPやDSPがやりとり
• 広告が表示されれるたびに毎回オークションを行う
6
- 18. GBDTをjsonにエンコード
決定木を表現する
sealed trait BinaryDecisionTree {
def findLeaf(features: Array[Feature]): LeafNode
}
case class LeafNode(value: Double) extends BinaryDecisionTree {
def findLeaf(features: Array[Feature]): LeafNode = this
}
case class BranchNode(
condition: Feature,
yes: BinaryDecisionTree,
no: BinaryDecisionTree
) extends BinaryDecisionTree { ... }
18
- 27. 1. 学習時: 予測精度チェック
• 学習方法を用意しても、時間が経つにつれ環境が変わり性能が
低下するかもしれない。
• 学習データの一部を使って予測精度をチェックする
毎日の学習バッチで予測精度を確認できるようになっている
27
- 28. 2. モデル取り込み時: 整合性チェック
• 学習器と予測器が別実装になってしまった。
予測値が全く同じことを確認する
• モデル学習時にテストケースを自動生成する
• 学習データの一部を使って、
入力ベクトルの値と、期待される予測値を並べたcsvを出力
• 予測モデル1個に対してcsv1個
28
- 29. validation.csv イメージ
hour, cpn_id, ad_size, domain, os, ..., expected
3, 123, 320x50, example.com, ios-7, ..., 0.0121
21, 100, 300x250, abc.com, android-4.4,..., 0.0093
12, 91, 300x250, example.com, android-4.3,..., 0.0013
...(1000行くらい)
• JSONを入札サーバーに取り込む際に毎回チェック 失敗したらアラー
ト
• 入札側での予測器の開発にも役に立った
• バリデーション通るまでscalaコードを修正すればよい
29