More Related Content
Similar to Hivemall v0.3の機能紹介@1st Hivemall meetup
Similar to Hivemall v0.3の機能紹介@1st Hivemall meetup (20)
More from Makoto Yui (20)
Hivemall v0.3の機能紹介@1st Hivemall meetup
- 1. Copyright ©2015 Treasure Data. All Rights Reserved.
Treasure Data Inc.
Research Engineer
油井 誠 @myui
2015/05/12
Hivemall meetup #1 1
Hivemall(v0.3)の機能紹介
http://myui.github.io/
- 2. Copyright ©2015 Treasure Data. All Rights Reserved.
Ø2015/04 トレジャーデータ入社
Ø第1号のリサーチエンジニア
ØML as a Service (MLaaS)に従事
Ø2015/03 産業技術総合研究所 情報技術研究部
門 主任研究員
Ø大規模機械学習および並列データベースの研究に従
事
Ø2009/03 NAIST 博士課程修了 博士(工学)
ØXMLネイティブデータベースおよび超並列データベース
の研究に従事
ØH14未踏ユース第1期スーパクリエイタ
2
自己紹介
- 3. Copyright ©2015 Treasure Data. All Rights Reserved.
3
0
2000
4000
6000
8000
10000
12000
Aug-‐12
Sep-‐12
Oct-‐12
Nov-‐12
Dec-‐12
Jan-‐13
Feb-‐13
M
ar-‐13
Apr-‐13M
ay-‐13
Jun-‐13
Jul-‐13
Aug-‐13
Sep-‐13
Oct-‐13
Nov-‐13
Dec-‐13
Jan-‐14
Feb-‐14
M
ar-‐14
Apr-‐14M
ay-‐14
Jun-‐14
Jul-‐14
Aug-‐14
Sep-‐14
Oct-‐14
(単位)10億レコード
サービス開始
Series A Funding
100社導入
Gartner社「Cool Vendor in
Big Data」に選定される
10兆件
5兆レコード
数字でみる トレジャーデータ (2014年10月):
40万レコード 毎秒インポートされるデータの数
10兆レコード以上 インポートされたデータの数
120億 アドテク業界のお客様1社によって毎日送られてくるデータ
数字で見るトレジャーデータ
- 4. Copyright ©2015 Treasure Data. All Rights Reserved.
数字で見る現在のトレジャーデータ
100+
日本の顧客社数
15兆
保存されている
データ件数
4,000
一社が所有する最大
サーバー数
500,000
1秒間に保存される
データ件数
4
- 5. Copyright ©2015 Treasure Data. All Rights Reserved.
発表の構成
• Hivemallの概要
• How to use Hivemall
• リアルタイム予測
w/ Hivemall and RDBMS
• Hivemall v0.3の新機能紹介
• Matrix Factorization
• AdaGrad/AdaDelta
• Mix Server (Parameter Mixing)
• HivemallへのFeature Requests
5
- 6. Copyright ©2015 Treasure Data. All Rights Reserved.
Hivemallとは
Apache Hadoopのエコシステム上に構築したオープン
ソース(Apache license v2)の機械学習ライブラリ
Hadoop HDFS
MapReduce
(MRv1)
Hive/PIG
クエリ処理系
Hivemall
Apache YARN
Apache Tez
DAG処理系
MR v2
分散ファイルシステム
リソース管理システム
並列処理フレームワーク
問合せ処理系
機械学習ライブラリ
github.com/myui/hivemall
6
MapReduceもTezもYARN上の
1アプリケーション
- 7. Copyright ©2015 Treasure Data. All Rights Reserved.
R
M MM
M
HDFS
HDFS
M M M
R
M M M
R
HDFS
M MM
M M
HDFS
R
MapReduce and DAG engine
MapReduce DAG engine
Tez/Spark
ディスクにチェックポイントを
とってもとらなくても再計算可能
7
- 8. Copyright ©2015 Treasure Data. All Rights Reserved.
SQLベースの宣言的かつ容易な記述
Hivemallの特徴
何十行もの
プログラム
Mahoutによるプログラミング
CREATE TABLE lr_model AS
SELECT
feature, -‐-‐ reducers perform model averaging in
parallel
avg(weight) as weight
FROM (
SELECT logress(features,label,..) as (feature,weight)
FROM train
) t -‐-‐ map-‐only task
GROUP BY feature; -‐-‐ shuffled to reducers
ü 一般的なエンジニアでも機械学習を扱える
ü API抽象度がHiveQLと高いのでAPIがかなりstable
(Sparkはまだ結構unstable)
このような問合せを書くと学習処理が
Hadoop上で並列実行される
8
- 9. Copyright ©2015 Treasure Data. All Rights Reserved.
Hivemall v0.3で提供している機能
9
• クラス分類(二値分類/多値
分類)
ü Perceptron
ü Passive Aggressive (PA)
ü Confidence Weighted (CW)
ü Adaptive Regularization of Weight
Vectors (AROW)
ü Soft Confidence Weighted (SCW)
ü AdaGrad+RDA
• 回帰分析
ü 確率的勾配降下法に基づくロジス
ティック回帰
ü PA Regression
ü AROW Regression
ü AdaGrad
ü AdaDELTA
• K近傍法 & レコメンデーション
ü Minhashとb-‐Bit Minhash (LSH variant)
ü 類似度に基づくK近傍探索
ü Matrix Factorization
• Feature engineering
ü Feature hashing
ü Feature scaling (normalization, z-‐score)
ü TF-‐IDF vectorizer
トレジャーデータでもv0.3を5月中に
サポート予定
- 10. Copyright ©2015 Treasure Data. All Rights Reserved.
• Contribution from Daniel Dai (Pig PMC) from
Hortonworks
• To be supported from Pig 0.15
10
Hivemall on Apache Pig
- 11. Copyright ©2015 Treasure Data. All Rights Reserved.
• On-‐going work by Takeshi Yamamuro
https://github.com/maropu/hivemall-‐spark
• Spark is not a Foe (敵) but a Friend (友達) of Hivemall
J
• Supports Hyper parameter optimization and model
selection on Spark though Spark ML Pipeline
More to be introduced by @maropu
11
Hivemall on Apache Spark
- 12. Copyright ©2015 Treasure Data. All Rights Reserved.
発表の構成
• Hivemallの概要
• How to use Hivemall
• リアルタイム予測
w/ Hivemall and RDBMS
• Hivemall v0.3の新機能紹介
• Matrix Factorization
• AdaGrad/AdaDelta
• Mix Server (Parameter Mixing)
• HivemallへのFeature Requests
12
- 13. Copyright ©2015 Treasure Data. All Rights Reserved.
How to use Hivemall
Machine
Learning
Training
Prediction
Prediction
Model
Label
Feature Vector
Feature Vector
Label
Data preparation
13
- 14. Copyright ©2015 Treasure Data. All Rights Reserved.
Create external table e2006tfidf_train (
rowid int,
label float,
features ARRAY<STRING>
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '¥t'
COLLECTION ITEMS TERMINATED BY ",“
STORED AS TEXTFILE LOCATION '/dataset/E2006-
tfidf/train';
How to use Hivemall – データの準備
訓練とテストデータ用のテーブルを定義
HDFSに置いた(HiveのSERDEでパース可能な)任意フォー
マットのデータを利用可能
14
- 15. Copyright ©2015 Treasure Data. All Rights Reserved.
How to use Hivemall
Machine
Learning
Training
Prediction
Prediction
Model
Label
Feature Vector
Feature Vector
Label
Feature Engineering
15
- 16. Copyright ©2015 Treasure Data. All Rights Reserved.
create view e2006tfidf_train_scaled
as
select
rowid,
rescale(target,${min_label},${max_label})
as label,
features
from
e2006tfidf_train;
Min-Max正規化による特徴量の正規化
How to use Hivemall -‐ Feature Engineering
Target値を0~1の範囲に変換
16
- 17. Copyright ©2015 Treasure Data. All Rights Reserved.
How to use Hivemall
Machine
Learning
Training
Prediction
Prediction
Model
Label
Feature Vector
Feature Vector
Label
Training
17
- 18. Copyright ©2015 Treasure Data. All Rights Reserved.
How to use Hivemall -‐ Training
CREATE TABLE lr_model AS
SELECT
feature,
avg(weight) as weight
FROM (
SELECT logress(features,label,..)
as (feature,weight)
FROM train
) t
GROUP BY feature
ロジスティック回帰による学習
予測モデルを学習するmap-‐onlyのtask
Featureの値によってmap出力結果をreducerにShuffle
特徴ごとに学習した重みの平均
を取る処理をreducer側で並列に処理
18
- 19. Copyright ©2015 Treasure Data. All Rights Reserved.
How to use Hivemall -‐ Training
CREATE TABLE news20b_cw_model1 AS
SELECT
feature,
voted_avg(weight) as weight
FROM
(SELECT
train_cw(features,label)
as (feature,weight)
FROM
news20b_train
) t
GROUP BY feature
Confidence Weightedによる学習
投票に基づきPositive or Negativeな
重みの平均
+0.7, +0.3, +0.2, -‐0.1, +0.7
CWクラス分類器による学習
19
- 20. Copyright ©2015 Treasure Data. All Rights Reserved.
20
hive> desc news20b_cw_model1;
feature int
weight double
hive> select * from a9a_model1 limit 10;
0 -0.5761121511459351
1 -1.5259535312652588
10 0.21053194999694824
100 -0.017715860158205032
101 0.007558753248304129
102 -0.277366042137146
103 -0.4896543622016907
104 -0.0955817922949791
105 0.12560302019119263
106 0.09214721620082855
How to use Hivemall -‐ Training
予測モデルテーブルの構成
- 21. Copyright ©2015 Treasure Data. All Rights Reserved.
create table news20mc_ensemble_model1 as
select
label,
cast(feature as int) as feature,
cast(voted_avg(weight) as float) as weight
from
(select
train_multiclass_cw(addBias(features),label)
as (label,feature,weight)
from
news20mc_train_x3
union all
select
train_multiclass_arow(addBias(features),label)
as (label,feature,weight)
from
news20mc_train_x3
union all
select
train_multiclass_scw(addBias(features),label)
as (label,feature,weight)
from
news20mc_train_x3
) t
group by label, feature;
アンサンブル学習 for stable prediction performance
個別に学習した予測モデルを
Union allでまとめる
21
- 22. Copyright ©2015 Treasure Data. All Rights Reserved.
How to use Hivemall
Machine
Learning
Training
Prediction
Prediction
Model
Label
Feature Vector
Feature Vector
Label
Prediction
22
- 23. Copyright ©2015 Treasure Data. All Rights Reserved.
How to use Hivemall -‐ Prediction
CREATE TABLE lr_predict
as
SELECT
t.rowid,
sigmoid(sum(m.weight)) as prob
FROM
testing_exploded t LEFT OUTER JOIN
lr_model m ON (t.feature = m.feature)
GROUP BY
t.rowid
予測はテスト事例と予測モデルの
LEFT OUTER JOINによって行う
予測モデル全体をメモリに載せる必要がない
23
- 24. Copyright ©2015 Treasure Data. All Rights Reserved.
発表の構成
• Hivemallの概要
• How to use Hivemall
• リアルタイム予測
w/ Hivemall and RDBMS
• Hivemall v0.3の新機能紹介
• Matrix Factorization
• AdaGrad/AdaDelta
• Mix Server (Parameter Mixing)
• HivemallへのFeature Requests
24
- 25. Copyright ©2015 Treasure Data. All Rights Reserved.
データ分析の分類とツール
25
MLCTでの@tokorotenさんのスライドより抜粋
「プロダクション環境でオンラインで機械学習を動かすにあたってツライ話」
http://www.slideshare.net/TokorotenNakayama/mlct/12
需要がない??
実は最も重要
- 26. Copyright ©2015 Treasure Data. All Rights Reserved.
How to use Hivemall
Machine
Learning
Batch Training on Hadoop
Online Prediction on RDBMS
Prediction
Model
Label
Feature Vector
Feature Vector
Label
Export
prediction model
26
- 27. Copyright ©2015 Treasure Data. All Rights Reserved.
リアルタイム予測
27
hive> desc news20b_cw_model1;
feature int
weight double
#1 予測モデルのexport
Any RDBMS
TD export
TDではモデル構築(SQL実行)結果
のexportを定期自動実行できる
103 -0.4896543622016907
104 -0.0955817922949791
105 0.12560302019119263
106 0.09214721620082855
- 28. Copyright ©2015 Treasure Data. All Rights Reserved.
28
hive> desc testing_exploded;
feature string
value float
リアルタイム予測
#2 feature/valueからなるviewを作成
SIGMOID(x) =1.0 / (1.0 + exp(-‐x))
Prediction
Model
Label
Feature Vector
SELECT
sigmoid(sum(t.value * m.weight)) as prob
FROM
testing_exploded t LEFT OUTER JOIN
prediction_model m ON (t.feature = m.feature)
#3 実際の予測を実行
例えばあるユーザの特徴ベクトルを
selectしてexplodeする
(SubqueryやWITH句でも良い)
modelテーブルの
feature絡むに索引を
貼っておくと高速
- 29. Copyright ©2015 Treasure Data. All Rights Reserved.
余談: Amazon Machine Learningのコスト
Vowpal Wabbit(単一プロセス版?)ベースらしい
29
モデル構築や評価時
$0.42/インスタンス時
バッチ予測
$0.1/1000件
リアルタイム予測
$0.1/1000件(+キャパシティ予約のチャージ)
広告分野での利用だとリアルタイム予測をかなりの頻度
で行うのでモデルを取得できないと厳しい(!?)
- 30. Copyright ©2015 Treasure Data. All Rights Reserved.
30
広告系でのHivemallの応用例
Hivemallで
予測モデル構築
Real-‐time prediction
on a RDBMS
*近々記事を書きます
- 31. Copyright ©2015 Treasure Data. All Rights Reserved.
発表の構成
• Hivemallの概要
• How to use Hivemall
• リアルタイム予測
w/ Hivemall and RDBMS
• Hivemall v0.3の新機能紹介
• Matrix Factorization
• AdaGrad/AdaDelta
• Mix Server (Parameter Mixing)
• HivemallへのFeature Requests
31
- 33. Copyright ©2015 Treasure Data. All Rights Reserved.
33
評価値の
平均
Matrix Factorization
正則化項
ユーザおよび商品ごとの
評価バイアスを考慮
Biased MFのSGDおよびAdagradによる最適化
- 34. Copyright ©2015 Treasure Data. All Rights Reserved.
34
Matrix Factorizationの学習
ローカルディスクに訓練事例を書き出すことで学習が収束するまでの
繰り返し学習に対応(全体最適化のためにパラメタ交換が必要)
- 36. Copyright ©2015 Treasure Data. All Rights Reserved.
http://bit.ly/hivemall-‐mf
交差検定の並列処理
各foldごとの訓練データ、テストデータのVIEWを
定義することでえ、学習モデルを並列に構築~
検定までを並列実行可能
36
- 37. Copyright ©2015 Treasure Data. All Rights Reserved.
Sparkのmatrix factorizationとの比較
• 精度面はほぼ同等(Movielens 10Mで評価時)
• Qiitaに詳しい記事を載せている(Hivemall Qiita/Matrix
Factorizationで検索)
• Sparkの場合は100+行のScalaコーディングが必要
37
http://bit.ly/spark-‐mf
- 38. Copyright ©2015 Treasure Data. All Rights Reserved.
AdaGrad
確率的勾配降下法(SGD)のモデルパラメタの更新
学習率 勾配
学習率の指定方法が難しい→自動設定できないか?→AdaGrad
過去の勾配の二乗の総和を更新対象の特徴ごとに保存
学習率
学習率の減少を保障
AdaDeltaはAdaGradの定数αの手動設定の
問題と学習率がtが進むと小さくなりすぎる問題に対処
38
- 39. Copyright ©2015 Treasure Data. All Rights Reserved.
機械学習におけるパラメタ交換
39
学習器1
学習器2
学習器N
パラメタ
交換
学習
モデル
分割された訓練例例
データ並列列
データ並列列
(モデルパラメタ)
- 40. Copyright ©2015 Treasure Data. All Rights Reserved.
create table kdd10a_pa1_model1 as
select
feature,
cast(voted_avg(weight) as float) as weight
from
(select
train_pa1(addBias(features),label,"-‐mix host01,host02,host03")
as (feature,weight)
from
kdd10a_train_x3
) t
group by feature;
MIX Serverの利用
このように学習器の呼び出しで
Mix serverをオプション指定する
40
- 41. Copyright ©2015 Treasure Data. All Rights Reserved.
・・・・・・
Model updates
Async add
AVG/Argmin KLD accumulator
hash(feature) % N
Non-‐blocking Channel
(single shared TCP connection w/ TCP keepalive)
classifiers
Mix serv.Mix serv.
Computation/training
is not being blocked
MIX Serverの概要
41
- 42. Copyright ©2015 Treasure Data. All Rights Reserved.
発表の構成
• Hivemallの概要
• How to use Hivemall
• リアルタイム予測
w/ Hivemall and RDBMS
• Hivemall v0.3の新機能紹介
• Matrix Factorization
• AdaGrad/AdaDelta
• Mix Server (Parameter Mixing)
• HivemallへのFeature Requests
42
- 44. Copyright ©2015 Treasure Data. All Rights Reserved.
44
Treasure Dataでは、機械学習の実装に強いエンジニア、
Kaggle Master/Data Scientistsも募集しております!
(夏のインターン生も近いうちに募集します)
Hiringの一覧にはまだ出ていないので、興味のある方は
myui@treasure-‐data.com または @myui に連絡ください
http://bit.ly/gmo0512
休憩時間などにアンケートにご協力よろしくお
願い致します