big data university tokyo meetup #6 (mlwith_spark) 配布資料

54
本日のアジェンダ 1. 19:00-19:15 分析コンペ「人工知能は名刺をどこまで解読できるのか」開催概要 クラウド名刺管理サービスを展開するSansan主催の、名刺レイアウトの解析コンペについて説明をします。 Speaker: Sansan株式会社 江崎 日淑 2. 19:15-19:45 Python/PySpark で始めるデータ分析の基本 ~ハンズオン編~ Jupyter NotebookでPython/PySpark を使ったデータ分析の始め方をハンズオンを通して学びます。 Speaker: 日本アイ・ビー・エム株式会社 貝嶋 3. 19:45-20:15 Python/Scikit-learnを使った画像処理の基本 JupyterNotebookによる画像処理をPython/Scikit-learnでどのようにできるのか?を説明します。 Speaker: 株式会社オプトホールディング 中林 紀彦 4. 20:15-20:35 Sparkの基礎とSparkによる機械学習の基本 Sparkの最新情報とSparkを使った機械学習の基本をお伝えします。 Speaker: 日本アイ・ビー・エム株式会社 土屋 5. 20:35-21:00 ネットワーキング・タイム 1 Big Data University Tokyo Meetup #6 2016年07月29日 https://www.meetup.com/BDU-Tokyo/

Upload: atsushi-tsuchiya

Post on 12-Jan-2017

680 views

Category:

Data & Analytics


0 download

TRANSCRIPT

Page 1: Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料

本日のアジェンダ• 1. 19:00-19:15 分析コンペ「人工知能は名刺をどこまで解読できるのか」開催概要

• クラウド名刺管理サービスを展開するSansan主催の、名刺レイアウトの解析コンペについて説明をします。• Speaker: Sansan株式会社 江崎 日淑

• 2. 19:15-19:45 Python/PySpark で始めるデータ分析の基本 ~ハンズオン編~• Jupyter NotebookでPython/PySpark を使ったデータ分析の始め方をハンズオンを通して学びます。• Speaker: 日本アイ・ビー・エム株式会社 貝嶋 創

• 3. 19:45-20:15 Python/Scikit-learnを使った画像処理の基本• JupyterNotebookによる画像処理をPython/Scikit-learnでどのようにできるのか?を説明します。• Speaker: 株式会社オプトホールディング 中林 紀彦

• 4. 20:15-20:35 Sparkの基礎とSparkによる機械学習の基本• Sparkの最新情報とSparkを使った機械学習の基本をお伝えします。• Speaker: 日本アイ・ビー・エム株式会社 土屋 敦

• 5. 20:35-21:00 ネットワーキング・タイム

1

Big Data University Tokyo Meetup #6 2016年07月29日https://www.meetup.com/BDU-Tokyo/

Page 2: Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料

事前ダウンロード資料(オプション)資料は以下のリンクからダウンロードすることができます:0. 本資料(Slideshare)http://www.slideshare.net/eatsushi/big-data-university-tokyo-meetup-6-mlwithspark

1. 手書き文字認識のノートブック• https://share.datascientistworkbench.com/jupyter/v1/10.114.214.84/LCx5X2R0xg9sJ

vA/A%20Deep%20Learning%20Example%20for%20Image%20Classification.ipynb

2. Sparkの機械学習サンプル ノートブック• 「詳解Apache Spark (技術評論社)」の共著者が語るApache Sparkの勘所http://eventdots.jp/eventreport/593031 にある、• 日本アイ・ビー・エム株式会社 田中 裕一

資料4 Jupyter Notebook• http://bit.ly/ds_Spark

2

Page 3: Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料

データサイエンティスト実践セミナーPython/Sparkで始める分析の実際~30分でわかる! Sparkの基礎とSparkによる機械学習の基本~

Atsushi TsuchiyaTechnical Lead, Analytics Client ArchitectIBM Analytics@eatsushi

@bigdatauBig Data University Tokyo Meetup #6 20160729https://www.meetup.com/BDU-Tokyo/

Page 4: Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料

自己紹介> 土屋 敦 [email protected]

> 日本アイ・ビー・エム株式会社 アナリティクス事業本部> アナリティクス・クライアント・アーキテクト部> テクニカル・リード> ストリーム・コンピューティング、分散並列処理 テクニカル・スペシャリスト> 法政大学大学院 情報科学研究科 兼任教員|

4

2015年~ Open for Dataを中心としたアーキテクト、先端テクノロジーのエバンジェリスト活動2014年~、Spark (IBM Analytics for Apache Spark)2011年~、法政大学兼任教員”エンタープライズシステムにおける先端データベース技術”担当2010年~、Hadoop (IBM BigInsights)2009年~、ストリーム処理(IBM Streams)2008年~2014年 組込インメモリ・データベース (IBM solidDB)テクニカルスタッフ

