Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

本セッションの目的

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

自己紹介

Slide 7

Slide 7 text

阿部 昌利:アベマ of アベマ • 職歴:基本的にずっとデータサイエンティスト 2011年:㈱帝国データバンク → 2014年:㈱コロプラ → 2017年:オリックス㈱ → 2018年: ㈱AbemaTV 【イマココ】 • 最近読み返した本 『人間の建設』小林 秀雄, 岡 潔 • データ分析時の心得 当っていると思うときほど間違っていると思え https://twitter.com/ABE_Masatoshi 7 / 58

Slide 8

Slide 8 text

全方向的なデータ分析とは

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

分析の提供先 広告商品 企画部門 営業推進 部門 CM制作 部門 システム 開発部門 営業 部門 • AbemaTV広告本部の組織概要 ※データ分析で関わった部門のみ。実際の組織図上の区分とは異なる。約80名 AbemaTV 広告本部 12 / 58

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

データサイエンティストの人数 1.5人 ※話者と、8月からJOINしたもう1人 14 / 58

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

高優先度の課題への取り組み方 データサイエンスコンビ 広告商品 企画部門 システム 開発部門 営業 部門 依頼ルートは1本化。システムの開発ロードマップの一部として、 いつまでに何をするか議論・コミット。優先順はビジネスインパ クトを基準に決める。目標として進捗管理 • AAAの組織概要 ※データ分析で関わった部門のみ。実際の組織図上の区分とは異なる。約80名 営業推進 部門 CM制作 部門 集約 16 / 58

Slide 17

Slide 17 text

分析例 高優先度の分析例 • デモグラ推定モデルの構築 • imp数予測モデルの構築 • 配信優先順のスコアリングモデルの構築 • システム仕様決定向けのシミュレーション • 配信結果シミュレーションツールの作成 • SQL研修 など プロダクトに直結するモデル構築と、 重要な意思決定のための分析によって、実益に貢献 https://www.slideshare.net/MasatoshiAbe/abematv-88705806 https://developer.abema.io/2018/#session_11_a 詳細は別イベントで発表しているのでご参考ください 17 / 58

Slide 18

Slide 18 text

Tips 1 まず分析官の地位を確立する まずはビジネスインパクトの 大きい課題に取り組み、 組織の開発ロードマップの一翼を担おう! すると分析官が組織に欠かせない一員となる 18 / 58

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

やれるだけやる分析 データサイエンスコンビ 全部署と個別に向き合って、優先度を決めたタスクに 支障のない範囲で対象部署を問わず、自由に機動的に分析する 広告商品 企画部門 システム 開発部門 営業 部門 営業推進 部門 CM制作 部門 • AbemaTV広告本部の組織概要 ※データ分析で関わった部門のみ。実際の組織図上の区分とは異なる。約80名 23 / 58

Slide 24

Slide 24 text

分析をやれるだけやるためのコツ → 期限を確約しない → 勝手にやる 24 / 58

Slide 25

Slide 25 text

分析例 高優先度の分析例 • デモグラ推定モデルの構築 • imp数予測モデルの構築 • システム仕様決定向けのシミュレーション • 商品仕様決定のための在庫試算 • 配信結果シミュレーションツールの作成 • SQL研修 など やれるだけやる分析例 • 月曜朝会でのトリビア発表 • 広告主さま向けのCMコメント分析 • 提案資料数値のエクセル試算ツール作成 など 当然ロードマップに沿う分析の方が多い。25 : 1 程度 25 / 58

Slide 26

Slide 26 text

これまでトリビアを17回発表。 データからの知見や分析手法を周知すると、 アイディアを考え出すメンバーが生まれる。 また、相談が増えて課題発見しやすくなる 朝会トリビア発表の内容とメリット • 業務に役立ちそうな「人気CMランキング」など データの理解を深められる 感謝の声をもらえる(例:おかげさまで追加受注できました!) • エンタメ目的の「日報分析や〇〇さん類似度」など 新しい手法を試してアウトプットする場にできる 26 / 58

Slide 27

Slide 27 text

Tips 2 周囲のデータへの親近感を高める どうせEDA(探索的データ解析)したり、 新しい手法を勉強したりするなら、 結果をみんなに伝えよう! すると組織のデータ活用力が向上し、 分析の幅が広がりやすい 27 / 58

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

データへの親近感が高まった結果 データサイエンスコンビ データへの親近感が高まると、 良くも悪くも相談・依頼が増える 広告商品 企画部門 システム 開発部門 営業 部門 営業推進 部門 CM制作 部門 • AbemaTV広告本部の組織概要 ※データ分析で関わった部門のみ。実際の組織図上の区分とは異なる。約80名 29 / 58

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

SQL浸透のための対策 • よく使うカラムをJOINしなければならない • たまに使うカラムを、複雑なCASE WHEN を駆使しなければつくれない • テーブルによって時刻の形式が異なる • パーティションタイムで指定する日時条件と実際の日時条件が異なる データ取り込み時刻の関係で、パーティションタイムの方を広くとる必要がある • テーブルやカラムの変更、追加をキャッチアップする必要がある 対策 JOIN不要で、ほしいデータの期間をWITH句で指定すれば、 シンプルなクエリを書くだけで集計できるクエリテンプレを用意。 10名にSQL研修を行い、普段使いメンバーが2名誕生 解決! 32 / 58

