databricksとsparkではじめる [データ分析/機械学習] 実践入門 · 2016/12...
TRANSCRIPT
![Page 2: DatabricksとSparkではじめる [データ分析/機械学習] 実践入門 · 2016/12 アプリリリース ダウンロード:1200万 レシピ数:1万8000件以上 月間動画再生数:6億1000万回以上](https://reader033.vdocuments.mx/reader033/viewer/2022050209/5f5c298457d03113ff44486c/html5/thumbnails/2.jpg)
自己紹介
• 島田雅年 @smdmts • データウェアハウスアーキテクト(Scala|Python|Golang|Java|DDD)
• 株式会社エブリー所属 • DELISH KITCHEN データ/分析系全般担当 - 主に分析基盤、配信面最適化などを担当
![Page 3: DatabricksとSparkではじめる [データ分析/機械学習] 実践入門 · 2016/12 アプリリリース ダウンロード:1200万 レシピ数:1万8000件以上 月間動画再生数:6億1000万回以上](https://reader033.vdocuments.mx/reader033/viewer/2022050209/5f5c298457d03113ff44486c/html5/thumbnails/3.jpg)
2016/12 アプリリリース ダウンロード:1200万 レシピ数:1万8000件以上 月間動画再生数:6億1000万回以上 App Store BEST OF 2017 Google Play ベスト オブ 2017 2017年 国内アプリダウンロード第3位 (1位LINE、2位Yahoo!JAPAN ※非ゲーム AppAnnie調べ)
・毎日新着レシピ動画が配信される ・料理レシピ動画(調理/献立/手順) ・広告主タイアップ動画
[PR] DELISH KITCHENの紹介(かんたんに)
![Page 4: DatabricksとSparkではじめる [データ分析/機械学習] 実践入門 · 2016/12 アプリリリース ダウンロード:1200万 レシピ数:1万8000件以上 月間動画再生数:6億1000万回以上](https://reader033.vdocuments.mx/reader033/viewer/2022050209/5f5c298457d03113ff44486c/html5/thumbnails/4.jpg)
アジェンダ(概要)
DELISH KITCHENでは、データ分析の基幹技術の一つとして SparkのホスティングサービスであるDatabricksを利用しています
本日はサンプルコードを交えて、Databricksの概要と データ分析/機械学習で利用しているSparkのコードについて 解説させて頂きます
![Page 5: DatabricksとSparkではじめる [データ分析/機械学習] 実践入門 · 2016/12 アプリリリース ダウンロード:1200万 レシピ数:1万8000件以上 月間動画再生数:6億1000万回以上](https://reader033.vdocuments.mx/reader033/viewer/2022050209/5f5c298457d03113ff44486c/html5/thumbnails/5.jpg)
アジェンダ
• Databricksの概要 - コンセプト/インフラ構成例/Notebook実行デモ • Databricks(Spark)のコード実装例 - 簡単なサンプルコード/機械学習(協調フィルタリング) - 付録:データ分析(マジックナンバー分析)
![Page 6: DatabricksとSparkではじめる [データ分析/機械学習] 実践入門 · 2016/12 アプリリリース ダウンロード:1200万 レシピ数:1万8000件以上 月間動画再生数:6億1000万回以上](https://reader033.vdocuments.mx/reader033/viewer/2022050209/5f5c298457d03113ff44486c/html5/thumbnails/6.jpg)
Databricksの概要 - コンセプトイメージ - インフラ構成例 - Notebook実行デモ
![Page 7: DatabricksとSparkではじめる [データ分析/機械学習] 実践入門 · 2016/12 アプリリリース ダウンロード:1200万 レシピ数:1万8000件以上 月間動画再生数:6億1000万回以上](https://reader033.vdocuments.mx/reader033/viewer/2022050209/5f5c298457d03113ff44486c/html5/thumbnails/7.jpg)
Databricksのコンセプトイメージ
![Page 8: DatabricksとSparkではじめる [データ分析/機械学習] 実践入門 · 2016/12 アプリリリース ダウンロード:1200万 レシピ数:1万8000件以上 月間動画再生数:6億1000万回以上](https://reader033.vdocuments.mx/reader033/viewer/2022050209/5f5c298457d03113ff44486c/html5/thumbnails/8.jpg)
Databricksのコンセプトイメージ
・Sparkを実行基盤としたデータ分析プラットフォーム - Unified Analytics Platformを目指していて作られている
・(AWS/Azure)のユーザアカウントにVPC作成など所定のインストールで導入 - 利用者の(AWS/Azure)アカウントでクラスタが起動される
・他の機械学習基盤とのつなぎ込みが可能 - TensorFlow/XGBoost/scikit-learn等 ・データエンジニア/サイエンティストは Notebookでスクリプトを書いて開発する - Scala/Python/R/Shell/SQLが利用可 - ETL処理もNotebookで実装可
![Page 9: DatabricksとSparkではじめる [データ分析/機械学習] 実践入門 · 2016/12 アプリリリース ダウンロード:1200万 レシピ数:1万8000件以上 月間動画再生数:6億1000万回以上](https://reader033.vdocuments.mx/reader033/viewer/2022050209/5f5c298457d03113ff44486c/html5/thumbnails/9.jpg)
インフラ構成例(DELISH KITCHENの場合)
Databricks VPC
アプリケーション VPC
スケーラブルVPN or Internet
VPC ピアリング接続
S3
Elasti Cache
RDS Redshift
Databricks Cloud
(管理画面)起動設定 Notebook
![Page 10: DatabricksとSparkではじめる [データ分析/機械学習] 実践入門 · 2016/12 アプリリリース ダウンロード:1200万 レシピ数:1万8000件以上 月間動画再生数:6億1000万回以上](https://reader033.vdocuments.mx/reader033/viewer/2022050209/5f5c298457d03113ff44486c/html5/thumbnails/10.jpg)
Databricksによる継続的デリバリ・Databricks CloudのNotebook上でデータ分析コードの開発を行う ・CLIによるデプロイやクラスタ作成等が出来てCI/CDでも利用可能 ・従来のspark-submitで、jarからmainクラスを起動する方式も利用可能
Pull
Push and Run
Pull
Push Deploy
or
Merge
本番環境
開発環境 (開発者のワークスペース)
本番環境
![Page 11: DatabricksとSparkではじめる [データ分析/機械学習] 実践入門 · 2016/12 アプリリリース ダウンロード:1200万 レシピ数:1万8000件以上 月間動画再生数:6億1000万回以上](https://reader033.vdocuments.mx/reader033/viewer/2022050209/5f5c298457d03113ff44486c/html5/thumbnails/11.jpg)
Databricks管理画面(トップ)
・開発者(データエンジニア/データサイエンティスト)は DatabricksCloudのURLを開き、管理画面に接続して開発を始める
![Page 12: DatabricksとSparkではじめる [データ分析/機械学習] 実践入門 · 2016/12 アプリリリース ダウンロード:1200万 レシピ数:1万8000件以上 月間動画再生数:6億1000万回以上](https://reader033.vdocuments.mx/reader033/viewer/2022050209/5f5c298457d03113ff44486c/html5/thumbnails/12.jpg)
Databricks管理画面(クラスタ設定)
・Sparkクラスタのインスタンスタイプ設定画面 オートスケール/起動クラスタ(CPU/GPU)/Sparkバージョン等が指定可能
- スポット入札 - インスタンスタイプ - 台数/割合 - オートスケール設定 - オートターミネート設定
![Page 13: DatabricksとSparkではじめる [データ分析/機械学習] 実践入門 · 2016/12 アプリリリース ダウンロード:1200万 レシピ数:1万8000件以上 月間動画再生数:6億1000万回以上](https://reader033.vdocuments.mx/reader033/viewer/2022050209/5f5c298457d03113ff44486c/html5/thumbnails/13.jpg)
Databricks管理画面(Notebook)
・開発者毎に割り当てられたWorkspace上の、Notebookで開発をすすめる Scala/Python/R/SQLが選択可能(どれを選んでも相互呼び出しできる)
![Page 14: DatabricksとSparkではじめる [データ分析/機械学習] 実践入門 · 2016/12 アプリリリース ダウンロード:1200万 レシピ数:1万8000件以上 月間動画再生数:6億1000万回以上](https://reader033.vdocuments.mx/reader033/viewer/2022050209/5f5c298457d03113ff44486c/html5/thumbnails/14.jpg)
・Notebook上に複数のコマンドを実装し、Step by Stepで処理を実行する - インタラクティブ(対話的)にコマンドが逐次実行される ・コマンド間のデータ連携は、ScalaのインスタンスやSparkSQLで行う ・SQL/DSLなどで途中断面のデータを確認しながら開発をすすめる
Notebookによる開発のすすめ方
TD Spark
![Page 15: DatabricksとSparkではじめる [データ分析/機械学習] 実践入門 · 2016/12 アプリリリース ダウンロード:1200万 レシピ数:1万8000件以上 月間動画再生数:6億1000万回以上](https://reader033.vdocuments.mx/reader033/viewer/2022050209/5f5c298457d03113ff44486c/html5/thumbnails/15.jpg)
Notebook実行デモ
![Page 16: DatabricksとSparkではじめる [データ分析/機械学習] 実践入門 · 2016/12 アプリリリース ダウンロード:1200万 レシピ数:1万8000件以上 月間動画再生数:6億1000万回以上](https://reader033.vdocuments.mx/reader033/viewer/2022050209/5f5c298457d03113ff44486c/html5/thumbnails/16.jpg)
Databricks(Spark)のコード実装例 - 簡単なサンプルコード - 機械学習 (協調フィルタリング) - 付録:データ分析 (マジックナンバー分析)
![Page 17: DatabricksとSparkではじめる [データ分析/機械学習] 実践入門 · 2016/12 アプリリリース ダウンロード:1200万 レシピ数:1万8000件以上 月間動画再生数:6億1000万回以上](https://reader033.vdocuments.mx/reader033/viewer/2022050209/5f5c298457d03113ff44486c/html5/thumbnails/17.jpg)
https://github.com/smdmts/dbc-scala_ks_2018
サンプルコードはOSSとして公開しています こちらをご参照ください
![Page 18: DatabricksとSparkではじめる [データ分析/機械学習] 実践入門 · 2016/12 アプリリリース ダウンロード:1200万 レシピ数:1万8000件以上 月間動画再生数:6億1000万回以上](https://reader033.vdocuments.mx/reader033/viewer/2022050209/5f5c298457d03113ff44486c/html5/thumbnails/18.jpg)
簡単なサンプルコード
![Page 19: DatabricksとSparkではじめる [データ分析/機械学習] 実践入門 · 2016/12 アプリリリース ダウンロード:1200万 レシピ数:1万8000件以上 月間動画再生数:6億1000万回以上](https://reader033.vdocuments.mx/reader033/viewer/2022050209/5f5c298457d03113ff44486c/html5/thumbnails/19.jpg)
データ定義1
VIEW作成1
SQL実行1
データ定義2
VIEW作成2
![Page 20: DatabricksとSparkではじめる [データ分析/機械学習] 実践入門 · 2016/12 アプリリリース ダウンロード:1200万 レシピ数:1万8000件以上 月間動画再生数:6億1000万回以上](https://reader033.vdocuments.mx/reader033/viewer/2022050209/5f5c298457d03113ff44486c/html5/thumbnails/20.jpg)
SQL実行
Scalaコード
![Page 21: DatabricksとSparkではじめる [データ分析/機械学習] 実践入門 · 2016/12 アプリリリース ダウンロード:1200万 レシピ数:1万8000件以上 月間動画再生数:6億1000万回以上](https://reader033.vdocuments.mx/reader033/viewer/2022050209/5f5c298457d03113ff44486c/html5/thumbnails/21.jpg)
結果確認
Pythonコード
![Page 22: DatabricksとSparkではじめる [データ分析/機械学習] 実践入門 · 2016/12 アプリリリース ダウンロード:1200万 レシピ数:1万8000件以上 月間動画再生数:6億1000万回以上](https://reader033.vdocuments.mx/reader033/viewer/2022050209/5f5c298457d03113ff44486c/html5/thumbnails/22.jpg)
機械学習 - 協調フィルタリング
![Page 23: DatabricksとSparkではじめる [データ分析/機械学習] 実践入門 · 2016/12 アプリリリース ダウンロード:1200万 レシピ数:1万8000件以上 月間動画再生数:6億1000万回以上](https://reader033.vdocuments.mx/reader033/viewer/2022050209/5f5c298457d03113ff44486c/html5/thumbnails/23.jpg)
協調フィルタリングとは誰かが見たレシピを基に、対象者におすすめするレシピを算出する古典的機械学習 似たようなレシピを見たユーザ同士で、お互いに未視聴のレシピを交換する (ドメイン知識が無くても以下のように算出可能)
🍎 🍇 🍊
1:👨
2:👩
3:👧 🍇
👨 🍇
👧 が視聴済みのレシピ
🍊
👨/👩 に提案する未視聴のレシピ
👧
👩
🍇 🍊🍎
![Page 24: DatabricksとSparkではじめる [データ分析/機械学習] 実践入門 · 2016/12 アプリリリース ダウンロード:1200万 レシピ数:1万8000件以上 月間動画再生数:6億1000万回以上](https://reader033.vdocuments.mx/reader033/viewer/2022050209/5f5c298457d03113ff44486c/html5/thumbnails/24.jpg)
データ定義(通常はDBやS3など)
![Page 25: DatabricksとSparkではじめる [データ分析/機械学習] 実践入門 · 2016/12 アプリリリース ダウンロード:1200万 レシピ数:1万8000件以上 月間動画再生数:6億1000万回以上](https://reader033.vdocuments.mx/reader033/viewer/2022050209/5f5c298457d03113ff44486c/html5/thumbnails/25.jpg)
View作成
Indexer作成計算量削減のためInt化する定義
機械学習 計算式定義
![Page 26: DatabricksとSparkではじめる [データ分析/機械学習] 実践入門 · 2016/12 アプリリリース ダウンロード:1200万 レシピ数:1万8000件以上 月間動画再生数:6億1000万回以上](https://reader033.vdocuments.mx/reader033/viewer/2022050209/5f5c298457d03113ff44486c/html5/thumbnails/26.jpg)
計算用 パイプライン作成
View作成
データ可視化
![Page 27: DatabricksとSparkではじめる [データ分析/機械学習] 実践入門 · 2016/12 アプリリリース ダウンロード:1200万 レシピ数:1万8000件以上 月間動画再生数:6億1000万回以上](https://reader033.vdocuments.mx/reader033/viewer/2022050209/5f5c298457d03113ff44486c/html5/thumbnails/27.jpg)
Indexer結果定義
Int -> user_idの紐付け用VIEW
Indexer結果定義レシピ名 -> user_idの 紐付け用VIEW
![Page 28: DatabricksとSparkではじめる [データ分析/機械学習] 実践入門 · 2016/12 アプリリリース ダウンロード:1200万 レシピ数:1万8000件以上 月間動画再生数:6億1000万回以上](https://reader033.vdocuments.mx/reader033/viewer/2022050209/5f5c298457d03113ff44486c/html5/thumbnails/28.jpg)
user_id -> index済みuser_id
レシピ名 -> index済みレシピ名
Indexer結果確認
Indexer結果確認
![Page 29: DatabricksとSparkではじめる [データ分析/機械学習] 実践入門 · 2016/12 アプリリリース ダウンロード:1200万 レシピ数:1万8000件以上 月間動画再生数:6億1000万回以上](https://reader033.vdocuments.mx/reader033/viewer/2022050209/5f5c298457d03113ff44486c/html5/thumbnails/29.jpg)
データ可視化
モデル計算
レコメンド算出
View作成
![Page 30: DatabricksとSparkではじめる [データ分析/機械学習] 実践入門 · 2016/12 アプリリリース ダウンロード:1200万 レシピ数:1万8000件以上 月間動画再生数:6億1000万回以上](https://reader033.vdocuments.mx/reader033/viewer/2022050209/5f5c298457d03113ff44486c/html5/thumbnails/30.jpg)
結果取得VIEW
![Page 31: DatabricksとSparkではじめる [データ分析/機械学習] 実践入門 · 2016/12 アプリリリース ダウンロード:1200万 レシピ数:1万8000件以上 月間動画再生数:6億1000万回以上](https://reader033.vdocuments.mx/reader033/viewer/2022050209/5f5c298457d03113ff44486c/html5/thumbnails/31.jpg)
結果確認
![Page 32: DatabricksとSparkではじめる [データ分析/機械学習] 実践入門 · 2016/12 アプリリリース ダウンロード:1200万 レシピ数:1万8000件以上 月間動画再生数:6億1000万回以上](https://reader033.vdocuments.mx/reader033/viewer/2022050209/5f5c298457d03113ff44486c/html5/thumbnails/32.jpg)
協調フィルタリング結果
🍇
👨 🍇
👧 が視聴済みのレシピ🍎 🍇 🍊
🍊
👨/👩 に提案する未視聴のレシピ
1:👨
2:👩
3:👧
👧
👩
オレンジの方が反応が強い
🍇 🍊🍎
0.970.55
0.56
![Page 33: DatabricksとSparkではじめる [データ分析/機械学習] 実践入門 · 2016/12 アプリリリース ダウンロード:1200万 レシピ数:1万8000件以上 月間動画再生数:6億1000万回以上](https://reader033.vdocuments.mx/reader033/viewer/2022050209/5f5c298457d03113ff44486c/html5/thumbnails/33.jpg)
質疑・応答
![Page 34: DatabricksとSparkではじめる [データ分析/機械学習] 実践入門 · 2016/12 アプリリリース ダウンロード:1200万 レシピ数:1万8000件以上 月間動画再生数:6億1000万回以上](https://reader033.vdocuments.mx/reader033/viewer/2022050209/5f5c298457d03113ff44486c/html5/thumbnails/34.jpg)
付録
![Page 35: DatabricksとSparkではじめる [データ分析/機械学習] 実践入門 · 2016/12 アプリリリース ダウンロード:1200万 レシピ数:1万8000件以上 月間動画再生数:6億1000万回以上](https://reader033.vdocuments.mx/reader033/viewer/2022050209/5f5c298457d03113ff44486c/html5/thumbnails/35.jpg)
データ分析 - マジックナンバー分析
![Page 36: DatabricksとSparkではじめる [データ分析/機械学習] 実践入門 · 2016/12 アプリリリース ダウンロード:1200万 レシピ数:1万8000件以上 月間動画再生数:6億1000万回以上](https://reader033.vdocuments.mx/reader033/viewer/2022050209/5f5c298457d03113ff44486c/html5/thumbnails/36.jpg)
マジックナンバー分析とは例えば、このサムネイル部分をクリックした事のあるユーザの継続率は、どのくらいだろうか? 「お気に入りした/動画視聴した/検索した」等、別のアクションと比べ継続率は高いだろうか? 継続率が高いのはどんなユーザだろうか?環境や属性は?
マジックナンバー分析とは、様々な要素を組み合わせた条件(集団)の中から 継続率の高いユーザアクションの傾向を発見していく分析手法のこと。 良いアクションを見つけたら、その導線を強化していけば良い。 「対象アクション・ユーザ属性・継続日数」を組み合わせ、各集団の継続率を導き比較する。
1. 各集団のアクション毎の継続率を算出する 2. 継続率同士を比較し分析する
処理フロー
![Page 37: DatabricksとSparkではじめる [データ分析/機械学習] 実践入門 · 2016/12 アプリリリース ダウンロード:1200万 レシピ数:1万8000件以上 月間動画再生数:6億1000万回以上](https://reader033.vdocuments.mx/reader033/viewer/2022050209/5f5c298457d03113ff44486c/html5/thumbnails/37.jpg)
1.各集団のアクション毎の継続率を算出する
11/10 11/11 11/12
11/10(初日)
11/11(2日目)
11/12(3日目)
👨 👩 👧
👧
👨 👧
100 %
33.3 %
66.6 %
3/3
1/3
2/3
算出方法
1:👨
2:👩
3:👧
例:サムネイルを見た人
![Page 38: DatabricksとSparkではじめる [データ分析/機械学習] 実践入門 · 2016/12 アプリリリース ダウンロード:1200万 レシピ数:1万8000件以上 月間動画再生数:6億1000万回以上](https://reader033.vdocuments.mx/reader033/viewer/2022050209/5f5c298457d03113ff44486c/html5/thumbnails/38.jpg)
データ定義(通常はDBやS3など)
![Page 39: DatabricksとSparkではじめる [データ分析/機械学習] 実践入門 · 2016/12 アプリリリース ダウンロード:1200万 レシピ数:1万8000件以上 月間動画再生数:6億1000万回以上](https://reader033.vdocuments.mx/reader033/viewer/2022050209/5f5c298457d03113ff44486c/html5/thumbnails/39.jpg)
View作成
データ可視化
![Page 40: DatabricksとSparkではじめる [データ分析/機械学習] 実践入門 · 2016/12 アプリリリース ダウンロード:1200万 レシピ数:1万8000件以上 月間動画再生数:6億1000万回以上](https://reader033.vdocuments.mx/reader033/viewer/2022050209/5f5c298457d03113ff44486c/html5/thumbnails/40.jpg)
継続率計算
![Page 41: DatabricksとSparkではじめる [データ分析/機械学習] 実践入門 · 2016/12 アプリリリース ダウンロード:1200万 レシピ数:1万8000件以上 月間動画再生数:6億1000万回以上](https://reader033.vdocuments.mx/reader033/viewer/2022050209/5f5c298457d03113ff44486c/html5/thumbnails/41.jpg)
継続率計算
結果可視化
![Page 42: DatabricksとSparkではじめる [データ分析/機械学習] 実践入門 · 2016/12 アプリリリース ダウンロード:1200万 レシピ数:1万8000件以上 月間動画再生数:6億1000万回以上](https://reader033.vdocuments.mx/reader033/viewer/2022050209/5f5c298457d03113ff44486c/html5/thumbnails/42.jpg)
結果可視化
![Page 43: DatabricksとSparkではじめる [データ分析/機械学習] 実践入門 · 2016/12 アプリリリース ダウンロード:1200万 レシピ数:1万8000件以上 月間動画再生数:6億1000万回以上](https://reader033.vdocuments.mx/reader033/viewer/2022050209/5f5c298457d03113ff44486c/html5/thumbnails/43.jpg)
11/10 11/11 11/12
11/10(初日)
11/11(2日目)
11/12(3日目)
👨 👩 👧
👧
👨 👧
100 %
33.3 %
66.6 %
3/3
1/3
2/3
机上計算の結果と一致
1:👨
2:👩
3:👧
1.各集団のアクション毎の継続率算出結果
![Page 44: DatabricksとSparkではじめる [データ分析/機械学習] 実践入門 · 2016/12 アプリリリース ダウンロード:1200万 レシピ数:1万8000件以上 月間動画再生数:6億1000万回以上](https://reader033.vdocuments.mx/reader033/viewer/2022050209/5f5c298457d03113ff44486c/html5/thumbnails/44.jpg)
2. 継続率同士を比較し分析する
•サムネイルを見た集団(3日): 66% •お気に入りをした集団(3日): 80%
算出した結果が上記のようになった場合 お気に入りへの導線を強化すれば良いと分かる
![Page 45: DatabricksとSparkではじめる [データ分析/機械学習] 実践入門 · 2016/12 アプリリリース ダウンロード:1200万 レシピ数:1万8000件以上 月間動画再生数:6億1000万回以上](https://reader033.vdocuments.mx/reader033/viewer/2022050209/5f5c298457d03113ff44486c/html5/thumbnails/45.jpg)
ご清聴ありがとうございました