Page 5: Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料

Agenda• Sparkの基礎• Sparkを使った機械学習• Sparkを学習するには

5

Page 6: Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料

Agenda• Sparkの基礎• Sparkを使った機械学習• Sparkを学習するには

6

Page 7: Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料

• 2009年にUC Berkeley AMPLabのプロジェクトとしてスタート、2010年にオープンソース化され、現在では、Apache Software Foundationで現在最もアクティブなプロジェクト。

• AMPLabで開発していたメンバーが中心となってDatabricks社を設立し、コミュニティをリード。IBMは、Founding Sponsorsの1つ。Sparkテクノロジセンタを設立。

Sparkの歴史

Activity for 6 months in 2014(from Matei Zaharia – 2014 Spark Summit)

July 26th, 2016

Page 8: Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料

• 大量データ処理のための統合データ処理エンジン ~Unified engine for big data processing~• バッチ処理、インターラクティブ処理、繰り返し処理、ストリーム処理(ミニバッチ)

• 統合されたプログラミング言語/API • Scala/Python/Java関数手続き型

Sparkが開発されたモチベーション

Hadoopは、汎用バッチ専用だったので・・・

それぞれの特化技術が出現した・・・

1つの統合エンジン 多くの探索や分析はインターラクティブである

Spark 2.0からはRDDではなくDataSetがPrimaryに。

Page 9: Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料

• Hadoopでやったこと+α• バッチ(集計)/ストリーム(ミニバッチ)/グラフ処理や、分析(SPSS,Rでできる事)など• データストアは、HDFSに限定されない

• ファイルシステム、DBなどなど• 言語は、SQL,R,Java,Scala,Pythonなどが使える

• インターラクティブな分析も• Jupyter notebook , Apache zeppelin• Hadoopとは異なり、バッチが終わるまで待ち続けることはありません。

※とは言っても、DBじゃない。。。

Sparkでできること

インターラクティブ分析が可能に!

Thrid-Party

Packages

Page 10: Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料

• Sparkが「インメモリ処理」ができると言っているのは・・・

HDFS (ディスク) (ディスク) (ディスク)

処理1(Map→Reduce)

処理1(Map/Cache)

処理2(Map→Reduce)

処理3(Map→Reduce)

処理3(Transform)

MapReduce

処理2(Join/Cache)

キャッシュ

キャッシュ

Apache Sparkの処理の仕組み ~従来のMapReduceとSparkの違いの観点から~

☆ただし、ディスク書き込みが全く無いわけではない. 明示的(persist() /checkpoint())および, 暗黙的(shuffle – reduceBykeyなど)にディスク読み書きがある。早いのはインメモリだけではなく、小さな最適化が積み上げられた結果。

Sparkが「イン・メモリ処理」で速いと言われている理由は・・・

Page 11: Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料

• Apache Sparkは、汎用的(多目的)で柔軟性があります。その理由は:• 複数言語(SQL, R, Java, Python,

Scala)、HDFSだけではなく複数データストア、YARNとの連携(MESOS)ができる

• Sparkコア・エンジンを利用して、複数のエントリー・ポイント; SQL, ストリーム処理, R,機械学習, および、グラフ処理

Apache Sparkの構成

Apache Sparkの構成

Spark R

Spark

core

Unified engine across diverse workloads and environments

Thrid-Party

Packages

MESOSYARN

Page 12: Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料

Sparkと周辺のエコシステム

現在:

今後:

カスタムアプリケーション

Page 13: Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料

• コマンドライン• インターフェイス• アプリ

Sparkにどのようにアクセスするのか?

Standalone

ClusterZeppelin

Laptopで試せます!

ノートブック

CMD

Page 14: Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料

• 「Apache Spark入門 動かして学ぶ最新並列分散処理フレームワーク」で説明されている内容がわかりやすいです;

Sparkクラスタの構成コンポーネント

■一般的には、各サーバにHDFSとYARNのコンポーネント(DataNodeとNodeManager)をインストールします。これは、データ・ローカリティを活用するためにです。■NameNodeとResourceManagerは、可用性の観点や運用保守観点を考慮し、同一マシーンにインストールするケース(ノード台数を減らせる)と、物理的に異なるマシーン(ノード台数が増える)ケースがあります。■この左の図は、SparkマスタノードにNameNodeとResourceManagerを同居させている例です。

Page 15: Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料

• Java, Scala, Pythonを実行

• SparkSQL, SparkR, Spark Streaming, Spark Mllib/ML, Graph X, Packages

