AbemaTV 広告における全方向的なデータ分析の取り組み / abematv-analysis-all-around

2016ba6b977a2e6691811fa66d5f4336?s=47 CyberAgent
February 22, 2019

AbemaTV 広告における全方向的なデータ分析の取り組み / abematv-analysis-all-around

CA BASE CAMP 2019
AbemaTV 広告における全方向的なデータ分析の取り組み

2016ba6b977a2e6691811fa66d5f4336?s=128

CyberAgent

February 22, 2019
Tweet

Transcript

  1. AbemaTV 広告における 全方向的なデータ分析の 取り組み 株式会社AbemaTV 広告本部 阿部 昌利

  2. 1.本セッションの目的 2.自己紹介 3.全方向的なデータ分析とは 4.全方向的な分析のための6つのTips 5.分析エコシステム

  3. 本セッションの目的

  4. データ分析未着手の組織に単身飛び込んだ 分析官が、1年間どのような取り組みを通じて、 組織貢献をしてきたか みなさんの、 データ分析を通じたアクションの幅が広がる きっかけとなること 概要 目的 4 /

    58
  5. 組織貢献の度合い:入社1年間で5度表彰 ※定性的で申し訳ございませんが、全社員で1%未満の希少さだと考えます。データ分析系社員できっと史上最多 • AbemaTVアワードにてベストスタッフ賞受賞 AbemaTVでの年間全体の社員表彰。6部門ある個人賞の1部門 • メディア事業部の月間ベストスタッフ賞受賞 • AbemaTV広告本部で月間MVC2度受賞 •

    20卒採用チームのベストリクルーター賞にノミネート 5 / 58
  6. 自己紹介

  7. 阿部 昌利:アベマ of アベマ • 職歴:基本的にずっとデータサイエンティスト 2011年:㈱帝国データバンク → 2014年:㈱コロプラ →

    2017年:オリックス㈱ → 2018年: ㈱AbemaTV 【イマココ】 • 最近読み返した本 『人間の建設』小林 秀雄, 岡 潔 • データ分析時の心得 当っていると思うときほど間違っていると思え https://twitter.com/ABE_Masatoshi 7 / 58
  8. 全方向的なデータ分析とは

  9. 全方向的なデータ分析 ※造語です ①提供先が全方向的 分析の提供相手を限定しない ②課題の種類が全方向的 分析で取り組む課題の幅を限定しない 9 / 58

  10. 全方向的な分析のための 6つのTips

  11. Tips 1 まず分析官の地位を確立する 11 / 58

  12. 分析の提供先 広告商品 企画部門 営業推進 部門 CM制作 部門 システム 開発部門 営業

    部門 • AbemaTV広告本部の組織概要 ※データ分析で関わった部門のみ。実際の組織図上の区分とは異なる。約80名 AbemaTV 広告本部 12 / 58
  13. 分析の提供先 データ分析で解決したい課題:デモグラを推定して広告出し分けたい、提案資料の リーチ試算を自動化したい、提案資料で使う広告費用対効果の推定値がほしい、広告効果の 良し悪しをクライアントに伝えたい、広告配信が正常かどうか可視化したい…etc 課題 山積み 広告商品 企画部門 営業推進 部門

    CM制作 部門 システム 開発部門 営業 部門 13 / 58 AbemaTV 広告本部 • AbemaTV広告本部の組織概要 ※データ分析で関わった部門のみ。実際の組織図上の区分とは異なる。約80名
  14. データサイエンティストの人数 1.5人 ※話者と、8月からJOINしたもう1人 14 / 58

  15. データ分析組織の定石 → 高優先度の課題に取り組む 15 / 58

  16. 高優先度の課題への取り組み方 データサイエンスコンビ 広告商品 企画部門 システム 開発部門 営業 部門 依頼ルートは1本化。システムの開発ロードマップの一部として、 いつまでに何をするか議論・コミット。優先順はビジネスインパ

    クトを基準に決める。目標として進捗管理 • AAAの組織概要 ※データ分析で関わった部門のみ。実際の組織図上の区分とは異なる。約80名 営業推進 部門 CM制作 部門 集約 16 / 58
  17. 分析例 高優先度の分析例 • デモグラ推定モデルの構築 • imp数予測モデルの構築 • 配信優先順のスコアリングモデルの構築 • システム仕様決定向けのシミュレーション

    • 配信結果シミュレーションツールの作成 • SQL研修 など プロダクトに直結するモデル構築と、 重要な意思決定のための分析によって、実益に貢献 https://www.slideshare.net/MasatoshiAbe/abematv-88705806 https://developer.abema.io/2018/#session_11_a 詳細は別イベントで発表しているのでご参考ください 17 / 58
  18. Tips 1 まず分析官の地位を確立する まずはビジネスインパクトの 大きい課題に取り組み、 組織の開発ロードマップの一翼を担おう! すると分析官が組織に欠かせない一員となる 18 / 58

  19. 余談 : 組織の一員としてイベントも全力投球 打ち上げでの、激辛ラーメン早食い & 足つぼマット縄跳び大会に参戦。 営業メンバーに混ざって 優勝することで、プレゼンス向上 19 /

    58
  20. Tips 2 周囲のデータへの親近感を高める 20 / 58

  21. データ分析組織の定石 → 高優先度の課題に取り組む 21 / 58

  22. AbemaTV広告本部の分析スタイル → 高優先度の課題に取り組む → 他もやれるだけやる 22 / 58

  23. やれるだけやる分析 データサイエンスコンビ 全部署と個別に向き合って、優先度を決めたタスクに 支障のない範囲で対象部署を問わず、自由に機動的に分析する 広告商品 企画部門 システム 開発部門 営業 部門

    営業推進 部門 CM制作 部門 • AbemaTV広告本部の組織概要 ※データ分析で関わった部門のみ。実際の組織図上の区分とは異なる。約80名 23 / 58
  24. 分析をやれるだけやるためのコツ → 期限を確約しない → 勝手にやる 24 / 58

  25. 分析例 高優先度の分析例 • デモグラ推定モデルの構築 • imp数予測モデルの構築 • システム仕様決定向けのシミュレーション • 商品仕様決定のための在庫試算

    • 配信結果シミュレーションツールの作成 • SQL研修 など やれるだけやる分析例 • 月曜朝会でのトリビア発表 • 広告主さま向けのCMコメント分析 • 提案資料数値のエクセル試算ツール作成 など 当然ロードマップに沿う分析の方が多い。25 : 1 程度 25 / 58
  26. これまでトリビアを17回発表。 データからの知見や分析手法を周知すると、 アイディアを考え出すメンバーが生まれる。 また、相談が増えて課題発見しやすくなる 朝会トリビア発表の内容とメリット • 業務に役立ちそうな「人気CMランキング」など データの理解を深められる 感謝の声をもらえる(例:おかげさまで追加受注できました!) •

    エンタメ目的の「日報分析や〇〇さん類似度」など 新しい手法を試してアウトプットする場にできる 26 / 58
  27. Tips 2 周囲のデータへの親近感を高める どうせEDA(探索的データ解析)したり、 新しい手法を勉強したりするなら、 結果をみんなに伝えよう! すると組織のデータ活用力が向上し、 分析の幅が広がりやすい 27 /

    58
  28. Tips 3 SQL研修は、 研修後の運用方法に配慮する 28 / 58

  29. データへの親近感が高まった結果 データサイエンスコンビ データへの親近感が高まると、 良くも悪くも相談・依頼が増える 広告商品 企画部門 システム 開発部門 営業 部門

    営業推進 部門 CM制作 部門 • AbemaTV広告本部の組織概要 ※データ分析で関わった部門のみ。実際の組織図上の区分とは異なる。約80名 29 / 58
  30. そこでデータの民主化 データサイエンスコンビ データを操ることができる人材を育成 広告商品 企画部門 システム 開発部門 営業 部門 営業推進

    部門 CM制作 部門 SQL研修 • AbemaTV広告本部の組織概要 ※データ分析で関わった部門のみ。実際の組織図上の区分とは異なる。約80名 30 / 58
  31. SQL研修(Big Query)で遭遇した問題 • よく使うカラムをJOINしなければならない • たまに使うカラムを、複雑なCASE WHEN を駆使しなければつくれない • テーブルによって時刻の形式が異なる

    • パーティションタイムで指定する日時条件と実際の日時条件が異なる データ取り込み時刻の関係で、パーティションタイムの方を広くとる必要がある • テーブルやカラムの変更、追加をキャッチアップする必要がある 生ログを操るためには中級以上のクエリ技能が必要 31 / 58
  32. SQL浸透のための対策 • よく使うカラムをJOINしなければならない • たまに使うカラムを、複雑なCASE WHEN を駆使しなければつくれない • テーブルによって時刻の形式が異なる •

    パーティションタイムで指定する日時条件と実際の日時条件が異なる データ取り込み時刻の関係で、パーティションタイムの方を広くとる必要がある • テーブルやカラムの変更、追加をキャッチアップする必要がある 対策 JOIN不要で、ほしいデータの期間をWITH句で指定すれば、 シンプルなクエリを書くだけで集計できるクエリテンプレを用意。 10名にSQL研修を行い、普段使いメンバーが2名誕生 解決! 32 / 58
  33. クエリテンプレ ・データ期間は1箇所だけWITH句で指定 ------------------------------------------------------------------------------ -- 1. データ期間入力 ------------------------------------------------------------------------------ #standardSQL WITH startdt

    AS (SELECT DATE( ‘2018-12-01’ –データ期間の開始日 ) AS sdt), enddt AS (SELECT DATE( ‘2019-01-08’ –データ期間の終了日 ) AS edt), ------------------------------------------------------------------------------ -- 2. 【ここはいじらなくて大丈夫です】データ作成 ------------------------------------------------------------------------------ log AS (SELECT DATE(CAST(FORMAT_TIMESTAMP('%Y-%m-%d %H:%M:%S', TIMESTAMP_SECONDS(time), 'Asia/Tokyo') AS TIMESTAMP)) AS dt, * FROM `project.adlog` WHERE DATE(_PARTITIONTIME) BETWEEN (SELECT DATE(TIMESTAMP_ADD(CAST(sdt AS TIMESTAMP), INTERVAL -1 DAY)) FROM startdt) AND (SELECT * FROM enddt) ), 33 / 58
  34. クエリテンプレ ・JOINの嵐で使いそうなカラムを網羅しておく ※名称はマスキングしていますがマスタとIDの数は実際と一緒です FROM log A LEFT JOIN setting ON

    A.id1 = dss.id1 AND A.id2 = dss.id2 AND A.id4 = dss.id4 AND A.id5 = dss.id5 LEFT JOIN `project.master1` B ON A.id6 = B.id6 LEFT JOIN `project.master2` C ON A.id7 = C. id7 LEFT JOIN `project.master3` D ON C.id8 = D.id8 LEFT JOIN `project.master4` cr ON A.id9 = cr.id9 LEFT JOIN `project.master5` cpm ON A.id10 = cpm.id10 LEFT JOIN `project.master6` ag ON A.id11 = ag.id11 LEFT JOIN `project.master7` adbra ON A.id12 = adbra.id12 LEFT JOIN `project.master8` ch ON A.id13 = ch.id13 LEFT JOIN `project.master9` v_ch ON D.video_id13 = v_ch.id13 LEFT JOIN `project.master10` cp ON A.id1 = cp.id1 LEFT JOIN `project.master11` cluster ON A.id14 = cluster.id14 LEFT JOIN `project.master12` conp ON A.id15 = conp.id15 LEFT JOIN `project.master13` sl ON A.id16 = sl.id16 LEFT JOIN `project.master14` sli ON A.id16 = sli.id17 LEFT JOIN `project.master15` ps ON ps.id7 = A.id7 AND ps.id16 = A.id16 34 / 58
  35. クエリテンプレ ・シンプルなクエリを書くだけOK ※あとはカラム表を用意。テーブルやカラム変更もテンプレだけ更新して対応可能 ------------------------------------------------------------------------------ -- 3. クエリ作成 ------------------------------------------------------------------------------ SELECT dt

    ,COUNT(1) AS imp ,COUNT(DISTINCT user_id) AS UU FROM log GROUP BY dt ORDER BY dt 35 / 58
  36. Tips 3 SQL研修は、研修後の運用方法に配慮する SQL研修は、研修後も取り組みやすいように、 易しい実行環境をつくろう! すると複雑なログデータしかない組織でも データ民主化を促進しやすい 36 / 58

  37. Tips 4 SQLをシミュレーションに活用する 37 / 58

  38. 取り組んだ課題の種類 •商品開発&スペック向上 •意思決定支援 •業務効率化 •採用 •広報 一般的な AI系 & BI系の分析

    ここからは、こちらについてのお話 38 / 58
  39. 取り組んだ課題の種類 •商品開発&スペック向上 •意思決定支援 •業務効率化 •採用 •広報 一般的な AI系 & BI系の分析

    39 / 58
  40. 業務効率化の例 営業提案時、CM配信条件に応じて、リーチ 数(CMを視聴するユニークなユーザ数)が どれくらいになるかを提示する必要がある どれくらいのリーチ数になるのか、過去の 配信結果から責任者が人手で予測していた 要件 従来 40 /

    58
  41. 業務効率化の例 営業提案時、CM配信条件に応じて、リーチ 数(CMを視聴するユニークなユーザ数)が どれくらいになるかを提示する必要がある どれくらいのリーチ数になるのか、過去の 配信結果から責任者が人手で予測していた SQLで誰でも高精度な値を計算可能にした 要件 従来 現在

    41 / 58
  42. ▪ツールとしての展開例 (※Big Query) 以下のように、WITH句で条件部分だけ書き換えてRUNすれば、直近の データでのシミュレーション結果(100回の中央値)を得られるクエリを作成 ------------------------------------------------------------------------------ --1. 条件入力 ------------------------------------------------------------------------------ ----A.

    配信期間---- WITH term AS(SELECT -- 配信期間を一つ指定してください。 28 AS term ), ----B. CM尺---- duration AS(SELECT -- CM尺を一つ指定してください。 60 AS duration ), ----C. デモグラ---- demogra AS(SELECT * FROM UNNEST([ 'dummy' -- 配信しないデモグラについては、[Ctrl] + [/]で除外してください ,'Teen' ,'F1' ,'F2以上' ,'M1' ,'M2以上' ]) AS demogra ), 42 / 58
  43. #standardSQL WITH dice_twice AS( SELECT ROW_NUMBER()OVER() AS row_id ,side1 ,side2

    ,side1 + side2 AS side_sum ,COUNT(1)OVER() AS nrow FROM UNNEST(GENERATE_ARRAY(1, 6)) AS side1, UNNEST(GENERATE_ARRAY(1, 6)) AS side2 ), randTable AS( SELECT simulation_id ,RAND() AS randNum FROM UNNEST(GENERATE_ARRAY(1, 10000)) AS simulation_id ) SELECT side_sum ,COUNT(1) AS cnt FROM dice_twice CROSS JOIN randTable WHERE FLOOR(randNum / (1/nrow)) + 1 = row_id GROUP BY 1 ORDER BY 1 行番号 サイコロA の出目 サイコロB の出目 2つの サイコロの合計 全行数 row_id side1 side2 side_sum nrow 1 1 1 2 36 2 1 2 3 36 3 1 3 4 36 … 34 6 4 10 36 35 6 5 11 36 36 6 6 12 36 2つのサイコロの出目テーブル:dice_twice ▪サイコロ2個の出目の合計のシミュレーション例 ※以下クエリはそのまま実行できます 以下のように、シミュレーション回数分の乱数を発生させたテーブルを CROSS JOINして、乱数を適当な条件として用いればよい 1万回、乱数を 発生させた テーブル シミュレ ーション 実行 43 / 58
  44. Tips 4 SQLをシミュレーションに活用する SQLでも乱数とCROSS JOINを 駆使すれば、実務的には十分な精度で シミュレーション可能なケースあり! ツール展開して業務効率化もできるし、 意思決定向けの分析にも便利 44

    / 58
  45. Tips 5 分析結果を採用イベントに転用する 45 / 58

  46. 取り組んだ課題の種類 •商品開発&スペック向上 •意思決定支援 •業務効率化 •採用 •広報 46 / 58 一般的な

    AI系 & BI系の分析
  47. 採用の例 • 業務で作成したimp予測のモデルを題材と してデータコンペを開催 • 採用目的で新卒向けと社会人向けで2度実施 • 当日の様子は参加者の方がブログを書いて くださったのでご参考ください u++

    さん https://upura.hatenablog.com/entry/2019/01/29/200000 こうきょ さん http://koukyo1213.hatenablog.com/entry/oresikacompe 47 / 58
  48. データコンペの工夫点とメリット1 • 競技後の解説 はまったポイントと対策を説明。 運用モデルの中身とスコアも提示 する • 実務的な評価スコアの設定 一般的な精度指標のみではなく、 実際に用いているビジネスイン

    パクトをイメージしやすい評価 指標を用いる 工夫点 メリット • ノウハウの整理&集積 はまりポイントは参加者も同様に遭遇 するので、解法の伝達は満足度向上に 寄与しやすい。平均満足度 4.9/5.0 点 • 実務場面の再現 より実務に近い形で、参加者に課題 に取り組んでもらうことで、仕事へ のイメージを醸成できる。また採用 側も一緒に働いた場合のイメージし やすく、マッチング精度が高まる 48 / 58
  49. • スコアダッシュボード作成 エンジニアの方々が作成。csvを アップロードすれば採点&ランキ ング • Auto MLの実施 DataRobotを導入テストも兼ねて 課題データに対して利用。運用モ

    デルがベストモデルと遜色ないこ とを確認 データコンペの工夫点とメリット2 • 別テーマのコンペも開催容易 正解データとスコア計算式さえ更新 すれば、別課題でコンペ開催可能 • 運用モデルの説得力維持 試していないモデル手法を参加者が 用いて、運用モデルが敗れる心配を ほぼなくせる 49 / 58
  50. Tips 5 分析結果を採用イベントに転用する 業務で構築したモデルや、現場で使っている 評価スコアを題材にコンペを実施しよう! すると、参加者にとって有意義で、 マッチングに適した採用イベントとなる 50 / 58

  51. Tips 6 研究機関に気軽に声をかけてみる 51 / 58

  52. 取り組んだ課題の種類 •商品開発&スペック向上 •意思決定支援 •業務効率化 •採用 •広報 52 / 58 一般的な

    AI系 & BI系の分析
  53. 広報の例 https://twitter.com/hoshinoseminar/status/1065555168853401600 上記含め異分野の延べ3研究室と共同研究契約締結中 or 研究テーマ議論中。広報活動にデータ分析の観点から貢献 53 / 58

  54. Tips 6 研究機関に気軽に声をかけてみる データホルダーは、 社内に専門分野を学んだメンバーがいない 未知の分野であっても、 共同研究の道を模索しやすい 54 / 58

  55. 6つのTips 1. まず分析官の地位を確立する 2. 周囲のデータへの親近感を高める 3. SQL研修は、研修後の運用方法に配慮する 4. SQLをシミュレーションに活用する 5.

    分析結果を採用イベントに転用する 6. 研究機関に気軽に声をかけてみる 上記Tipsを駆使して、幅広い提供先と多様な課題を対象に、 データ分析に取り組んできた1年間でした (その結果として組織貢献できたかなと思います) 55 / 58
  56. 分析エコシステム

  57. 1年間で形成された分析エコシステム ビジネス課題 高優先度の分析 サービスの システムに組込 データ × インプット アウトプット •

    統計モデル • 知見 • 計算ロジック • 分析系研修 意思決定の支援 アウトカム • 収益向上 • サービス改善 • 業務効率化 • 広報 シミュレーション ツール展開 共同研究 やれるだけ やる分析 採用イベントに 転用 分析 リソース増 アウトプット • ラフな場での発表 • 個別相談への対応 施策提案の材料
  58. ご清聴ありがとうございました! データ分析の、 益々の発展を祈念しまして ※謝辞:本スライドの記載事項は、AbemaTV広告本部の開発局と商品開発局の方々が、 実装・運用するケースが大半を占めます。本発表が叶ったのは、一緒に働いた皆さまのおかげです