SlideShare a Scribd company logo
1 of 46
きちんと知りたいApache Spark
∼機械学習とさまざまな機能群
株式会社リクルートテクノロジーズ
アドバンスドテクノロジーラボ
石川有
本発表の想定聴講者とゴール
• 想定している聴講者
• CTOや技術選択の責任者レベルの方
• Spark の機械学習ライブラリの初学者
• ゴール
• Sparkのデータサイエンス関連の Top-Level API は企業における
• 「実践」を意識して作られていることを知っていただく
• スケーラブルな機械学習アルゴリズムが簡単に利用できる
• 実践的な機械学習に必要な一連の複雑な処理も簡単に利用できる
• 本発表では話さないこと
• Spark の分散処理のやキャッシュの仕組み
• Spark のクラスタ管理やチューニング
• 個別の機械学習アルゴリズムの具体的な解説 など
2
Talk Overview
• Spark 関連の基礎知識
• Spark MLlib
• DataFrame API
• Pipline API
• まとめ
3
Apache Sparkとは?
• 大規模データを処理するための分散処理システム
• Speed, Easy of Use, Generality, Runs Everywhere
• 「ポスト Hadoop MapReduce」の有力候補
• リリース頻度:約3ヶ月に1回リリース
• 現在の stable バージョンは 1.5
• 次のバージョン 1.6 はおそらく 12 月初旬にリリース見込み
• プログラミングインタフェース:
• 企業におけるデータ分析シーンに対応
• バッチ,ストリーミング,インタラクティブ(探索的分析)
• 標準で機械学習,グラフ処理などのコンポーネントを備えている
4
Spark Components
5
サポートしているデータソース
6
Talk Overview
• Spark 関連の基礎知識
• Spark MLlib
• DataFrame API
• Pipline API
• FAQ
• まとめ
8
Spark Components
9
spark.mllib
MLlib のミッション
• プロダクションレベルでの機械学習を簡単にスケーラブル
で実行できるようにする
• 機械学習アプリケーションを簡単に構築
• 大規模データセットでの学習を可能にする
• Spark 0.8 から開発が始まる
• 現在では累計で 50+ の企業,100+ の個人が開発に参加
• 分散機械学習アルゴリズムは日々追加されています
• 1.6 でリリース予定の bisecting k-means の実装を担当
• 開発を通して得た知見はまた別の機会で話したいと思います
10
MLlib-specific Contribution Guidelines
• Be widely known
• Be used and accepted
• academic citations and concrete use cases can help justify this
• Be highly scalable
• Be well documented
• Have APIs consistent with other algorithms in MLLib that
accomplish the same thing
• Come with a reasonable expectation of developer support.
11
[https://cwiki.apache.org/confluence/display/SPARK/Contributing+to+Spark]
MLlib で実装されている手法
12
レコメンドアルゴリズム ALS の
単純な実行方法
val ratings =
sc.textFile(“s3n:/path/to/csv/files/*”)
.map(_.split(","))
.map(x => Rating(x(0).toInt, x(1).toInt, x(2).toDouble)
13
Data (CSV)
Load Data
Train Model
Evaluate
user_id product_id rating
473 348 0.8
5623 87583 0.3
6545 9382 0.5
234 246 0.6
レコメンドアルゴリズム ALS の
単純な実行方法
val ratings =
sc.textFile(“s3n:/path/to/csv/files/*”)
.map(_.split(","))
.map(x => Rating(x(0).toInt, x(1).toInt, x(2).toDouble)
val als = new ALS.setRank(10).setIterations(10)
val model = als.run(ratings)
14
Data
Loa Data
Train Model
Evaluate
レコメンド手法のひとつである
ALS のオブジェクトを生成して訓練
レコメンドアルゴリズム ALS の
単純な実行方法
val ratings =
sc.textFile(“s3n:/path/to/csv/files/*”)
.map(_.split(","))
.map(x => Rating(x(0).toInt, x(1).toInt, x(2).toDouble)
val als = new ALS.setRank(10).setIterations(10)
val model = als.run(ratings)
val userId = 12345
val productId = 987654
model.predict(userId, productId)
0.4…
15
Data
Loa Data
Train Model
EvaluateTop-level API がよくデザインされているので
非常に簡単に機械学習ライブラリが使える
ALSのベンチマーク
• データセット:Amazon Reviews Dataset
• データサイズ: 660万ユーザ, 220万アイテム
• クラスタサイズ:m3.2xlarge x 16
16
cited by: Xiangrui Meng: A More Scaleable Way of Making Recommendations with MLlib
MLlib の ALS について詳しく知りたい方は
「レコメンドバッチ高速化に向けたSpark/MapReduceの機械学習ライブラリ比較検証」
http://www.slideshare.net/recruitcojp/sparkmapreduce
17
Talk Overview
• Spark 関連の基礎知識
• Spark MLlib
• DataFrame API
• Pipline API
• まとめ
18
Spark Components
19
DataFrame API
20
age prefecture name
34 Tokyo ****
41 Osaka ****
27 Saitama ****
24 Chiba ****
// 都道府県ごとのユーザの平均年齢を計算
data.groupBy(“prefecture”).ave(“age”)
// 年齢 25 歳以上のユーザ数
data.filter(“age >= 25”).count()
// SQL でも記述できる
data.sql(“select age from user_table”)
データ分析でよく使われる機能を DSL として提供
Hive などのデータソースにも対応
user_table
DataFrame の豊富なビルドイン関数
• 日付け関数,数学関数,文字列関数など標準サポート
• UDFで独自の関数も簡単に作成できる
21
Spark をネイティブで書くより早い
22
cited by: Spark Summit EU 2015: Spark DataFrames: Simple and Fast Analysis of Structured Data
DataFrame API を利用すれば
少ないコードでより高速に処理することができる
Talk Overview
• Spark 関連の基礎知識
• Spark MLlib
• DataFrame API
• Pipline API
• まとめ
23
Spark Components
24
spark.ml
spark.mllib
実装面から見れば
25
MLlib DataFrame
ML Pipeline
Simple ML Pipeline
26
Data
Feature
Extraction
Train Model
Final
Model
Our Task
• レビュー (review) のテキストから評価 (rating) を予測
27
review Model rating
String Int
Load Data
• Data Schema
• label: Int
• text: String
28
Load Data
Feature Extraction
Train Model
Evaluate
Feature Extraction
• Data Schema
• label: Int
• text: String
• words: Seq[String]
• features: Vector
29
Load Data
Hashed Term Freq.
Train Model
Evaluate
Tokenizer
Transformer
Train a Model
• Data Schema
• label: Int
• text: String
• words: Seq[String]
• features: Vector
• prediction: Int
30
Load Data
Hashed Term Freq.
Logistic Regression
Evaluate
Tokenizer
Transformer
Estimator
Spark ML Pipeline API
val tokenizer = new Tokenizer()
.setInputCol("text")
.setOutputCol(“words")
val hashingTF = new HashingTF()
.setNumFeatures(1000)
.setInputCol(tokenizer.getOutputCol)
.setOutputCol("features")
31
Load Data
Hashed Term Freq.
Logistic Regression
Evaluate
Tokenizer
Spark ML Pipeline API
val tokenizer = new Tokenizer()
.setInputCol("text")
.setOutputCol(“words")
val hashingTF = new HashingTF()
.setNumFeatures(1000)
.setInputCol(tokenizer.getOutputCol)
.setOutputCol("features")
val lr = new LogisticRegression()
.setMaxIter(10)
.setRegParam(0.01)
32
Load Data
Hashed Term Freq.
Logistic Regression
Evaluate
Tokenizer
Spark ML Pipeline API
val tokenizer = new Tokenizer()
.setInputCol("text")
.setOutputCol(“words")
val hashingTF = new HashingTF()
.setNumFeatures(1000)
.setInputCol(tokenizer.getOutputCol)
.setOutputCol("features")
val lr = new LogisticRegression()
.setMaxIter(10)
.setRegParam(0.01)
val pipeline = new Pipeline()
.setStages(Array(tokenizer, hashingTF, lr))
val model = pipeline.fit(training)
33
Pipeline
Load Data
Hashed Term Freq.
Logistic Regression
Evaluate
Tokenizer
Simple ML Pipeline
34
Data
Feature
Extraction
Train Model
Final
Model
A Little Simple ML Pipeline
35
ML Pipelines for Test
36
Pipeline
Training Data
Hashed Term Freq.
Logistic Regression
Evaluate
Tokenizer
Pipeline
Test Data
Hashed Term Freq.
Logistic Regression
Evaluate
Tokenizer
Pipeline API for Test
val tokenizer = new Tokenizer()
.setInputCol("text")
.setOutputCol(“words")
val hashingTF = new HashingTF()
.setNumFeatures(1000)
.setInputCol(tokenizer.getOutputCol)
.setOutputCol("features")
val lr = new LogisticRegression()
.setMaxIter(10)
.setRegParam(0.01)
val pipeline = new Pipeline()
.setStages(Array(tokenizer, hashingTF, lr))
val model = pipeline.fit(training)
model.transform(test)
37
Pipeline
Test Data
Hashed Term Freq.
Logistic Regression
Evaluate
Tokenizer
結果のイメージ
38
review Model rating
String Int
Practical ML Pipeline is Complicated!
39
Data Image!
Parser
Normalizer Convolver
sqrt,mean
Zipper
Linear
Solver
Symmetric!
Rectifier
ident,abs
ident,mean
Global
Pooler
Patch!
Extractor
Patch
Whitener
KMeans!
Clusterer
Feature Extractor
Label!
Extractor
Linear!
Mapper
Model
Test!
Data
Label!
Extractor
Feature
Extractor
Test
Error
Error!
Computer
No Hyperparameters!
A few Hyperparameters!
Lotsa Hyperparameters
Parameter Tuning
40
Hashed Term Freq.
Logistic Regression
Evaluate
Tokenizer
hashingTF.numFeatures
{10, 20, 40}
lr.regParam
{0.01, 0.1, 0.5}
Pipeline
Cross-Validation
41
Practical Spark ML Pipeline API
val paramGrid = new ParamGridBuilder()
.addGrid(hashingTF.numFeatures, Array(10, 20, 40))
.addGrid(lr.regParam, Array(0.01, 0.1, 0.5))
.build()
42
Practical Spark ML Pipeline API
val paramGrid = new ParamGridBuilder()
.addGrid(hashingTF.numFeatures, Array(10, 20, 40))
.addGrid(lr.regParam, Array(0.01, 0.1, 0.5))
.build()
val cv = new CrossValidator()
.setNumFolds(3)
.setEstimator(pipeline)
.setEstimatorParamMaps(paramGrid)
.setEvaluator(new BinaryClassificationEvaluator)
val cvModel = cv.fit(trainingDataset)
43
Parameter Tuning も Cross-Validation も
API が用意されているので複雑な PIpeline も簡単に定義
Model export/import for Pipeline API is coming soon!
44
Pipeline
Load Data
Hashed Term Freq.
Logistic Regression
Tokenizer
save
Model
Load Model
Evaluate
モデルを保存することで
再構築の必要がなく再利用が簡単
Talk Overview
• Spark 関連の基礎知識
• Spark MLlib
• DataFrame API
• Pipline API
• まとめ
45
まとめ
• Spark は企業における3つの分析シーンに対応
• バッチ,ストリーミング,インタラクティブ(探索的分析)
• DataFrame API は大規模分散処理の探索分析をより身近なものにする
• SQL で実行することもできる
• Hive などのさまざまなデータソースをサポート
• 最適化機構により「ネイティブ」に Spark のコードを書くより早くなる
• Spark の機械学習ライブラリ MLlibで,プロダクションレベルでの機械学習を簡単
にスケーラブルで実行できる
• 機械学習アプリケーションを簡単に構築
• 大規模データセットでの学習を可能にする
• Pipeline API を利用することで「実践」での複雑化する ML Pipeline の管理が簡単
46
Sparkのデータサイエンス関連の Top-Level API は
企業における「実践」を意識して作られていることを知っていただく

More Related Content

What's hot

Spot Instance + Spark + MLlibで実現する簡単低コスト機械学習
Spot Instance + Spark + MLlibで実現する簡単低コスト機械学習Spot Instance + Spark + MLlibで実現する簡単低コスト機械学習
Spot Instance + Spark + MLlibで実現する簡単低コスト機械学習Katsushi Yamashita
 
R超入門機械学習をはじめよう
R超入門機械学習をはじめようR超入門機械学習をはじめよう
R超入門機械学習をはじめよう幹雄 小川
 
Spark MLlibでリコメンドエンジンを作った話
Spark MLlibでリコメンドエンジンを作った話Spark MLlibでリコメンドエンジンを作った話
Spark MLlibでリコメンドエンジンを作った話Koki Shibata
 
Sparkによる GISデータを題材とした時系列データ処理 (Hadoop / Spark Conference Japan 2016 講演資料)
Sparkによる GISデータを題材とした時系列データ処理 (Hadoop / Spark Conference Japan 2016 講演資料)Sparkによる GISデータを題材とした時系列データ処理 (Hadoop / Spark Conference Japan 2016 講演資料)
Sparkによる GISデータを題材とした時系列データ処理 (Hadoop / Spark Conference Japan 2016 講演資料)Hadoop / Spark Conference Japan
 
2015 03-12 道玄坂LT祭り第2回 Spark DataFrame Introduction
2015 03-12 道玄坂LT祭り第2回 Spark DataFrame Introduction2015 03-12 道玄坂LT祭り第2回 Spark DataFrame Introduction
2015 03-12 道玄坂LT祭り第2回 Spark DataFrame IntroductionYu Ishikawa
 
20180109 titech lecture_ishizaki_public
20180109 titech lecture_ishizaki_public20180109 titech lecture_ishizaki_public
20180109 titech lecture_ishizaki_publicKazuaki Ishizaki
 
Project Tungsten Bringing Spark Closer to Bare Meta (Hadoop / Spark Conferenc...
Project Tungsten Bringing Spark Closer to Bare Meta (Hadoop / Spark Conferenc...Project Tungsten Bringing Spark Closer to Bare Meta (Hadoop / Spark Conferenc...
Project Tungsten Bringing Spark Closer to Bare Meta (Hadoop / Spark Conferenc...Hadoop / Spark Conference Japan
 
Oracle Cloud Developers Meetup@東京
Oracle Cloud Developers Meetup@東京Oracle Cloud Developers Meetup@東京
Oracle Cloud Developers Meetup@東京tuchimur
 
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニングアドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニングYosuke Mizutani
 
実動するIot&hadoopから学ぶ会_資料
実動するIot&hadoopから学ぶ会_資料実動するIot&hadoopから学ぶ会_資料
実動するIot&hadoopから学ぶ会_資料FwardNetwork
 
Hivemallで始める不動産価格推定サービス
Hivemallで始める不動産価格推定サービスHivemallで始める不動産価格推定サービス
Hivemallで始める不動産価格推定サービスKentaro Yoshida
 
あなたのScalaを爆速にする7つの方法(日本語版)
あなたのScalaを爆速にする7つの方法(日本語版)あなたのScalaを爆速にする7つの方法(日本語版)
あなたのScalaを爆速にする7つの方法(日本語版)x1 ichi
 
20191211_Apache_Arrow_Meetup_Tokyo
20191211_Apache_Arrow_Meetup_Tokyo20191211_Apache_Arrow_Meetup_Tokyo
20191211_Apache_Arrow_Meetup_TokyoKohei KaiGai
 
ログ解析基盤におけるストリーム処理パイプラインについて
ログ解析基盤におけるストリーム処理パイプラインについてログ解析基盤におけるストリーム処理パイプラインについて
ログ解析基盤におけるストリーム処理パイプラインについてcyberagent
 
Parquetはカラムナなのか?
Parquetはカラムナなのか?Parquetはカラムナなのか?
Parquetはカラムナなのか?Yohei Azekatsu
 
20200424_Writable_Arrow_Fdw
20200424_Writable_Arrow_Fdw20200424_Writable_Arrow_Fdw
20200424_Writable_Arrow_FdwKohei KaiGai
 
CloudTrail ログの検索を爆速化してみた
CloudTrail ログの検索を爆速化してみたCloudTrail ログの検索を爆速化してみた
CloudTrail ログの検索を爆速化してみたYohei Azekatsu
 
20171212 titech lecture_ishizaki_public
20171212 titech lecture_ishizaki_public20171212 titech lecture_ishizaki_public
20171212 titech lecture_ishizaki_publicKazuaki Ishizaki
 
20211112_jpugcon_gpu_and_arrow
20211112_jpugcon_gpu_and_arrow20211112_jpugcon_gpu_and_arrow
20211112_jpugcon_gpu_and_arrowKohei KaiGai
 

What's hot (20)

Spot Instance + Spark + MLlibで実現する簡単低コスト機械学習
Spot Instance + Spark + MLlibで実現する簡単低コスト機械学習Spot Instance + Spark + MLlibで実現する簡単低コスト機械学習
Spot Instance + Spark + MLlibで実現する簡単低コスト機械学習
 
R超入門機械学習をはじめよう
R超入門機械学習をはじめようR超入門機械学習をはじめよう
R超入門機械学習をはじめよう
 
Spark MLlibでリコメンドエンジンを作った話
Spark MLlibでリコメンドエンジンを作った話Spark MLlibでリコメンドエンジンを作った話
Spark MLlibでリコメンドエンジンを作った話
 
Sparkによる GISデータを題材とした時系列データ処理 (Hadoop / Spark Conference Japan 2016 講演資料)
Sparkによる GISデータを題材とした時系列データ処理 (Hadoop / Spark Conference Japan 2016 講演資料)Sparkによる GISデータを題材とした時系列データ処理 (Hadoop / Spark Conference Japan 2016 講演資料)
Sparkによる GISデータを題材とした時系列データ処理 (Hadoop / Spark Conference Japan 2016 講演資料)
 
2015 03-12 道玄坂LT祭り第2回 Spark DataFrame Introduction
2015 03-12 道玄坂LT祭り第2回 Spark DataFrame Introduction2015 03-12 道玄坂LT祭り第2回 Spark DataFrame Introduction
2015 03-12 道玄坂LT祭り第2回 Spark DataFrame Introduction
 
20180109 titech lecture_ishizaki_public
20180109 titech lecture_ishizaki_public20180109 titech lecture_ishizaki_public
20180109 titech lecture_ishizaki_public
 
Project Tungsten Bringing Spark Closer to Bare Meta (Hadoop / Spark Conferenc...
Project Tungsten Bringing Spark Closer to Bare Meta (Hadoop / Spark Conferenc...Project Tungsten Bringing Spark Closer to Bare Meta (Hadoop / Spark Conferenc...
Project Tungsten Bringing Spark Closer to Bare Meta (Hadoop / Spark Conferenc...
 
Oracle Cloud Developers Meetup@東京
Oracle Cloud Developers Meetup@東京Oracle Cloud Developers Meetup@東京
Oracle Cloud Developers Meetup@東京
 
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニングアドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニング
 
実動するIot&hadoopから学ぶ会_資料
実動するIot&hadoopから学ぶ会_資料実動するIot&hadoopから学ぶ会_資料
実動するIot&hadoopから学ぶ会_資料
 
Hivemallで始める不動産価格推定サービス
Hivemallで始める不動産価格推定サービスHivemallで始める不動産価格推定サービス
Hivemallで始める不動産価格推定サービス
 
あなたのScalaを爆速にする7つの方法(日本語版)
あなたのScalaを爆速にする7つの方法(日本語版)あなたのScalaを爆速にする7つの方法(日本語版)
あなたのScalaを爆速にする7つの方法(日本語版)
 
20191211_Apache_Arrow_Meetup_Tokyo
20191211_Apache_Arrow_Meetup_Tokyo20191211_Apache_Arrow_Meetup_Tokyo
20191211_Apache_Arrow_Meetup_Tokyo
 
ログ解析基盤におけるストリーム処理パイプラインについて
ログ解析基盤におけるストリーム処理パイプラインについてログ解析基盤におけるストリーム処理パイプラインについて
ログ解析基盤におけるストリーム処理パイプラインについて
 
Parquetはカラムナなのか?
Parquetはカラムナなのか?Parquetはカラムナなのか?
Parquetはカラムナなのか?
 
20200424_Writable_Arrow_Fdw
20200424_Writable_Arrow_Fdw20200424_Writable_Arrow_Fdw
20200424_Writable_Arrow_Fdw
 
CloudTrail ログの検索を爆速化してみた
CloudTrail ログの検索を爆速化してみたCloudTrail ログの検索を爆速化してみた
CloudTrail ログの検索を爆速化してみた
 
20171212 titech lecture_ishizaki_public
20171212 titech lecture_ishizaki_public20171212 titech lecture_ishizaki_public
20171212 titech lecture_ishizaki_public
 
Thinking in Cats
Thinking in CatsThinking in Cats
Thinking in Cats
 
20211112_jpugcon_gpu_and_arrow
20211112_jpugcon_gpu_and_arrow20211112_jpugcon_gpu_and_arrow
20211112_jpugcon_gpu_and_arrow
 

Viewers also liked

30歳過ぎてもエンジニアでいるためにやったこと
30歳過ぎてもエンジニアでいるためにやったこと30歳過ぎてもエンジニアでいるためにやったこと
30歳過ぎてもエンジニアでいるためにやったことonozaty
 
閏秒挿入のお知らせ
閏秒挿入のお知らせ閏秒挿入のお知らせ
閏秒挿入のお知らせ真乙 九龍
 
Drupalによる大規模サイトの設計・実装 において何に気をつけるべきか
Drupalによる大規模サイトの設計・実装において何に気をつけるべきかDrupalによる大規模サイトの設計・実装において何に気をつけるべきか
Drupalによる大規模サイトの設計・実装 において何に気をつけるべきかdgcircus
 
オープンソースCMS「Drupal」の豊富な機能
オープンソースCMS「Drupal」の豊富な機能オープンソースCMS「Drupal」の豊富な機能
オープンソースCMS「Drupal」の豊富な機能dgcircus
 
サバフェス! 2015 Spring LT資料
サバフェス! 2015 Spring LT資料サバフェス! 2015 Spring LT資料
サバフェス! 2015 Spring LT資料Takashi Takizawa
 
Redmineでメトリクスを見える化する方法
Redmineでメトリクスを見える化する方法Redmineでメトリクスを見える化する方法
Redmineでメトリクスを見える化する方法Hidehisa Matsutani
 
DNS RFCの歩き方(短縮版)
DNS RFCの歩き方(短縮版)DNS RFCの歩き方(短縮版)
DNS RFCの歩き方(短縮版)Takashi Takizawa
 
FC SAN Fabric環境におけるパフォーマンストラブルの対処法
FC SAN Fabric環境におけるパフォーマンストラブルの対処法FC SAN Fabric環境におけるパフォーマンストラブルの対処法
FC SAN Fabric環境におけるパフォーマンストラブルの対処法Brocade
 
Zabbix 3.0 の予測機能のための数学的理解
Zabbix 3.0 の予測機能のための数学的理解Zabbix 3.0 の予測機能のための数学的理解
Zabbix 3.0 の予測機能のための数学的理解真乙 九龍
 
Redmineカスタムフィールド表示改善
Redmineカスタムフィールド表示改善Redmineカスタムフィールド表示改善
Redmineカスタムフィールド表示改善Yuuki Nara
 
View customize pluginを使いこなす
View customize pluginを使いこなすView customize pluginを使いこなす
View customize pluginを使いこなすonozaty
 
Unofficial Redmine Cookingの紹介
Unofficial Redmine Cookingの紹介Unofficial Redmine Cookingの紹介
Unofficial Redmine Cookingの紹介Yuuki Nara
 
工数把握のすすめ 〜WorkTimeプラグインの使い方〜
工数把握のすすめ 〜WorkTimeプラグインの使い方〜工数把握のすすめ 〜WorkTimeプラグインの使い方〜
工数把握のすすめ 〜WorkTimeプラグインの使い方〜Tomohisa Kusukawa
 
Redmineでメトリクスを見える化する方法
Redmineでメトリクスを見える化する方法Redmineでメトリクスを見える化する方法
Redmineでメトリクスを見える化する方法Hidehisa Matsutani
 
Redmine.tokyo 第7回勉強会 ディスカッション
Redmine.tokyo 第7回勉強会 ディスカッションRedmine.tokyo 第7回勉強会 ディスカッション
Redmine.tokyo 第7回勉強会 ディスカッションTomohisa Kusukawa
 
Redmineと自分のそのころ
Redmineと自分のそのころRedmineと自分のそのころ
Redmineと自分のそのころTomohisa Kusukawa
 
Drupal EC用モジュール「Drupal Commerce」でECサイトを構築
Drupal EC用モジュール「Drupal Commerce」でECサイトを構築Drupal EC用モジュール「Drupal Commerce」でECサイトを構築
Drupal EC用モジュール「Drupal Commerce」でECサイトを構築dgcircus
 
閏秒挿入のお知らせ
閏秒挿入のお知らせ閏秒挿入のお知らせ
閏秒挿入のお知らせ真乙 九龍
 
Brocade PartnerWebinar: Network Edge キャンパス・スイッチ新製品&新機能、および有線&無線統合ソリューションアップデー...
Brocade PartnerWebinar: Network Edge キャンパス・スイッチ新製品&新機能、および有線&無線統合ソリューションアップデー...Brocade PartnerWebinar: Network Edge キャンパス・スイッチ新製品&新機能、および有線&無線統合ソリューションアップデー...
Brocade PartnerWebinar: Network Edge キャンパス・スイッチ新製品&新機能、および有線&無線統合ソリューションアップデー...Brocade
 
Redmineサーバ統合事例
Redmineサーバ統合事例Redmineサーバ統合事例
Redmineサーバ統合事例Yuuki Nara
 

Viewers also liked (20)

30歳過ぎてもエンジニアでいるためにやったこと
30歳過ぎてもエンジニアでいるためにやったこと30歳過ぎてもエンジニアでいるためにやったこと
30歳過ぎてもエンジニアでいるためにやったこと
 
閏秒挿入のお知らせ
閏秒挿入のお知らせ閏秒挿入のお知らせ
閏秒挿入のお知らせ
 
Drupalによる大規模サイトの設計・実装 において何に気をつけるべきか
Drupalによる大規模サイトの設計・実装において何に気をつけるべきかDrupalによる大規模サイトの設計・実装において何に気をつけるべきか
Drupalによる大規模サイトの設計・実装 において何に気をつけるべきか
 
オープンソースCMS「Drupal」の豊富な機能
オープンソースCMS「Drupal」の豊富な機能オープンソースCMS「Drupal」の豊富な機能
オープンソースCMS「Drupal」の豊富な機能
 
サバフェス! 2015 Spring LT資料
サバフェス! 2015 Spring LT資料サバフェス! 2015 Spring LT資料
サバフェス! 2015 Spring LT資料
 
Redmineでメトリクスを見える化する方法
Redmineでメトリクスを見える化する方法Redmineでメトリクスを見える化する方法
Redmineでメトリクスを見える化する方法
 
DNS RFCの歩き方(短縮版)
DNS RFCの歩き方(短縮版)DNS RFCの歩き方(短縮版)
DNS RFCの歩き方(短縮版)
 
FC SAN Fabric環境におけるパフォーマンストラブルの対処法
FC SAN Fabric環境におけるパフォーマンストラブルの対処法FC SAN Fabric環境におけるパフォーマンストラブルの対処法
FC SAN Fabric環境におけるパフォーマンストラブルの対処法
 
Zabbix 3.0 の予測機能のための数学的理解
Zabbix 3.0 の予測機能のための数学的理解Zabbix 3.0 の予測機能のための数学的理解
Zabbix 3.0 の予測機能のための数学的理解
 
Redmineカスタムフィールド表示改善
Redmineカスタムフィールド表示改善Redmineカスタムフィールド表示改善
Redmineカスタムフィールド表示改善
 
View customize pluginを使いこなす
View customize pluginを使いこなすView customize pluginを使いこなす
View customize pluginを使いこなす
 
Unofficial Redmine Cookingの紹介
Unofficial Redmine Cookingの紹介Unofficial Redmine Cookingの紹介
Unofficial Redmine Cookingの紹介
 
工数把握のすすめ 〜WorkTimeプラグインの使い方〜
工数把握のすすめ 〜WorkTimeプラグインの使い方〜工数把握のすすめ 〜WorkTimeプラグインの使い方〜
工数把握のすすめ 〜WorkTimeプラグインの使い方〜
 
Redmineでメトリクスを見える化する方法
Redmineでメトリクスを見える化する方法Redmineでメトリクスを見える化する方法
Redmineでメトリクスを見える化する方法
 
Redmine.tokyo 第7回勉強会 ディスカッション
Redmine.tokyo 第7回勉強会 ディスカッションRedmine.tokyo 第7回勉強会 ディスカッション
Redmine.tokyo 第7回勉強会 ディスカッション
 
Redmineと自分のそのころ
Redmineと自分のそのころRedmineと自分のそのころ
Redmineと自分のそのころ
 
Drupal EC用モジュール「Drupal Commerce」でECサイトを構築
Drupal EC用モジュール「Drupal Commerce」でECサイトを構築Drupal EC用モジュール「Drupal Commerce」でECサイトを構築
Drupal EC用モジュール「Drupal Commerce」でECサイトを構築
 
閏秒挿入のお知らせ
閏秒挿入のお知らせ閏秒挿入のお知らせ
閏秒挿入のお知らせ
 
Brocade PartnerWebinar: Network Edge キャンパス・スイッチ新製品&新機能、および有線&無線統合ソリューションアップデー...
Brocade PartnerWebinar: Network Edge キャンパス・スイッチ新製品&新機能、および有線&無線統合ソリューションアップデー...Brocade PartnerWebinar: Network Edge キャンパス・スイッチ新製品&新機能、および有線&無線統合ソリューションアップデー...
Brocade PartnerWebinar: Network Edge キャンパス・スイッチ新製品&新機能、および有線&無線統合ソリューションアップデー...
 
Redmineサーバ統合事例
Redmineサーバ統合事例Redmineサーバ統合事例
Redmineサーバ統合事例
 

Similar to 2015-11-17 きちんと知りたいApache Spark ~機械学習とさまざまな機能群

Deep Dive into Spark SQL with Advanced Performance Tuning
Deep Dive into Spark SQL with Advanced Performance TuningDeep Dive into Spark SQL with Advanced Performance Tuning
Deep Dive into Spark SQL with Advanced Performance TuningTakuya UESHIN
 
2019.03.19 Deep Dive into Spark SQL with Advanced Performance Tuning
2019.03.19 Deep Dive into Spark SQL with Advanced Performance Tuning2019.03.19 Deep Dive into Spark SQL with Advanced Performance Tuning
2019.03.19 Deep Dive into Spark SQL with Advanced Performance TuningTakuya UESHIN
 
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標Tomoharu ASAMI
 
[Oracle big data jam session #1] Apache Spark ことはじめ
[Oracle big data jam session #1] Apache Spark ことはじめ[Oracle big data jam session #1] Apache Spark ことはじめ
[Oracle big data jam session #1] Apache Spark ことはじめKenichi Sonoda
 
MySQL57 Update@OSC Fukuoka 20151003
MySQL57 Update@OSC Fukuoka 20151003MySQL57 Update@OSC Fukuoka 20151003
MySQL57 Update@OSC Fukuoka 20151003Shinya Sugiyama
 
Developers.IO 2019 Effective Datalake
Developers.IO 2019 Effective DatalakeDevelopers.IO 2019 Effective Datalake
Developers.IO 2019 Effective DatalakeSatoru Ishikawa
 
Open capi meetup20180409 (revised)
Open capi meetup20180409 (revised)Open capi meetup20180409 (revised)
Open capi meetup20180409 (revised)Yutaka Kawai
 
Qlik TECH TALK 20210706 SAPデータ分析を加速するQlikのアクセレレーターパッケージご紹介
Qlik TECH TALK 20210706 SAPデータ分析を加速するQlikのアクセレレーターパッケージご紹介Qlik TECH TALK 20210706 SAPデータ分析を加速するQlikのアクセレレーターパッケージご紹介
Qlik TECH TALK 20210706 SAPデータ分析を加速するQlikのアクセレレーターパッケージご紹介QlikPresalesJapan
 
Spark Summit 2014 の報告と最近の取り組みについて
Spark Summit 2014 の報告と最近の取り組みについてSpark Summit 2014 の報告と最近の取り組みについて
Spark Summit 2014 の報告と最近の取り組みについてRecruit Technologies
 
クラウドから始めるRのビッグデータ分析- Oracle R Enterprise in Cloud
クラウドから始めるRのビッグデータ分析- Oracle R Enterprise in Cloudクラウドから始めるRのビッグデータ分析- Oracle R Enterprise in Cloud
クラウドから始めるRのビッグデータ分析- Oracle R Enterprise in Cloud幹雄 小川
 
アイコンで組み立てる Spark MLlib + ETLプログラム
アイコンで組み立てる Spark MLlib + ETLプログラムアイコンで組み立てる Spark MLlib + ETLプログラム
アイコンで組み立てる Spark MLlib + ETLプログラムtatsumi_air
 
Object-Funcational Analysis and design
Object-Funcational Analysis and designObject-Funcational Analysis and design
Object-Funcational Analysis and designTomoharu ASAMI
 
160705-03 RTミドルウエア講習会・名城大
160705-03 RTミドルウエア講習会・名城大160705-03 RTミドルウエア講習会・名城大
160705-03 RTミドルウエア講習会・名城大openrtm
 
SIG-SWO-A1402-09:SPINを用いたトリプルストアの性能評価システム
SIG-SWO-A1402-09:SPINを用いたトリプルストアの性能評価システムSIG-SWO-A1402-09:SPINを用いたトリプルストアの性能評価システム
SIG-SWO-A1402-09:SPINを用いたトリプルストアの性能評価システムyayamamo @ DBCLS Kashiwanoha
 
Talend StudioでAPIを開発 - SOAP/RESTのサービス開発手法
Talend StudioでAPIを開発 - SOAP/RESTのサービス開発手法Talend StudioでAPIを開発 - SOAP/RESTのサービス開発手法
Talend StudioでAPIを開発 - SOAP/RESTのサービス開発手法QlikPresalesJapan
 
大量のデータ処理や分析に使えるOSS Apache Spark入門(Open Source Conference 2021 Online/Kyoto 発表資料)
大量のデータ処理や分析に使えるOSS Apache Spark入門(Open Source Conference 2021 Online/Kyoto 発表資料)大量のデータ処理や分析に使えるOSS Apache Spark入門(Open Source Conference 2021 Online/Kyoto 発表資料)
大量のデータ処理や分析に使えるOSS Apache Spark入門(Open Source Conference 2021 Online/Kyoto 発表資料)NTT DATA Technology & Innovation
 
簡単!AWRをEXCELピボットグラフで分析しよう♪
簡単!AWRをEXCELピボットグラフで分析しよう♪簡単!AWRをEXCELピボットグラフで分析しよう♪
簡単!AWRをEXCELピボットグラフで分析しよう♪Yohei Azekatsu
 
ASP.NET シングル ページ アプリケーション (SPA) 詳説
ASP.NET シングル ページ アプリケーション (SPA) 詳説ASP.NET シングル ページ アプリケーション (SPA) 詳説
ASP.NET シングル ページ アプリケーション (SPA) 詳説Akira Inoue
 
MySQL最新情報
MySQL最新情報MySQL最新情報
MySQL最新情報yoyamasaki
 

Similar to 2015-11-17 きちんと知りたいApache Spark ~機械学習とさまざまな機能群 (20)

Deep Dive into Spark SQL with Advanced Performance Tuning
Deep Dive into Spark SQL with Advanced Performance TuningDeep Dive into Spark SQL with Advanced Performance Tuning
Deep Dive into Spark SQL with Advanced Performance Tuning
 
2019.03.19 Deep Dive into Spark SQL with Advanced Performance Tuning
2019.03.19 Deep Dive into Spark SQL with Advanced Performance Tuning2019.03.19 Deep Dive into Spark SQL with Advanced Performance Tuning
2019.03.19 Deep Dive into Spark SQL with Advanced Performance Tuning
 
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
 
[Oracle big data jam session #1] Apache Spark ことはじめ
[Oracle big data jam session #1] Apache Spark ことはじめ[Oracle big data jam session #1] Apache Spark ことはじめ
[Oracle big data jam session #1] Apache Spark ことはじめ
 
MySQL57 Update@OSC Fukuoka 20151003
MySQL57 Update@OSC Fukuoka 20151003MySQL57 Update@OSC Fukuoka 20151003
MySQL57 Update@OSC Fukuoka 20151003
 
Developers.IO 2019 Effective Datalake
Developers.IO 2019 Effective DatalakeDevelopers.IO 2019 Effective Datalake
Developers.IO 2019 Effective Datalake
 
Open capi meetup20180409 (revised)
Open capi meetup20180409 (revised)Open capi meetup20180409 (revised)
Open capi meetup20180409 (revised)
 
Qlik TECH TALK 20210706 SAPデータ分析を加速するQlikのアクセレレーターパッケージご紹介
Qlik TECH TALK 20210706 SAPデータ分析を加速するQlikのアクセレレーターパッケージご紹介Qlik TECH TALK 20210706 SAPデータ分析を加速するQlikのアクセレレーターパッケージご紹介
Qlik TECH TALK 20210706 SAPデータ分析を加速するQlikのアクセレレーターパッケージご紹介
 
Spark Summit 2014 の報告と最近の取り組みについて
Spark Summit 2014 の報告と最近の取り組みについてSpark Summit 2014 の報告と最近の取り組みについて
Spark Summit 2014 の報告と最近の取り組みについて
 
クラウドから始めるRのビッグデータ分析- Oracle R Enterprise in Cloud
クラウドから始めるRのビッグデータ分析- Oracle R Enterprise in Cloudクラウドから始めるRのビッグデータ分析- Oracle R Enterprise in Cloud
クラウドから始めるRのビッグデータ分析- Oracle R Enterprise in Cloud
 
アイコンで組み立てる Spark MLlib + ETLプログラム
アイコンで組み立てる Spark MLlib + ETLプログラムアイコンで組み立てる Spark MLlib + ETLプログラム
アイコンで組み立てる Spark MLlib + ETLプログラム
 
Object-Funcational Analysis and design
Object-Funcational Analysis and designObject-Funcational Analysis and design
Object-Funcational Analysis and design
 
160705-03 RTミドルウエア講習会・名城大
160705-03 RTミドルウエア講習会・名城大160705-03 RTミドルウエア講習会・名城大
160705-03 RTミドルウエア講習会・名城大
 
SIG-SWO-A1402-09:SPINを用いたトリプルストアの性能評価システム
SIG-SWO-A1402-09:SPINを用いたトリプルストアの性能評価システムSIG-SWO-A1402-09:SPINを用いたトリプルストアの性能評価システム
SIG-SWO-A1402-09:SPINを用いたトリプルストアの性能評価システム
 
JJUG CCC 2014 ATL
JJUG CCC 2014 ATLJJUG CCC 2014 ATL
JJUG CCC 2014 ATL
 
Talend StudioでAPIを開発 - SOAP/RESTのサービス開発手法
Talend StudioでAPIを開発 - SOAP/RESTのサービス開発手法Talend StudioでAPIを開発 - SOAP/RESTのサービス開発手法
Talend StudioでAPIを開発 - SOAP/RESTのサービス開発手法
 
大量のデータ処理や分析に使えるOSS Apache Spark入門(Open Source Conference 2021 Online/Kyoto 発表資料)
大量のデータ処理や分析に使えるOSS Apache Spark入門(Open Source Conference 2021 Online/Kyoto 発表資料)大量のデータ処理や分析に使えるOSS Apache Spark入門(Open Source Conference 2021 Online/Kyoto 発表資料)
大量のデータ処理や分析に使えるOSS Apache Spark入門(Open Source Conference 2021 Online/Kyoto 発表資料)
 
簡単!AWRをEXCELピボットグラフで分析しよう♪
簡単!AWRをEXCELピボットグラフで分析しよう♪簡単!AWRをEXCELピボットグラフで分析しよう♪
簡単!AWRをEXCELピボットグラフで分析しよう♪
 
ASP.NET シングル ページ アプリケーション (SPA) 詳説
ASP.NET シングル ページ アプリケーション (SPA) 詳説ASP.NET シングル ページ アプリケーション (SPA) 詳説
ASP.NET シングル ページ アプリケーション (SPA) 詳説
 
MySQL最新情報
MySQL最新情報MySQL最新情報
MySQL最新情報
 

More from Yu Ishikawa

Introduction to Polyaxon
Introduction to PolyaxonIntroduction to Polyaxon
Introduction to PolyaxonYu Ishikawa
 
2017 09-27 democratize data products with SQL
2017 09-27 democratize data products with SQL2017 09-27 democratize data products with SQL
2017 09-27 democratize data products with SQLYu Ishikawa
 
2016-06-15 Sparkの機械学習の開発と活用の動向
2016-06-15 Sparkの機械学習の開発と活用の動向2016-06-15 Sparkの機械学習の開発と活用の動向
2016-06-15 Sparkの機械学習の開発と活用の動向Yu Ishikawa
 
2014 09-12 lambda-architecture-at-indix
2014 09-12 lambda-architecture-at-indix2014 09-12 lambda-architecture-at-indix
2014 09-12 lambda-architecture-at-indixYu Ishikawa
 
「チーム開発実践入門」勉強会
「チーム開発実践入門」勉強会「チーム開発実践入門」勉強会
「チーム開発実践入門」勉強会Yu Ishikawa
 
BdasとSpark概要
BdasとSpark概要BdasとSpark概要
BdasとSpark概要Yu Ishikawa
 
Hadoop conference 2013winter_for_slideshare
Hadoop conference 2013winter_for_slideshareHadoop conference 2013winter_for_slideshare
Hadoop conference 2013winter_for_slideshareYu Ishikawa
 
2012 02-02 mixi engineer's seminor #3
2012 02-02  mixi engineer's seminor #32012 02-02  mixi engineer's seminor #3
2012 02-02 mixi engineer's seminor #3Yu Ishikawa
 

More from Yu Ishikawa (8)

Introduction to Polyaxon
Introduction to PolyaxonIntroduction to Polyaxon
Introduction to Polyaxon
 
2017 09-27 democratize data products with SQL
2017 09-27 democratize data products with SQL2017 09-27 democratize data products with SQL
2017 09-27 democratize data products with SQL
 
2016-06-15 Sparkの機械学習の開発と活用の動向
2016-06-15 Sparkの機械学習の開発と活用の動向2016-06-15 Sparkの機械学習の開発と活用の動向
2016-06-15 Sparkの機械学習の開発と活用の動向
 
2014 09-12 lambda-architecture-at-indix
2014 09-12 lambda-architecture-at-indix2014 09-12 lambda-architecture-at-indix
2014 09-12 lambda-architecture-at-indix
 
「チーム開発実践入門」勉強会
「チーム開発実践入門」勉強会「チーム開発実践入門」勉強会
「チーム開発実践入門」勉強会
 
BdasとSpark概要
BdasとSpark概要BdasとSpark概要
BdasとSpark概要
 
Hadoop conference 2013winter_for_slideshare
Hadoop conference 2013winter_for_slideshareHadoop conference 2013winter_for_slideshare
Hadoop conference 2013winter_for_slideshare
 
2012 02-02 mixi engineer's seminor #3
2012 02-02  mixi engineer's seminor #32012 02-02  mixi engineer's seminor #3
2012 02-02 mixi engineer's seminor #3
 

Recently uploaded

Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 

Recently uploaded (9)

Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 

2015-11-17 きちんと知りたいApache Spark ~機械学習とさまざまな機能群

  • 2. 本発表の想定聴講者とゴール • 想定している聴講者 • CTOや技術選択の責任者レベルの方 • Spark の機械学習ライブラリの初学者 • ゴール • Sparkのデータサイエンス関連の Top-Level API は企業における • 「実践」を意識して作られていることを知っていただく • スケーラブルな機械学習アルゴリズムが簡単に利用できる • 実践的な機械学習に必要な一連の複雑な処理も簡単に利用できる • 本発表では話さないこと • Spark の分散処理のやキャッシュの仕組み • Spark のクラスタ管理やチューニング • 個別の機械学習アルゴリズムの具体的な解説 など 2
  • 3. Talk Overview • Spark 関連の基礎知識 • Spark MLlib • DataFrame API • Pipline API • まとめ 3
  • 4. Apache Sparkとは? • 大規模データを処理するための分散処理システム • Speed, Easy of Use, Generality, Runs Everywhere • 「ポスト Hadoop MapReduce」の有力候補 • リリース頻度:約3ヶ月に1回リリース • 現在の stable バージョンは 1.5 • 次のバージョン 1.6 はおそらく 12 月初旬にリリース見込み • プログラミングインタフェース: • 企業におけるデータ分析シーンに対応 • バッチ,ストリーミング,インタラクティブ(探索的分析) • 標準で機械学習,グラフ処理などのコンポーネントを備えている 4
  • 7.
  • 8. Talk Overview • Spark 関連の基礎知識 • Spark MLlib • DataFrame API • Pipline API • FAQ • まとめ 8
  • 10. MLlib のミッション • プロダクションレベルでの機械学習を簡単にスケーラブル で実行できるようにする • 機械学習アプリケーションを簡単に構築 • 大規模データセットでの学習を可能にする • Spark 0.8 から開発が始まる • 現在では累計で 50+ の企業,100+ の個人が開発に参加 • 分散機械学習アルゴリズムは日々追加されています • 1.6 でリリース予定の bisecting k-means の実装を担当 • 開発を通して得た知見はまた別の機会で話したいと思います 10
  • 11. MLlib-specific Contribution Guidelines • Be widely known • Be used and accepted • academic citations and concrete use cases can help justify this • Be highly scalable • Be well documented • Have APIs consistent with other algorithms in MLLib that accomplish the same thing • Come with a reasonable expectation of developer support. 11 [https://cwiki.apache.org/confluence/display/SPARK/Contributing+to+Spark]
  • 13. レコメンドアルゴリズム ALS の 単純な実行方法 val ratings = sc.textFile(“s3n:/path/to/csv/files/*”) .map(_.split(",")) .map(x => Rating(x(0).toInt, x(1).toInt, x(2).toDouble) 13 Data (CSV) Load Data Train Model Evaluate user_id product_id rating 473 348 0.8 5623 87583 0.3 6545 9382 0.5 234 246 0.6
  • 14. レコメンドアルゴリズム ALS の 単純な実行方法 val ratings = sc.textFile(“s3n:/path/to/csv/files/*”) .map(_.split(",")) .map(x => Rating(x(0).toInt, x(1).toInt, x(2).toDouble) val als = new ALS.setRank(10).setIterations(10) val model = als.run(ratings) 14 Data Loa Data Train Model Evaluate レコメンド手法のひとつである ALS のオブジェクトを生成して訓練
  • 15. レコメンドアルゴリズム ALS の 単純な実行方法 val ratings = sc.textFile(“s3n:/path/to/csv/files/*”) .map(_.split(",")) .map(x => Rating(x(0).toInt, x(1).toInt, x(2).toDouble) val als = new ALS.setRank(10).setIterations(10) val model = als.run(ratings) val userId = 12345 val productId = 987654 model.predict(userId, productId) 0.4… 15 Data Loa Data Train Model EvaluateTop-level API がよくデザインされているので 非常に簡単に機械学習ライブラリが使える
  • 16. ALSのベンチマーク • データセット:Amazon Reviews Dataset • データサイズ: 660万ユーザ, 220万アイテム • クラスタサイズ:m3.2xlarge x 16 16 cited by: Xiangrui Meng: A More Scaleable Way of Making Recommendations with MLlib
  • 17. MLlib の ALS について詳しく知りたい方は 「レコメンドバッチ高速化に向けたSpark/MapReduceの機械学習ライブラリ比較検証」 http://www.slideshare.net/recruitcojp/sparkmapreduce 17
  • 18. Talk Overview • Spark 関連の基礎知識 • Spark MLlib • DataFrame API • Pipline API • まとめ 18
  • 20. DataFrame API 20 age prefecture name 34 Tokyo **** 41 Osaka **** 27 Saitama **** 24 Chiba **** // 都道府県ごとのユーザの平均年齢を計算 data.groupBy(“prefecture”).ave(“age”) // 年齢 25 歳以上のユーザ数 data.filter(“age >= 25”).count() // SQL でも記述できる data.sql(“select age from user_table”) データ分析でよく使われる機能を DSL として提供 Hive などのデータソースにも対応 user_table
  • 22. Spark をネイティブで書くより早い 22 cited by: Spark Summit EU 2015: Spark DataFrames: Simple and Fast Analysis of Structured Data DataFrame API を利用すれば 少ないコードでより高速に処理することができる
  • 23. Talk Overview • Spark 関連の基礎知識 • Spark MLlib • DataFrame API • Pipline API • まとめ 23
  • 27. Our Task • レビュー (review) のテキストから評価 (rating) を予測 27 review Model rating String Int
  • 28. Load Data • Data Schema • label: Int • text: String 28 Load Data Feature Extraction Train Model Evaluate
  • 29. Feature Extraction • Data Schema • label: Int • text: String • words: Seq[String] • features: Vector 29 Load Data Hashed Term Freq. Train Model Evaluate Tokenizer Transformer
  • 30. Train a Model • Data Schema • label: Int • text: String • words: Seq[String] • features: Vector • prediction: Int 30 Load Data Hashed Term Freq. Logistic Regression Evaluate Tokenizer Transformer Estimator
  • 31. Spark ML Pipeline API val tokenizer = new Tokenizer() .setInputCol("text") .setOutputCol(“words") val hashingTF = new HashingTF() .setNumFeatures(1000) .setInputCol(tokenizer.getOutputCol) .setOutputCol("features") 31 Load Data Hashed Term Freq. Logistic Regression Evaluate Tokenizer
  • 32. Spark ML Pipeline API val tokenizer = new Tokenizer() .setInputCol("text") .setOutputCol(“words") val hashingTF = new HashingTF() .setNumFeatures(1000) .setInputCol(tokenizer.getOutputCol) .setOutputCol("features") val lr = new LogisticRegression() .setMaxIter(10) .setRegParam(0.01) 32 Load Data Hashed Term Freq. Logistic Regression Evaluate Tokenizer
  • 33. Spark ML Pipeline API val tokenizer = new Tokenizer() .setInputCol("text") .setOutputCol(“words") val hashingTF = new HashingTF() .setNumFeatures(1000) .setInputCol(tokenizer.getOutputCol) .setOutputCol("features") val lr = new LogisticRegression() .setMaxIter(10) .setRegParam(0.01) val pipeline = new Pipeline() .setStages(Array(tokenizer, hashingTF, lr)) val model = pipeline.fit(training) 33 Pipeline Load Data Hashed Term Freq. Logistic Regression Evaluate Tokenizer
  • 35. A Little Simple ML Pipeline 35
  • 36. ML Pipelines for Test 36 Pipeline Training Data Hashed Term Freq. Logistic Regression Evaluate Tokenizer Pipeline Test Data Hashed Term Freq. Logistic Regression Evaluate Tokenizer
  • 37. Pipeline API for Test val tokenizer = new Tokenizer() .setInputCol("text") .setOutputCol(“words") val hashingTF = new HashingTF() .setNumFeatures(1000) .setInputCol(tokenizer.getOutputCol) .setOutputCol("features") val lr = new LogisticRegression() .setMaxIter(10) .setRegParam(0.01) val pipeline = new Pipeline() .setStages(Array(tokenizer, hashingTF, lr)) val model = pipeline.fit(training) model.transform(test) 37 Pipeline Test Data Hashed Term Freq. Logistic Regression Evaluate Tokenizer
  • 39. Practical ML Pipeline is Complicated! 39 Data Image! Parser Normalizer Convolver sqrt,mean Zipper Linear Solver Symmetric! Rectifier ident,abs ident,mean Global Pooler Patch! Extractor Patch Whitener KMeans! Clusterer Feature Extractor Label! Extractor Linear! Mapper Model Test! Data Label! Extractor Feature Extractor Test Error Error! Computer No Hyperparameters! A few Hyperparameters! Lotsa Hyperparameters
  • 40. Parameter Tuning 40 Hashed Term Freq. Logistic Regression Evaluate Tokenizer hashingTF.numFeatures {10, 20, 40} lr.regParam {0.01, 0.1, 0.5} Pipeline
  • 42. Practical Spark ML Pipeline API val paramGrid = new ParamGridBuilder() .addGrid(hashingTF.numFeatures, Array(10, 20, 40)) .addGrid(lr.regParam, Array(0.01, 0.1, 0.5)) .build() 42
  • 43. Practical Spark ML Pipeline API val paramGrid = new ParamGridBuilder() .addGrid(hashingTF.numFeatures, Array(10, 20, 40)) .addGrid(lr.regParam, Array(0.01, 0.1, 0.5)) .build() val cv = new CrossValidator() .setNumFolds(3) .setEstimator(pipeline) .setEstimatorParamMaps(paramGrid) .setEvaluator(new BinaryClassificationEvaluator) val cvModel = cv.fit(trainingDataset) 43 Parameter Tuning も Cross-Validation も API が用意されているので複雑な PIpeline も簡単に定義
  • 44. Model export/import for Pipeline API is coming soon! 44 Pipeline Load Data Hashed Term Freq. Logistic Regression Tokenizer save Model Load Model Evaluate モデルを保存することで 再構築の必要がなく再利用が簡単
  • 45. Talk Overview • Spark 関連の基礎知識 • Spark MLlib • DataFrame API • Pipline API • まとめ 45
  • 46. まとめ • Spark は企業における3つの分析シーンに対応 • バッチ,ストリーミング,インタラクティブ(探索的分析) • DataFrame API は大規模分散処理の探索分析をより身近なものにする • SQL で実行することもできる • Hive などのさまざまなデータソースをサポート • 最適化機構により「ネイティブ」に Spark のコードを書くより早くなる • Spark の機械学習ライブラリ MLlibで,プロダクションレベルでの機械学習を簡単 にスケーラブルで実行できる • 機械学習アプリケーションを簡単に構築 • 大規模データセットでの学習を可能にする • Pipeline API を利用することで「実践」での複雑化する ML Pipeline の管理が簡単 46 Sparkのデータサイエンス関連の Top-Level API は 企業における「実践」を意識して作られていることを知っていただく