• 分散処理する際にはパーティション毎に並列に処理をする。実際のスケーラビリティはベンチマークが実施されています。

val csv = spark.textFile("tokyo.csv")val pairs = csv.map(line => (line.split(",")))

.map(x => (x(0).take(8), (x(4).toFloat, 1)))

.reduceByKey( (x,y) => (x._1 + y._1, x._2 + y._2) )

.map(x => (x._1, x._2._1/x._2._2) )

.sortByKey()

• SparkコアはSparkのエンジン

Spark コア

20150614 22:00:00,0,1,8,20.9,8,3.0,8,南南西,8,85,820150614 23:00:00,0,1,8,20.9,8,2.6,8,南南西,8,86,820150615 00:00:00,0,1,8,20.5,8,1.0,8,南,8,86,820150615 1:00:00,0,1,8,20.4,8,0.7,8,南,8,88,8

(2015/6/14,22.565218)(2015/6/15,24.550001)(2015/6/16,23.358332)(2015/6/17,21.583334)

例:平均気温の計算

Page 16: Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料

• SQLを利用したデータ操作が可能• 現状は参照処理メイン• トランザクションなし

• Parquet 、Json、Hive だけでなくJDBCやODBCもサポート

• Hiveを利用しない新規のSQL実行エンジン(Spark1.4)

• Shark(クエリの実行プランにHive依存)は利用しない

