152 Views
July 27, 18
スライド概要
Developers Summit 2018 Summer B-3 のセッション資料です。
2023年10月からSpeaker Deckに移行しました。最新情報はこちらをご覧ください。 https://speakerdeck.com/lycorptech_jp
加速するビッグデータ社会 ~Yahoo! JAPANにおけるデータ利活用の事例とエンジニアの歩み~ 2018年7月27日 ヤフー株式会社 メディアカンパニー プラットフォーム統括本部 田地 将也 Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
このセッションについて ・ランチセッションですので、 お弁当を召し上がりつつ お気軽に聞いてください! ・この資料は後ほどSlideShareで公開予定です https://www.slideshare.net/techblogyahoo/ 2
自己紹介 田地 将也 (@otajisan) 2007.4 ~ 中小SIer 2012.5 ~ ヤフー株式会社 Yahoo! JAPANトップアプリ PUSH開発チーム リーダー Scrum Alliance 認定スクラムマスター 主な活動 社内 ・ Yahoo! JAPANトップページBE開発 ・ Yahoo! Sonomy開発 ・ 学生向けハッカソンイベントHack U企画 社外 ・ アジャイルひよこクラブ運営 3
Intro Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
Intro ・ 近年、「ビッグデータ」という言葉は身近となり、 その利活用についても様々な企業で推進されている ・ そして、これらのデータを実際のプロダクトにどう活用するか?が 重要となってきています ・ このセッションでは、私が入社以来、身近で実際に見てきた Yahoo! JAPANトップページ周りのデータ利活用の事例と、 私とデータの関わり方の変化等を紹介します 5
アジェンダ ・ Yahoo! JAPANトップページの レコメンドの歴史 ・ Yahoo! JAPANトップアプリの データ活用事例 ・ BEエンジニア x データサイエンティスト の協業について 6
トップページの レコメンド ~サービス一覧~ Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
トップページのレコメンド PC版トップページの開発 (2012年頃) ・ 当時はPC版のトップページが主流 ・ 試験的に「主なサービス」の一覧に レコメンド機能を適用した ・ これが私とデータサイエンスの初めての出会い 8
トップページのレコメンド サイエンスチームが専用のAPIを提供 ・ トップページのサービス一覧のために、 専用のレコメンドエンジン & APIを開発 ・ トップページからはそのAPIを叩く ・ APIからは、サービス名とスコアの一覧が返る ・ e.g. ) ヤフオク 0.45 ブックストア 0.38 ・ ・ ・ トップページ開発チーム 利用 トップページ特化の レコメンドAPI 提供 サイエンスチーム 9
トップページのレコメンド この当時思ったこと ・ 利用者(サービス)側は特にレコメンドの中身を意 識することなく、 APIを叩くだけで利用できた ・ その分、レコメンドの中身 (どんなことをやっているのか)を 理解してはいなかった(理解する必要が無かった) 10
レコメンド (パーソナライズ) の、実験的な取り組み Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
実験的な取り組み ・ トップページにもっとデータ利活用を! ・ 実験的な取り組みを実施 ・ スマート版の事例 ・ Yahoo! Sonomyの事例 12
トップページの レコメンド2 ~スマート版トップページ~ Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
トップページのレコメンド2 スマート版トップページの開発 (2013 ~ 2014年頃) ・ スマート版(タブレット & スマートフォン)の 開発 ・ パーソナライズの力を使って、 グリッド表示やタイムライン表示の最適化を 目指した 14
トップページのレコメンド2 スマート版トップページの開発 (2013 ~ 2014年頃) ・ SNS上のバズり具合と時間減衰を考慮した フルスクラッチの関数(つらい)で実現 スマート版開発チーム 自前開発 & 利用 フルスクラッチの レコメンドAPI 15
トップページのレコメンド2 この当時思ったこと ・ パーソナライズをするとき、 どんなことを考えれば良いかが 少しは分かった ・ そして、気合ドリブンのロジックで 作るのは難しい(つらい。バグる) ・ 正直、専門家の力を借りたいところ 16
Yahoo! Sonomyの開発 Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
Yahoo! Sonomyの開発 Yahoo! Sonomyの開発 (2014 ~ 2015年頃) ・ 位置情報 x 興味関心を使ったパーソナライズ 18
Yahoo! Sonomyの開発 Yahoo! Sonomyの開発 (2014 ~ 2015年頃) ・ トップページのサイエンスチームが開発する パーソナライズエンジンに手を入れて Sonomy用のAPIを開発 ・ カテゴリ分類などはフルスクラッチで 自前モデルを開発 ・ このとき初めて機械学習を覚えた Sonomy開発チーム API開発 & 利用 ニュース レコメンドAPI 提供 トップページ サイエンスチーム 19
同時期に、トップページのタイムラインも刷新 タイムラインにレコメンドエンジンを採用 (初版は2014 ~ 2015年頃) ・ 興味関心を使ったパーソナライズ ・ 当初は単語ベクトルを利用 ・ 現在はEmbeddingしたベクトルを利用 ・ 参考) https://research-lab.yahoo.co.jp/nlp/20170814_okura.html 20
Yahoo! Sonomyの開発 この当時思ったこと ・ 機械学習の初歩を理解し、 実際に開発する経験を積めた ・ データサイエンティストが何を 言っているのか(どんなことを気にするのか) がだんだん分かってきたのもこの頃から 21
ふりかえり Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
ここまでのまとめ 年代 私が関わった開発 2012 PC版トップページ開発 ・ サービス一覧に一部レコメンドを適用 2013 スマート版開発 ・ タブレット、スマートフォン向けにスマート版トップページを 開発し、パーソナライズロジックを適用 2014 Yahoo! Sonomy開発 ・ 位置情報 x 興味関心を使ったパーソナライズを適用 ・ 興味関心のエンジンは トップページのタイムラインにも採用された 23
ここまでのまとめ 年代 私が関わった開発 2012 PC版トップページ開発 ・ サービス一覧に一部レコメンドを適用 2013 スマート版開発 ・ タブレット、スマートフォン向けにスマート版トップページを 開発し、パーソナライズロジックを適用 この2 ~ 3年の間でも データの利活用は急激な速さで進歩した 2014 Yahoo! Sonomy開発 ・ 位置情報 x 興味関心を使ったパーソナライズを適用 ・ 興味関心のエンジンは トップページのタイムラインにも採用された 24
ここまでのまとめ ・ 実際の共同開発を通じて、 機械学習や自然言語処理の初歩を経験できた ・ データ利活用の勘所が少しずつ分かってきた ・ 自分が学んだことを 他の機能(場面)にも適用してみたくなった 25
次に実施した取り組み ・ 次に、Yahoo! JAPANトップアプリの PUSH通知開発チームの事例を紹介します 26
トップアプリ PUSH通知の データ活用事例 Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
PUSH通知って? PUSH通知 ・ ユーザに「気づき」を与える機能 28
トップアプリPUSH通知のデータ活用事例 1. レコメンド ワールドカップで 日本が勝利! 通知 サッカーが 好き 2. 通知タイミング 立ち止まって スマホを見たときに通知 3. 位置情報 現在地の 災害情報を通知 29
トップアプリPUSH通知のデータ活用事例 1 ワールドカップで 日本が勝利! 通知 サッカーが 好き 一部PUSH通知の機能にレコメンド機能を追加 (2015年頃~) ・ 該当コンテンツに興味がありそうなユーザに PUSH通知を配信する仕組みを開発 ・ Hadoop上でユーザリストを生成し、 対象ユーザに対してPUSH通知する 30
トップアプリPUSH通知のデータ活用事例 2 立ち止まって スマホを見たときに通知 PUSH配信のタイミングを最適化する機能を追加 (2016年頃~) ・ ユーザの行動遷移(走っている / 歩いている / スマホ の音量 etc.)に応じて、 最適なタイミングで通知を掲出する仕組みを開発 ・ Hadoop上で行動解析モデルを生成し、 ユーザに適用する ・ 参考) https://research-lab.yahoo.co.jp/ml/20170313_okoshi.html 31
トップアプリPUSH通知のデータ活用事例 3 現在地の 災害情報を通知 現在地で発生した災害情報をPUSHする機能を追加 (2018年頃~) ・ 出先で避難勧告などが発令された際に PUSH通知する機能を開発 ・ Stream処理を利用し、 大量の行動ログを効率的に捌く 32
どう作ったか? Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
トップアプリPUSH通知のデータ活用事例 ポイント ・ BEエンジニアと データサイエンティストで協業 ・ 同じチームに所属、 あるいは他チームから強力なサポート BEエンジニア サイエンティスト 34
トップアプリPUSH通知のデータ活用事例 ポイント ・ ほど良い役割分担 ・ BE: 通知の配信系を開発 ・ SCI: 学習器 / 分類器を開発 ・ あくまでプロダクトをユーザに届けるという 目的は同じなので、 必要な知識をお互い共有・理解しながら開発 BEエンジニア サイエンティスト 35
実例 ・ あるサイエンティストは機械学習のプロ ・ しかしWebアプリへの適用方法が分からない ・ Pythonしか書けない ・ ので、私がPythonを覚えて、 サイエンティスト考案の機械学習ロジックを Hadoop上で動作する分散処理に組み込んだ BEエンジニア サイエンティスト 36
実例 このとき、自分ががんばったことと言えば・・・ ・ Pythonを書けるようになること ・ 学習器/分類器それぞれの提供フロー(使い方) を理解すること つまり、そんなに難しくない BEエンジニア サイエンティスト 37
実例 このとき、自分ががんばったことと言えば・・・ ・ Pythonを書けるようになること ・ 学習器/分類器それぞれの提供フロー(使い方) を理解すること つまり、そんなに難しくない ちょっとがんばればなんとかなる! BEエンジニア サイエンティスト 38
これらの経験を経て学んだこと BE(あるいはFE)エンジニアと データサイエンティストとの協業が意味を成す 協業には両者が共通言語で物事を語れることが重要 39
BEエンジニアと データサイエンティスト が歩み寄るには? Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
例えば・・・ BEエンジニア FE バッチ API DB あるBEエンジニアのスキルセットが こうだとする 41
例えば・・・ BEエンジニア FE バッチ API DB データサイエンティスト 機械学習 自然言語 処理 DB バッチ 一方で、あるデータサイエンティストの スキルセットはこう 42
例えば・・・ BEエンジニア FE バッチ API DB 機械 学習 データサイエンティスト 機械学習 自然言語 処理 DB バッチ FE API 43
例えば・・・ BEエンジニア FE バッチ API DB 機械 学習 データサイエンティスト 機械学習 自然言語 処理 DB バッチ FE API 両者で共通のスキルセットがあれば 共通言語で物事を語れる バッチ 徹底する必要はなく、 「相手が何を言っているか」「自分は何を伝えればいいか」理解し合えることが重要 44
BE → SCIへの歩み寄り ・ 簡単にできそうなTryとして、 私のオススメを紹介します 45
BE → SCIへの歩み寄り:初級編 ・ とりあえずPythonを書いてみる ・ 学習器 / 分類器を実際に書いてみる ・ 「ロジスティック回帰」という単語を覚える 46
BE → SCIへの歩み寄り:中級編 ・ サイエンティストが考えた機械学習ロジックを実際の アプリケーションに組み込んでみる ・ 役割分担はある程度やっていいはず ・ 例えば、機械学習ロジックの開発部分は サイエンティストに任せて、 生成されたモデルをAmazon S3に配置してもらう、など 47
まとめ Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
まとめ ・ ビッグデータの利活用は急激な速度で 広まっている ・ 利活用の方法はアイデア次第 ・ 一般的なBEエンジニアも興味をもって、 まずはサイエンスに 触れてみることがオススメ 49
EOP Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.