Upload
kazk1018
View
1.418
Download
2
Embed Size (px)
Citation preview
Introduction
■ 所属: SAT(Scientific Advertising Team)
■ 職業: Data Scientist ■ 最近気になる技術:
■ Apache Spark
■ Presto.io
■ React.js
2
データサイエンティスト
4
Business
統計学 機械学習 データ分析
データ加工 データベース データ可視化
マネタイズ マーケティング ドメイン知識
Data Science
Data Engineering
■ データから新たな価値を創造し、ビジネス課題に対する適切な答えを導き出すプロフェッショナル
http://www.datascientist.or.jp/
アドテクにおける データサイエンティスト
■ ビッグデータとの格闘 ■ 数億レコード/日のデータ量 ■ 多種多様なデータ (impressions, users, conversions etc..)
!
■ ビジネスの意思決定スピード ■ 意思決定を支援することが非常に重要 ■ 正確かつ素早いデータ分析が求められる
5
Agenda
■ MLlib
■ Spark SQL
■ DataFrame
7
Spark SQL
Spark Streaming
MLlib (machine learning)
GraphX (graph)
Apache Spark
MLlib■ Sparkのエコシステムの中の機械学習ライブラリ
■ Statistics
■ Classification
■ Regression
■ Tree
■ Clustering
■ Recommendation
■ Feature
■ Evaluation
■ etc...10
■ User×ItemのRating情報からレコメンド
Case1: 推薦アルゴリズム
11
Item A Item B Item C Item D Item E Item F
User A 4.0 3.0
User B 1.0 2.0
User C 3.0 5.0 3.0
User D 4.0 4.0
Q. UserにどのItemを推薦するのが良いか?
Case1: 推薦アルゴリズム
12
User A, Item B, 4.0 User A, Item E, 3.0 User B, Item C, 1.0 ・ ・ ・
Text File (Train)
Rating(User, Item, Rating) Rating(User, Item, Rating) Rating(User, Item, Rating) ・ ・ ・
RDD
Array(User, Item) Array(User, Item) Array(User, Item) ・ ・ ・
RDD
ALS train
MLlib
ALS predict
User A, Item A User A, Item C User A, Item F
Text File (Test)
ModelLoad
User A, Item A, 4.0 User A, Item C, 0.0 User A, Item F, 1.0
Result
train
test
New Feature!
Case2: トピックモデル
13
■ ある文章を各単語に与えられたトピックで表現
Topic A Topic B
学生 システム
授業 機能
大学 開発
学科 データ
0
2
3
5
6
学生 授業 大学 学科 システム 機能 開発 データ
トピックモデル※上の単語ほどトピックの
意味を強く表現
ある文章の単語の出現頻度
Topic Bに分類
Case2: トピックモデル
14
MLlib
0
2
4
5
7
A B C D E F G H I0
2
4
5
7
A B C D E F G H I0
2
4
5
7
A B C D E F G H I0
2
4
5
7
A B C D E F G H I0
2
4
5
7
A B C D E F G H I
LDA (Latent Dirichlet Allocation)
TF-IDF (重要語抽出)
+ WordCount
各単語の出現頻度
0%
8%
15%
23%
30%
A B C D E F G H I
0%
13%
25%
38%
50%
A B C D E F G H I
トピックA
トピックB・ ・ ・
文章群
New Feature!
MLlibのこれから■ Deep Learning ■ Neural Network ■ Auto Encoder, RBM etc...
■ Streaming ML ■ LogisticRegression (Released in 1.3.1)
15
Spark SQL■ データサイエンティストのボトルネックはETL ■ ETL (Extract, Transform, Load) ■ 散らばった大規模データを収集, 利用する形に加工
!
■ Spark SQL ■ 複数のリソースに接続可能 ■ 取得したデータをそのままMLlibなどに使える
18
Data Sources■ RDD (TextFile, HDFS, AWS S3)
■ JSON Files
■ Parquet Files
■ Hive Tables
■ JDBC / ODBC (New Feature!)
19
Query ~SchemeRDD~
■ registerTable()によりテーブルを登録
■ クエリは基本的なSQLに対応
21
val user = sqlContext.jsonFile(“user.json”) user.registerTable(“users”) val result: SchemeRDD = sqlContext.sql(“SELECT name FROM users WHERE age >= 20”)
DataFrame■ データサイエンティスト待望の機能 ■ SchemeRDD (~ 1.2) => DataFrame (1.3 ~)
■ パフォーマンスもRDDでの処理より高速
■ Python => pandas, R => DataFrame
■ 従来の分析環境に慣れている人の移行コスト減
24
Query ~DataFrame~
■ 取得してきたデータをそのまま加工
■ メソッド(filter, groupby, agg, etc…)チェーンしていくことで柔軟に必要なデータを取得
■ UDF(User Defined Functions)も自ら実装可能25
val result = user.filter(“age >= 20”)
Pandasとの連携
■ 多くのデータサイエンティストに利用されているpandas.DataFrameに変換可能(逆も可)
ビッグデータ => spark.sql.DataFrame スモールデータ => pandas.DataFrame
26
pandas_df = df.toPandas()
Data Platform
28
Extract, Transform, Load
DataFrame Spark SQL
Streaming
Analysis, Learning
MLlib GraphX
Python R
Data Sources