{"name":"貝嶋", "address":{"city":"川崎", "state":"神奈川"}}{"name":"土屋", "address":{"city":"豊洲", "state":"東京"}}{“name”:“山田", "address":{"city":"横浜", "state":"神奈川"}}{"name":"岸代", "address":{"city":"後楽園", "state":"東京"}}

val people = sqlContext.jsonFile("test.json")people.registerTempTable("people")val nameAndAddress =

sqlContext.sql("SELECT name, address.city, address.state FROM people WHERE address.state=¥"神奈川¥"")nameAndAddress.collect.foreach(println)

{"name":"貝嶋", "address":{"city":"川崎", "state":"神奈川"}}{“name”:“山田", "address":{"city":"横浜", "state":"神奈川"}}

Spark SQL

例:住所データ(json)からの特定データの抽出

• SparkSQLによるデータ操作

Page 17: Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料

• グラフデータを並列分散環境で処理するためのフレームワーク

• グラフ構造データを用いた解析を行う• 「点」と「辺」からなるデータ

• SNSでのつながり、データ間の関連性など

• 表構造では扱うことが難しい関係を見つけ出す• データ間のつながりの抽出• 輪の抽出• 距離の計測• 影響の計測

• グラフDBとの兼ね合い(これから)

val graphWithDistance = Pregel(graph.mapVertices((id:VertexId, attr:Int) => List((id, 0))),

List[(VertexId, Int)](),Int.MaxValue,EdgeDirection.Out)((id, attr, msg) =>

mergeVertexRoute(attr, msg.map(a=> (a._1, a._2 + 1))),edge => {val isCyclic = edge.srcAttr.filter(_._1 == edge.dstId).nonEmptyif(isCyclic) Iterator.emptyelse Iterator((edge.dstId, edge.srcAttr))},(m1, m2) => m1 ++ m2

)

• Sparkでグラフ処理を

Spark GraphX

つながりの検索例: つながりと距離を見つけ出す

1,((1,0), (6,1), (9,1), (7,1), (4,2))

12 3

45

67

89

Page 18: Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料

• MLlib・MLとRが利用可能MLlibはScala(SQL)で、SparkRはRで記述可能

• 2つの実装:MLlibML• 2つは同じではない。SVM、ロジ

スティック回帰、決定木、K-means、ALSなどがある。

val data = spark.textFile("kdata.txt")val parsedData = data.map(x =>

Vectors.dense(x.split(',').map(_.toDouble))).cache()val numClusters = 3val numIterations = 10val clusters = KMeans.train(parsedData, numClusters, numIterations)

• Sparkで機械学習

機械学習【MLlibとSparkML】

データ: ( 直近購買月[nヶ月前], 期間内購買回数 ) (5,1),(4,2),(5,3),(1,2),(2,4),(2,5),(2,6),(1,4),(1,5),(1,2),(1,5),(5,5)

クラスタ結果: ([中心], 人数)([1.0, 2.0], 2), ([1.5, 4.833333333333333], 6), ([4.666666666666666, 2.0], 3), ([5.0, 5.0], 1)

例:顧客の分析による

0

2

4

6

0 2 4 6

Page 19: Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料

• MLlibはSparkの機械学習ライブラリで、その目的は、容易に実践的な機械学習をスケーラブルにすることです。

• MLlibは一般的な機械学習アルゴリズムとユーティリティからなるSparkのスケール可能な機械学習ライブラリで、classification, regression, clustering, collaborative filtering, dimensionality reduction そして 低レベル optimization primitivesとハイレベル・パイプラインAPI を含んでいます。

• 2つのSpark MLlib;• spark.mllib

• RDDでビルドされたAPIを含む• spark.ml

• MLパイプライン※を構築するため、DataFramesでビルドされたハイレベルAPIを含む

• 参考URL• English:http://spark.apache.org/docs/latest/mllib-guide.html• 翻訳サイト:http://mogile.web.fc2.com/spark/mllib-guide.html

MLlib (機械学習ライブラリ)

Thrid-Party

Packages

ML Pipeline

[ML]

Spark2.0からはDataSetsがPrimaryです。RDDを使ったMllibはSpark 3でDeprecateされる予定です。

Page 20: Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料

• Sparkによるミニ(マイクロ)バッチの実行• DStreamと呼ばれるRDDを操作

• 指定間隔ごとにまとめられたRDDを処理(Windows処理も可能)

• 通常のSparkプログラミングとほぼ同様たとえば、定期的に流入するデータの「移動平均値」の連続計算⇒Apache Stormとの違いは・・・?

val tstream = ssc.socketTextStream(hostname, port)var mdtxt = tstream.map(x => x.split(","))

.map(x => ( x(0), (x(0), x(1), x(2).toInt) ) )

.updateStateByKey(updateFunc _)mdtxt.print()

センサーデータ:(Dev1, 201501010000, 0)(Dev2, 201501010000, 0)(Dev1, 201501010001, 1)

Alert: Dev1 Status changed : 1

• Sparkでストリーム処理

Spark Streaming

例:センサーデータの出力値変更時にアラート

DStreamRDD

data

dataRDD

data

dataRDD

data

data

Page 21: Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料

SilentLogアプリ特徴1日の活動を自動で記録する手軽さから、高い継続率を得ています

■アプリケーション名:SilentLog(サイレントログ) ※現在はiPhoneのみ対応https://silentlog.com

■アプリケーションの特徴:・移動手段、距離、時間、歩数を自動で記録し続けるライフログ(生活記録)アプリケーションです

・バッテリーの消費を国内外の競合アプリよりも抑えた上で同程度以上の記録精度を確保しています

■利用者の傾向:・30代男性を中心に、40代や50代の健康や記憶に関心の高いユーザー様にご利用いただいています

・30日継続率が約30%と、ユーザー様の定着率が高いです・ライフログ分野の代表的なアプリとして、複数の書籍や雑誌、ウェブメディアで取り上げられております

・ユーザーレビュー平均評価4.5(Ver2.4.1/評価24人)

Page 22: Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料

SDKにより収集された行動情報を分析することができます

SilentLog SDK

御社ソリューション

・自家用車管理・道路プローブ測定・交通情報分析・DSP連携(アドテク)・顧客行動調査・パネルリサーチ・屋外広告の効果測定・健康情報管理・訪日外国人調査・高齢者向けスマートシティの設計

・労働者の遠隔管理など

弊社アプリ

御社サービスSilentLog SDKを

組み込んだアプリ

行動情報群

弊社アプリ統計データ

御社サービス統計データ

オープンデータ弊社追加データ

・行動情報(位置情報)・個人属性データ・アプリ利用データ・人口・地価などの公開済み動態情報

行動分析基盤SilentLog Analytics

・行動パターン推定・属性の推定・滞在情報の分析・歩行情報の分析・乗物情報の分析

行動情報データプラットフォーム

行動情報

行動情報

通知可視化

iOS, Android

アクション人工知能で行動を分析行動収集

Page 23: Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料

SilentLog Analytics における、Spark(Bluemix)活用

弊社アプリ

御社サービスSilentLog SDKを組み込んだアプリ

行動情報群

弊社アプリ統計データ

御社サービス統計データ

オープンデータ弊社追加データ

・行動情報(位置情報)・個人属性データ・アプリ利用データ・人口・地価などの公開済み動態情報

行動分析基盤SilentLog Analytics

行動情報データプラットフォーム

行動情報

行動情報

データクレンジング

機械学習 / オンライン学習

推定結果

可視化地図グラフ

SilentLog SDK

アクション人工知能で行動を分析行動収集

Page 24: Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料

24

SilentLog Analytics行動情報を可視化。高い視点から人や物の動きが把握できます

同地区のヒートマップ表示

同地区の流入元表示

Page 25: Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料

Agenda• Sparkの基礎• Sparkを使った機械学習• Sparkを学習するには• まとめ

25

Page 26: Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料

Sparkの機械学習• 本日話すこと

• Sparkの機械学習の仕組み• MllibとSparkML

• 実際のプロジェクトで使った分析手法セレクション(SPSSのケース)• 本日はなさないこと、しないこと

• 機械学習の深い話・・・• Sparkでの実践

• 次回のMeetup 8月26日(予定)で実践編を開催する予定です。• こちらはリンクに実践編へのjupyter notebookがあります。

26

Page 27: Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料

SparkにはMllibとSparkMLの2つがある• MLlibとsparkmlの話• 何がちがうのか?• MLlib : RDDsをベースに機械学習のアルゴリズムを各種実装

• →Spark 2.0からは、DataSetがPrimaryになるつまり、RDDベースは将来的にDeprecateする(→Spark 3.0から)

• SparkML : DataFramesをベースにPipeLineなど、機械学習をより使いやすい形に実装

• で、問題は二つの実装に今でも別々に実装され続けるアルゴリズム・・・• 以下、一例です。

27

Page 28: Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料

教師あり

アルゴリズム MLlib Sparkml

ロジスティック回帰 LogisticRegressionWithSGDLogisticRegressionWithBFGS LogisticRegression

サポートベクタマシン SVMWithSDG -決定木 DecisionTree DecisionTreeClassifier単純ベイズ分類器 NaiveBayes NaiveBayesランダムフォレスト RandomForest RandomForestClassifier勾配ブースティングツリー GradientBoostedTrees GBTClassifier多層パーセプトロン - MultilayerPerceptronClassifier

28

教師あり:分類

Spark 1.6前提の情報https://spark.apache.org/docs/1.6.2/mllib-guide.html最新情報は:https://spark.apache.org/docs/latest/ml-guide.html

Page 29: Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料

教師なしアルゴリズム MLlib Sparkml

線形回帰LinerRegressionWithSGDRidgeRegressionWithSGDLassoWithSGD

LinerRegression(Ridge/Lasso/ElasticNet)

lsotonic回帰 IsotonicRegression IsotonicRegression

決定木 DecisionTree DecisionTreeRegressor

ランダムフォレスト RandomForest RandomForestRegressor

勾配ブースティングツリー GradientBoostedTrees GBTRegressor

生存回帰(加速故障時間モデル) - AFTSurvivalRegression

29

アルゴリズム MLlib SparkmlK-means KMeans KMeansBisecting K-means BisectingKMeans -

混合ガウスモデル GaussianMixture -PIC(power iteration clustering) PoserIterationClustering -LDA(latent dirichlet allocation) LDA LDA

教師なし:クラスタリング

教師あり:回帰

Spark 1.6前提の情報https://spark.apache.org/docs/1.6.2/mllib-guide.html最新情報は:https://spark.apache.org/docs/latest/ml-guide.html

Page 30: Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料

Spark 2.0 MLlibのライブラリ

30

• Classification 〔分類〕• Logistic regression• Decision tree classifier• Random forest classifier• Gradient-boosted tree classifier• Multilayer perceptron classifier• One-vs-Rest classifier (a.k.a. One-vs-All)• Naive Bayes

• K-means 〔k-平均法〕• Latent Dirichlet allocation (LDA)• Bisecting k-means• Gaussian Mixture Model (GMM)

• Collaborative Filtering 〔協調フィルタリング〕• Alternating least squares (ALS)

• Regression 〔回帰〕• Linear regression• Generalized linear regression• Available families• Decision tree regression• Random forest regression• Gradient-boosted tree regression• Survival regression• Isotonic regression

• Linear methods 〔リニア〕• Decision trees 〔決定木〕• Tree Ensembles 〔ツリー・アンサンブル〕

• Random Forests• Gradient-Boosted Trees (GBTs)

Spark 2.0 MLlib ガイド:https://spark.apache.org/docs/latest/ml-guide.html

Page 31: Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料

教師あり、なし• 概念的に説明すると、

• 教師あり:与えられたラベルによって、その”教えられた”構造を判定する• 教師なし:与えられたデータから何らかの規則性を見つけて判定する

• 例えば、「手書き文字を認識する」ケースで考えると

31

0~9までが、どの数字なのか?というラベルを人間が与えて(正解データ)、それを学習するのが教師ありの考え方です。つまり、人間が正解を教えてあげると、それに近くなるように学習を行っていきます。学習が終わった際には、新しい手書き文字がどの数値なのかという判定を行うことができるようになります。

50419213

Page 32: Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料

教師あり、なし• 概念的に説明すると、

• 教師あり:与えられたラベル着けによって、その”教えられた”構造を判定する• 教師なし:与えられたデータから何らかの規則性を見つけて判定する

• 例えば、「手書き文字を認識する」ケースで考えると

32

ラベル(正解データ)がないため、データのパターンから何らかの性質がないか?を探し出します。例えば、0~9までの10パターンが見つかり、その規則性を見て学習をする考え方が教師なしです。

Page 33: Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料

• スコア算出の問題は、マイニングの各種手法の中で、に2項分類予測の問題として定式化できます。主な分析手法 説明 主要アルゴリズム

教師あり手法

数値予測(回帰)

販売数、在庫量などの連続値を予測する予測するために着目すべき主な特徴を発見する

線型回帰決定木ニューラルネットワークサポートベクターマシン

分類予測(2項、多項)

2項:「買う/買わない」、「離反する/しない」などを判別予測する多項:3項以上の分類のどれに当てはまるかを予測する判別するために着目すべき主な特徴を発見する

ロジスティック回帰判別分析決定木ニューラルネットワークサポートベクターマシンベイジアンネットワーク

教師なし手法

クラスタリング 多次元空間の中で、データが密集している部分を発見する複数の軸の中から、データをうまく分類できる軸と切れ目を発見する

K-MeanTwoStepKohonen

外れ値 多次元空間の中で、外れ値のデータ(不正者等)を発見する 外れ値検知

その他

相関ルール(アソシエーション)

データ集合の中から,高頻度で発生する特徴的なパターン(併売等)を見つける

アプリオリCARMA

時系列予測 過去のトレンドから将来の連続値を予測する予測するために着目すべき主な特徴を発見する

指数平滑法ARIMA

スコア算出で使う分析手法

スコア算出の解き方○○品質低下の原因箇所の特定を、「経験に基づく特定」から「 「データ分析で算出したスコアに基づく特定」へ。これにより、この障害の原因箇所の早期発見を実現する。

Page 34: Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料

• どこが故障原因箇所であるかスコア化するモデルを作成します。作成したモデルを使うと、どの機器が疑わしいかのスコアが算出されます。

機器# 発生日時障害原因Yes/No

○○○量 設置後年数 △△△ 時間帯(朝、

日中、夜間 風速 気温 ・・・

id163 12/6/5 6:52 1 198 3 朝 5 24id992 12/7/5 20:52 1 254 8 夜間 3 18id532 12/10/2 22:52 1 62 7 夜間 18 9id456 12/8/2 12:52 0 43 12 日中 12 12

例)スコア算出モデルの作成

34

目的変数 説明変数

ノード 機器 スコア(%)#1 #1 42.3

#2 86.2#3 78.4・・・ ・・・

#2 #1 32.4#2 56.2・・・

1)スコア算出モデルの作成

2)モデルを使ったスコア算出

