Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo

1

デ ータ サイ エン ティ スト が力 を発 揮で きる
ア ジャ イル デー タ活 用基 盤
株 式 会 社 リ ク ル ー ト ラ イ フ ス タ イ ル
デ ー タ エ ン ジ ニ ア リ ン グ グ ル ー プ
田 村 真 一
Meetup #19 SysML

2

田村 真一
• リクルートライフスタイル
データエンジニアリンググループ
(CET チーム)
• 主な業務内容
‣ データプロダクトの開発・運用
‣ 機械学習を活用した案件の実装
‣ 対話型検索サービスの開発
@tmshn
@reto_nayuta
tamurashinichi
tmshn
$ whoami

3

リクルートホールディングス “統合報告書2018” https://recruit-holdings.co.jp/who/reports/
リクルートグループのビジネスモデル

4

「日常消費領域」を扱うため「顧客接点」が豊富
リクルートライフスタイルの提供サービス例

5

データ
サイエンティスト
エンジニア
データプランナー
“CET” (Capture Everything) Team
データプランナー・データサイエンティスト・エンジニアで構成され、
データ × テクノロジー(データプロダクト)による「価値創出」がチームミッション
デ
ー
タ
プ
ロ
ダ
ク
ト
input
output
CET Team
https://pt.slideshare.net/RecruitLifestyle/meetup7
SlideShare にて詳細公開中!

6

まずはデモを

7

この推薦システムの全体像
(0.2, 0.1, ..., 0.5)
(0.3, 0.2, ..., 0.5)
(0.8, 0.3, ..., 0.1)
(0.5, 0.3, ..., 0.4)
(0.4, 0.15, ..., 0.35)
オマエ、絶対コレ好キ!
(0.3, 0.1, ..., 0.4) = ID: 9999
リアルタイムログ
API
機械学習 API
アイテム情報 API
Backends For
Frontends API
ML 分析/モデリング
基盤
①
②
③
同期
非同期
ベクトル化
ベクトル演算
類似アイテム検索
アイテム情報検索

8

Embedding: Item Embedding by word2vec
閲覧セッション(or 予約履歴)中のアイテムの前後に
出現するアイテムの出現確率を用いてベクトル化
意味が近いアイテム(ベクトル)は、周辺のアイテムも
似ているはず
似テル!
似テナイ!
閲覧・予約
注意
Embedding に利用する情報はアイテム
IDに関するセッションデータ(時系列順
に並んだ閲覧などのアイテムID)だけ!
Word ⇒ Item ID
Sentence ⇒ Session of IDs

9

Embedding のメリット
ベクトル化されたアイテムの演算が可能
ユーザの直近の複数閲覧・予約アイテムを演算(例えば加重
平均)した結果から、アイテムの推薦ができるようになる
閲覧・予約
(0.2, 0.1, ..., 0.5)
(0.3, 0.2, ..., 0.5)
(0.8, 0.3, ..., 0.1)
(0.5, 0.3, ..., 0.4)
(0.4, 0.15, ..., 0.35)
オマエ、絶対コレ好キ!(0.3, 0.1, ..., 0.4)

10

こういう施策をいっぱいやるの
大変じゃないですか?

11

データプロダクトのライフサイクル
• 企画〜運用までのイテレーションを通して事業に貢献
企画・分析・モデリング・開発・運用……
全体として多数のステップからなり、幅広い技能が要求される
企画・
プレ分析
データ開発
モデリング
API 開発
AB テスト
とその評価
本番運用
エンハンス
予約入力での
離脱率下げたい
過去ログ使って
LightGBM で分類
モデルを…
GAE で Flask と
Datastore 使って…
新規ユーザに絞れば
CVR が有意に改善! 日次バッチがコケたから
メモリ増やして再実行

12

施策1つを回すのに、データサイエンティストとエンジニアの
(まったく毛色の違う)作業が必要
→ コミュニケーションコストや工数の増加によりイテレー
ションが遅くなる、作りっぱなしのモデルが出る……etc
なにが辛いのか?

13

さまざまなデータ活用案件に柔軟に
応用可能なプラットフォームを用意
エンジニアによる都度開発を最小限
におさえ、スムーズな施策イテレー
ションを実現しています

14

API の世界

15

データサイエンティストが力を発揮できるアジャイルデータ活用基盤

16

ユーザ行動ログをブラウザからリア
ルタイムに取得し連携する API
現在は Ad o be DataF eed を利用
しているが、さらなる低レイテン
シーを求めて独自の web ビーコン
も開発中
Hacci API

17

データサイエンティストが力を発揮できるアジャイルデータ活用基盤

18

