SmartNewsで広告プロダクト責任者をやっております、渡部と申します。 今回はSmartNews Adsのデータサイエンスへの取り組みをご紹介いたします
詳細はAWS Summit Tokyo 2015 「SmartNews のデータサイエンティストの高速イテレーションを支える広告システム」にて当社エンジニアが登壇いたしますのでそちらもお楽しみに!
データは非常に大事
SmartNewsはData Science, Machine Learningを技術の中核とする会社です。 データはSmartNewsにおける全ての意思決定において非常に重要な要素となります。 これは広告システムであるSmartNews Adsにおいても同様です。今回は、SmartNews Adsにおいてどのようにデータを用いて意思決定しているかをご紹介いたします。
意思決定はどうするか
AB Test
繰り返しになりますが、SmartNews Adsでは全ての機能変更をAB Testし、その結果を見て全面展開するか、撤退するかを決めています。 軽微なUIの修正であっても必ずAB Testで結果を見てから適用されます確認すべき項目
もちろん詳細な項目は各テストによっても異なりますが大きく分けて以下の2点を確認します- 1) 広告のパフォーマンス
- 2) SmartNewsの各種KPIへの影響
具体的な例を挙げると、例えば広告の表示数を増やした場合、少なくとも以下の2点を確認しなければいけません
- 広告のクリック数は増えたのか?
- 記事のクリック数は減ったのか?
最終意思決定
このデータを元に意思決定を行います。 もちろん、統計的に有意だったのかどうかなどは見ておくべきポイントですが、本当にそれだけでいいのでしょうか? そのあたりについて次節で我々の考え方をご説明いたしますAB Testで大事なこと
全ての変更はテストする
私は自分を信じていません。Productを作る上で直感は非常に重要ですが、直感のみに頼ることはせず、かならずどんな変更もテストします。Cleanな状況でテストを実施することで、行おうとしているシステムの変更が全体にどのような影響があるのかを適用前に推し量ることができる事も非常に重要なポイントです。例えば、広告におけるパフォーマンスは時期や案件の状況によっても変わってきます。本番適用後に一喜一憂するのではなく、「今回適用した変更による差分はこれくらい」と理解することが非常に重要です。
そのために必要なことは、
- システムアーキテクチャー全体をtestableにするべく設計する
- テスト実施のコストを可能な限りゼロに近づける
意志決定するのは人間
では最終的な意思決定はどうするのかというポイントですが、SmartNewsでは「必ずデータが良い方を選択する」とはしていません。それでは人間が介在する必要はありません。(将来、人間が介在しなくてもこの辺りの意思決定が行われる未来が来るかもしれませんね。ワクワクしますね。)それはなぜか。
我々はスタートアップです。「イノベーションを起こすこと」でしか存在理由を見出せません。短期的にはデータ上悪い結果が出ていたとしても、時にはPassionを信じて突き進むべき時があります。
しかし、テストを通じて以下のことは確認することができます
- 想定している短期的な損失は想定の範囲内か
- 想定していない箇所の損失は起きていないか
もちろんこんな痺れるテストばかりじゃありませんが、最終的に判断をするのは人間である我々であり、我々の想いと情熱が意思決定の原動力です。
それを実現するための仕組み
高速なData Driven Iteration
これを実現するための仕組みをSmartNews Adsではローンチ早期から整備してきました。基本的なポリシーは以下になります- データを分析する人だけがデータ構造を知っていれば良い
- 配信プログラムに手を入れることなくデータ構造を知っている人が配信設定を作れる
- 特別な集計Queryを書かなくてもテスト結果が自動的に集計されてDashboardでだれでも見られる
- 誰もが簡単にデータにアクセスできる仕組み
- 誰もが高速にデータを検索できる仕組み
- データを元に計算したモデルを簡単に本番環境でテスト出来る仕組み
- テスト配信結果を自動的に集計して可視化する仕組み
これを実現する技術基盤
ふわっとした話ばかりで恐縮です! 実際にこれがどのような技術で動いているかはAWS Summit Tokyo 2015 「SmartNews のデータサイエンティストの高速イテレーションを支える広告システム」にて当社エンジニアが登壇いたしますのでそちらをお楽しみに! 続きは会場で!空気なんか読んでる場合じゃない
最後にちょっとだけ宣伝です。 データサイエンスは試行錯誤の連続です。したがってこのIterationを超高速に回し続け、try & errorを兎に角続ける必要があります。 そこで、SmartNews Adsの開発チームでは“20%ルール”というルールを設けています。どっかで聞いたことがある?私もそんな気がしますが、内容は結構違います。ルールの概要は以下になります
- 全てのエンジニアはProduction環境でユーザー全体の20%を上限として自由にテストすることができる
- 上司への許可を取る必要はないが、チームへの周知は必要
なぜ上司の許可を取る必要がないのか?
SmartNewsではエンジニアとテクノロジーを信じています。我々の信じているエンジニアが情熱を持って取り組みたいと思ったチャレンジを、規制するよりも推奨することがSmartNewsを前に進める原動力になると信じています。それにもし仮にテスト結果が悪かったとしたら、その場でテストを止めることができます。自動的に集計されるDashboardがありますので。
計画よりも実行! 空気を読んで遠慮してる場合じゃない! エンジニアの力を解き放つのは今!!
SmartNewsでは力を解き放ちたいエンジニア、データサイエンティストの方を積極採用中です! http://about.smartnews.com/ja/careers/
※ 上述の20%ルールは広告開発チームで勝手に始めた制度で、正式な人事上の制度ではありません。 形式を整えるよりもまず動いてしまう、そんなスタートアップ精神のほうが楽しいじゃん!と思っています。