Page 35: Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料

○○ルール化の解き方• ○○ルール化問題は、データマイニングの各種分析手法の中で、2項分類予測、もし

くは相関ルールの問題として定式化できます。

35

主な分析手法 説明 主要アルゴリズム

教師あり手法

数値予測(回帰)

販売数、在庫量などの連続値を予測する予測するために着目すべき主な特徴を発見する

線型回帰決定木ニューラルネットワークサポートベクターマシン

分類予測(2項、多項)

2項:「買う/買わない」、「離反する/しない」などを判別予測する多項:3項以上の分類のどれに当てはまるかを予測する判別するために着目すべき主な特徴を発見する

ロジスティック回帰判別分析決定木ニューラルネットワークサポートベクターマシンベイジアンネットワーク

教師なし手法

クラスタリング 多次元空間の中で、データが密集している部分を発見する複数の軸の中から、データをうまく分類できる軸と切れ目を発見する

K-MeanTwoStepKohonen

外れ値 多次元空間の中で、外れ値のデータ(不正者等)を発見する 外れ値検知

その他

相関ルール(アソシエーション) データ集合の中から,高頻度で発生する特徴的なパターン(併売等)を見つける アプリオリ

CARMA

時系列予測 過去のトレンドから将来の連続値を予測する予測するために着目すべき主な特徴を発見する