Key- value のシンプルな API
(v alue は 任 意 の JSON を返せる)
CSV ファイルを S 3 にアップロード
するだけでデータロードできる
汎用 API
バ ッ チ 基 盤 か ら P a n d a s D a t a F r a m e を 書 き 込 ん
だ り ( S D K を 用 意 )
df.to_api(...)
B i g Q u e r y の ク エ リ 結 果 を 書 き 込 ん だ り ( S Q L と
Y A M L を G i t h u b に 置 く だ け で 設 定 可 能 )
C l o u d D a t a f l o w で リ ア ル タ イ ム に 書 き 込 ん だ り

19

データサイエンティストが力を発揮できるアジャイルデータ活用基盤

20

機械学習のオンライン予測を提供する API
clo ud pickle で pickle 化した学習済みモ
デルを起動時に GCS からロードして利用
リクエスト JSON を DataF rame 化して
モデルに渡し、レスポンスを JSON 化 し て
返す
cetflow API
・・・
request dispatcher
1 モ デ ル ご と に k 8 s p o d が
デ プ ロ イ さ れ 、 そ れ を N g i n x
で ル ー テ ィ ン グ し て い る
後 述 の ジ ョ ブ 基 盤 ・ ア ド ホ ッ
ク 基 盤 と d o c k e r イ メ ー ジ を
共 通 化 し て い る

21

データサイエンティストが力を発揮できるアジャイルデータ活用基盤

22

CET の API エコシステムはマイク
ロサービス的に複数のシステムを組
み合わせて利用できる
集約 API は、Pytho n 1 ファイル
書いて Github に push するだけ
で、その BF F API が作れる仕組み
社内の API は SDK を用意
resp = cetflow_serving.call(...)
集約 API
・・・
request dispatcher
1 A P I ご と に k 8 s p o d が デ プ ロ イ さ れ 、
そ れ を N g i n x で ル ー テ ィ ン グ し て い る

23

オブザーバビリティは基盤側で担保
• 各 API のログは Stackdriver/BigQuery に連携されており、エ
ラーログベースのアラートも必要に応じて設定可能
• Istio を用いたシステムメトリクスのモニタリングも完備
• [TODO] 機械学習特有のメトリクスのオンライン評価・アラート
の実装(異常検知?)
• [TODO] API 利用状況の計測、データリネージュからのバッチの
GC

24

リアルタイムストリームの世界

25

データサイエンティストが力を発揮できるアジャイルデータ活用基盤

26

ログ収集基盤から Clo ud Pub/Sub で受け取ったログ
を Clo ud Dataf lo w 集計し、汎用 API に書き込む
現在は Jav a の Beam SDK で開発を行っているが、
メンバーのスキルセットを考え Pytho n 版に移行した
い(もしくは Beam SQL )
リアルタイム処理システム

27

バッチの世界

28

データサイエンティストが力を発揮できるアジャイルデータ活用基盤

29

BigQuery の SQL と YAML ファイルを書くだけでク
エリを定期実行し、汎用 API に自動でロードしてくれ
る仕組み
SQL Farm

30

データサイエンティストが力を発揮できるアジャイルデータ活用基盤

31

ジョブを定期実行する基盤
機械学習モデルのトレーニングから push 通知の送信
まで幅広くカバー
Airf lo w でスケジュール・ワークフローを管理し、
GK E 上でジョブを実行(タスクごとにマシンリソース
が選択できる)
ジョブの大半は YAML の記述だけで完結するように
なっている
ジョブ基盤
機械学習用途では、 papermill を用いて jupyter no tebo o k を直接実行しており、
さらにモデルの GCS アップロードから API の自動デプロイまで行える(学習精
度に応じてデプロイ可否をコントロールすることも可能)

32

アドホックの世界

33

データサイエンティストが力を発揮できるアジャイルデータ活用基盤

34

データサイエンティストが自由に分析やモデリングを
行える環境
GK E 上に jupyterhub をデプロイしており、Github
アカウントでログインする
また jupyterhub 上 か ら 直 接 Github に push できる
Jupyterhub
G i t h u b で の レ ビ ュ ー 時 は p y t h o n に 変
換 後 の コ ー ド を レ ビ ュ ー し て い る
( 変 換 後 の フ ァ イ ル が な い と C I で 怒 ら
れ マ ー ジ で き な い )

35

ポイント
何か施策をやるたびに基盤の開発が必要なのは辛い
データサイエンティストとエンジニアの関心をうまく分離し
て、データサイエンティストだけで施策をどんどん実施でき
る環境を作ろう!

More Related Content

データサイエンティストが力を発揮できるアジャイルデータ活用基盤

Editor's Notes

  1. 我々 CET チームは、機械学習を含むデータプロダクト開発を効率化するために、 データプランナー、データサイエンティスト、エンジニアなどデータ活用に関する専門家を集めたチーム構成を取っており、 リクルートライフスタイルが運営するサービスに対する、データとテクノロジーによる「価値創出」をチームのミッションとして定めています。