Slide 33

Slide 33 text

クエリテンプレ ・データ期間は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

Slide 34

Slide 34 text

クエリテンプレ ・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

Slide 35

Slide 35 text

クエリテンプレ ・シンプルなクエリを書くだけOK ※あとはカラム表を用意。テーブルやカラム変更もテンプレだけ更新して対応可能 ------------------------------------------------------------------------------ -- 3. クエリ作成 ------------------------------------------------------------------------------ SELECT dt ,COUNT(1) AS imp ,COUNT(DISTINCT user_id) AS UU FROM log GROUP BY dt ORDER BY dt 35 / 58

Slide 36

Slide 36 text

Tips 3 SQL研修は、研修後の運用方法に配慮する SQL研修は、研修後も取り組みやすいように、 易しい実行環境をつくろう! すると複雑なログデータしかない組織でも データ民主化を促進しやすい 36 / 58

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

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

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

■ツールとしての展開例 (※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

Slide 43

Slide 43 text

#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

Slide 44

Slide 44 text

Tips 4 SQLをシミュレーションに活用する SQLでも乱数とCROSS JOINを 駆使すれば、実務的には十分な精度で シミュレーション可能なケースあり! ツール展開して業務効率化もできるし、 意思決定向けの分析にも便利 44 / 58

Slide 45

Slide 45 text

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

Slide 46

Slide 46 text

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

Slide 47

Slide 47 text

採用の例 • 業務で作成したimp予測のモデルを題材と してデータコンペを開催 • 採用目的で新卒向けと社会人向けで2度実施 • 当日の様子は参加者の方がブログを書いて くださったのでご参考ください u++ さん https://upura.hatenablog.com/entry/2019/01/29/200000 こうきょ さん http://koukyo1213.hatenablog.com/entry/oresikacompe 47 / 58

Slide 48

Slide 48 text

データコンペの工夫点とメリット1 • 競技後の解説 はまったポイントと対策を説明。 運用モデルの中身とスコアも提示 する • 実務的な評価スコアの設定 一般的な精度指標のみではなく、 実際に用いているビジネスイン パクトをイメージしやすい評価 指標を用いる 工夫点 メリット • ノウハウの整理&集積 はまりポイントは参加者も同様に遭遇 するので、解法の伝達は満足度向上に 寄与しやすい。平均満足度 4.9/5.0 点 • 実務場面の再現 より実務に近い形で、参加者に課題 に取り組んでもらうことで、仕事へ のイメージを醸成できる。また採用 側も一緒に働いた場合のイメージし やすく、マッチング精度が高まる 48 / 58

Slide 49

Slide 49 text

• スコアダッシュボード作成 エンジニアの方々が作成。csvを アップロードすれば採点&ランキ ング • Auto MLの実施 DataRobotを導入テストも兼ねて 課題データに対して利用。運用モ デルがベストモデルと遜色ないこ とを確認 データコンペの工夫点とメリット2 • 別テーマのコンペも開催容易 正解データとスコア計算式さえ更新 すれば、別課題でコンペ開催可能 • 運用モデルの説得力維持 試していないモデル手法を参加者が 用いて、運用モデルが敗れる心配を ほぼなくせる 49 / 58

Slide 50

Slide 50 text

Tips 5 分析結果を採用イベントに転用する 業務で構築したモデルや、現場で使っている 評価スコアを題材にコンペを実施しよう! すると、参加者にとって有意義で、 マッチングに適した採用イベントとなる 50 / 58

Slide 51

Slide 51 text

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

Slide 52

Slide 52 text

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

Slide 53

Slide 53 text

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

Slide 54

Slide 54 text

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

Slide 55

Slide 55 text

6つのTips 1. まず分析官の地位を確立する 2. 周囲のデータへの親近感を高める 3. SQL研修は、研修後の運用方法に配慮する 4. SQLをシミュレーションに活用する 5. 分析結果を採用イベントに転用する 6. 研究機関に気軽に声をかけてみる 上記Tipsを駆使して、幅広い提供先と多様な課題を対象に、 データ分析に取り組んできた1年間でした (その結果として組織貢献できたかなと思います) 55 / 58

Slide 56

Slide 56 text

分析エコシステム

Slide 57

Slide 57 text

1年間で形成された分析エコシステム ビジネス課題 高優先度の分析 サービスの システムに組込 データ × インプット アウトプット • 統計モデル • 知見 • 計算ロジック • 分析系研修 意思決定の支援 アウトカム • 収益向上 • サービス改善 • 業務効率化 • 広報 シミュレーション ツール展開 共同研究 やれるだけ やる分析 採用イベントに 転用 分析 リソース増 アウトプット • ラフな場での発表 • 個別相談への対応 施策提案の材料

Slide 58

Slide 58 text

ご清聴ありがとうございました! データ分析の、 益々の発展を祈念しまして ※謝辞:本スライドの記載事項は、AbemaTV広告本部の開発局と商品開発局の方々が、 実装・運用するケースが大半を占めます。本発表が叶ったのは、一緒に働いた皆さまのおかげです