指数平滑法ARIMA○○○ルール化で使う分析手法

「単純な閾値判定による○○実施基準」から、「□○△毎の個別の状況に応じた○○実施基準」へ。これにより、例えば○○保守イドラインの基準を適正化する。

Page 36: Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料

• 障害発生件数が、お客様の不満の高さ示すとの仮定をおき、障害発生件数が多い条件を分析技術を活用して求めます。この条件に逸脱する○○○を行わないように、ルール化します。

例)○○のルール化

36

Node 0

300100.0Total15050.00No■15050.00Yes■n%Category

Node 0

300100.0Total15050.00No■15050.00Yes■n%Category

Node 0

24080.0Total21690.00No■2410.00Yes■n%Category

Node 0

24080.0Total21690.00No■2410.00Yes■n%Category

Node 0

6020.0Total1220.00No■4880.00Yes■n%Category

Node 0

6020.0Total1220.00No■4880.00Yes■n%Category

通信量

128>通信量

2)決定木モデルの構築1)障害発生件数を目的変数、それに影響を与えそうな変数を説明変数に設定

128<=通信量機器# 障害発生件数 通信量 ヘビーユーザ

比率(%) 解約数 ・・・

id163 高 198 15% 28id992 中 254 8% 3id532 高 62 35% 8id456 低 43 5% 5

目的変数 説明変数

解約数12>解約数 12<=解約数

ルール例:通信量が128より大きく、過去の解約数が12件より多い場合、障害発生リスクが高くなる。

Page 37: Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料

出力(判定結果)

アラート

検査データ生産データ

センサーデータ

フィードバック先

入力データ

モデルの学習

合否判定基準 ②取得したデータからモデルを作る

④作成したモデルと新たなデータとを比較し合否を予測する

⑤合否の予測をアラートとして発信する

①データを取得する

⑥アラートを受け取り意思決定

#1~100の過去データでモデル作成

異常検知の考え方の例

モデルスコア計算

#101のデータに対して判定

事前準備フェーズ

検知フェーズ検査データ生産データ

センサーデータ ③データを取得する

Page 38: Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料

DWH/File Store/Hadoop一時

データストアODS

加工・ロード処理サーバー

ETL

分析用データベース

DWH

SparkI/F

プロコン/センサー

Spark生産システム

検査結果入力

フィードバック先

ステップ 利用シーン 各Stepの狙い データ基盤・分析システムStep0 【試行・計画策定】

•予測分析タスクで有用性/精度を検証•効果出るエリアを選定し、ユースケース(仮説)を作成する

•Spark Mllib / Rstudio(R)/SparkR

Step1 【静的データ活用】•品質検査結果から不合格品の原因を分析•引合い検討(成分検討)時に類似製品の製造データを参照し、生産仕様

•対象ケース(対象製品)を広げ、モデルの精度を高める

•分析作業の効率をあげる

•Spark Mllib / Rstudio(R)/SparkR

•DWH/Hadoop

Step2 【リアルタイムデータ活用】•リアルタイムでスコア計算/アラート発信を行い、製造途中のオーダーに対して、破棄やオーダーの付け替え(汎用材として)判断を支援する

•リアルタイムにデータの取り込みからフィードバックまでを行う

•Spark Streaming•Spark Mllib / Rstudio(R)/SparkR

アラート

?

MLlib

データ取り込み

スコア計算

モニタリングフィードバック先

システムイメージと展開ステップkafka

Page 39: Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料

Apache Sparkとストリーム処理の組み合わせ

39

IncidentCalls for Service

311

Code Violation Permit

Buildings Apache SparkApache Spark

MLlibMLlib

HDFSHDFSヒストリカル・データ

Model2 :どのアクションを実行すべ

きか?

Model2 :どのアクションを実行すべ

きか?

Model1 :これは同じ方向に進んでいる?

Model1 :これは同じ方向に進んでいる?

リアルタイムインプットデータ

リアルタイムインプットデータ

リアルタイム予測分析&コンテキスト解析

リアルタイム予測分析&コンテキスト解析

リアルタイム・ダッシュボード

Page 40: Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料

• USA Cycling team• https://www.youtube.com/watch?v=rKED2m_ml3w

• https://www.youtube.com/watch?v=8-9OJ0G8usQ&feature=youtu.be

40

Page 41: Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料

Agenda• Sparkの基礎• Sparkを使った機械学習• Sparkを学習するには• まとめ

41

Page 42: Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料

Copyright 2015 IBM Corporation42

• IBMは、100万人のデータサイエンティストとデータ活用の技術者育成を目指して、投資を継続• Spark Technology Centerの設立を通じて、Databricks社やAMPLab等とのパートナーシップを

維持・強化し、Sparkテクノロジーの活用を加速します

• MOOC(Massive Open Online Courseの略、大規模オープンオンライン講座)のBig Data University上で、教育プログラムを提供

• ビジネス機会を創出すると共に、ビジネス課題の解決に適したSpark活用の動機付け

• 日本語の技術情報拡充と、セミナーでの講演を通じたグローバルのIBMの事例紹介

Sparkの勉強方法はWEBと書籍、とBigdataUniversity.com 参考

Page 43: Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料

• Apache Spark入門動かして学ぶ最新並列分散処理フレームワーク(NEXT ONE)

Sparkの勉強方法はWEBと書籍、とBigdataUniversity.comLearning Spark Holden Karau (著), Andy Konwinski(著), Patrick Wendell (著)

初めてのSpark - IBMは東京基礎研究所から寄稿)より分析よりの内容はこれ⇒

参考

←【推奨】→詳解Apache Spark - IBMはSparkエキスパートである田中が共著者)

Holdenは、IBM Sparkテクノロジーセンタで勤務

Page 44: Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料

Agenda• Sparkの基礎• Sparkを使った機械学習• Sparkを学習するには• まとめ

44

Page 45: Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料

まとめ• Sparkの基本とSparkの機械学習

• 勉強してみる契機。一通り、実施してみることが重要です。• その際は、Big Data University と Data Scientist Workbenchが勉強ツー

ルとして利用可能です。

45

Skills Tools

Page 46: Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料

補足資料

46

Page 47: Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料

インフラ:• Apache Spark – オープンソース版

• スタンドアローン、クラスタ構成• IBM BigInsights for Hadoop with Apache Spark

• ODPi提供のソースベースのIOPに含まれる• 無償(フリー or サブスクリプション)• 有償(サブスクリプション,もしくは商用ライセンス)

• IBM Spark as a Service• セットアップ不要、インフラ可用性あり!

ツール:• Data Scientist Workbench

• RStudio/Shiny, Python, Scala, Jupyter notebook, Zepplinが1つになったツール。無償でSparkへも接続・JOB実行ができる。

• Data Science Experience (有償版企業利用向け)• SPSS v18

Sparkを使うには?

Page 48: Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料

Sparkを試す簡単な方法-Spark as a Service

$0.07*(¥7.35)/GB/HourからはじめるSpark: 30日間無償/フリーミアム方式

ibm.com/spark

参考

Page 49: Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料

提供される内容:“Sparkスターター・キット”- Apache Sparkサービス本体- OpenStack SWIFT Objectストレージ- Ipython Notebooks (Jupyter)(Pythonランタイム)- サンプル

Spark as a Serviceに含まれる内容

ストレージ(OpenStack SWIFT

ベース)

Sparkサービス(pythonランタイム

/Jupyter)

参考

Page 50: Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料

• Sparkの導入・セットアップは必要なし!• 3つのチュートリアル;データのロード,Pythonサンプル,Scalaサンプルで

ステップ・バイ・ステップで試せます。

サンプルがあるので、まずはトライができます

データのロード

Pythonのサンプル

Scalaのサンプル

Jupyterを利用

参考

Page 51: Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料

• SPSSは、どうなるの?• SPSSをリプレイスする位置づけではない。Spark MLlib(機械学習)との連携。事前

データ加工部分や、新しいアルゴリズム、自作部分で威力があるかも・・・

Sparkの使いどころと、SPSSの関係

1.システム部から基幹取引データをCSVファイルでもらう

2.文字コード変換する(ホストからのデータの場合は注意が必要)

3.不要なレコードを条件抽出で排除

4.列と行を入れ替え

5.顧客マスターをCSVでもらう6.また文字コード変換、不要レコー

ド、列と行・・

7.住所をGoogleMapAPIを使って緯度経度に変換

8.緯度経度から最寄り駅の距離を算出するPythonのプログラム

ここでやっとアルゴリズム

データの型があわずエラー!

Sparkの使いどころ②機械学習

最も手間がかかるのはデータの加工です。ビッグデータ分析の多くを占める処理は、実は「データ整形」です。~作業の80%はデータ整備、それは基幹データが分析のために作られていないから、とも言われています。~

Sparkの使いどころ①

参考:SPSS(統計解析ミドルウェア)を利用した分析工程の内訳

Page 52: Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料

クライアント

R (R Studio IDE)

今までは・・・データウェアハウス(PDA)SPSS Modeler Server

分析指示

分析結果表示

RDBデータリクエスト分析指示

処理結果返信

ストリームイメージ

ローカルクライアント

Page 53: Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料

分析ツールとSpark連携SPSS Client

R (R Studio IDE)

Sparkユーザ

データウェアハウス(DB)SPSS Modeler Server

SPSS Analytics ServerInfosphere BigInsights with SPSS Analytics Server(Hadoopクラスタ基盤)

分析指示

分析結果表示

Hadoopデータリクエスト

処理結果返信

処理結果返信

Hadoopデータ分析指示

RスクリプトをHadoopクラスタで実行(R),もしくはSparkクラスタ(SparkR)で実行

RDBデータリクエスト分析指示

処理結果返信

SPSS AnalyticsServer

Big R/SparkR

SPSSからRコードを生成することも可能

データ待避

Jupyterノートブックなどで、データを取り込んでデータ加工、分析、ストリーム(ミニバッチ処理)

Page 54: Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料

EOF

54