big data university tokyo meetup #6 (mlwith_spark) 配布資料
TRANSCRIPT
本日のアジェンダ• 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/
事前ダウンロード資料(オプション)資料は以下のリンクからダウンロードすることができます: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
データサイエンティスト実践セミナー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/
自己紹介> 土屋 敦 [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)テクニカルスタッフ
Agenda• Sparkの基礎• Sparkを使った機械学習• Sparkを学習するには
5
Agenda• Sparkの基礎• Sparkを使った機械学習• Sparkを学習するには
6
• 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
• 大量データ処理のための統合データ処理エンジン ~Unified engine for big data processing~• バッチ処理、インターラクティブ処理、繰り返し処理、ストリーム処理(ミニバッチ)
• 統合されたプログラミング言語/API • Scala/Python/Java関数手続き型
Sparkが開発されたモチベーション
Hadoopは、汎用バッチ専用だったので・・・
それぞれの特化技術が出現した・・・
1つの統合エンジン 多くの探索や分析はインターラクティブである
Spark 2.0からはRDDではなくDataSetがPrimaryに。
• Hadoopでやったこと+α• バッチ(集計)/ストリーム(ミニバッチ)/グラフ処理や、分析(SPSS,Rでできる事)など• データストアは、HDFSに限定されない
• ファイルシステム、DBなどなど• 言語は、SQL,R,Java,Scala,Pythonなどが使える
• インターラクティブな分析も• Jupyter notebook , Apache zeppelin• Hadoopとは異なり、バッチが終わるまで待ち続けることはありません。
※とは言っても、DBじゃない。。。
Sparkでできること
インターラクティブ分析が可能に!
Thrid-Party
Packages
• 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が「イン・メモリ処理」で速いと言われている理由は・・・
• 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
Sparkと周辺のエコシステム
現在:
今後:
カスタムアプリケーション
• コマンドライン• インターフェイス• アプリ
Sparkにどのようにアクセスするのか?
Standalone
ClusterZeppelin
Laptopで試せます!
ノートブック
CMD
• 「Apache Spark入門 動かして学ぶ最新並列分散処理フレームワーク」で説明されている内容がわかりやすいです;
Sparkクラスタの構成コンポーネント
■一般的には、各サーバにHDFSとYARNのコンポーネント(DataNodeとNodeManager)をインストールします。これは、データ・ローカリティを活用するためにです。■NameNodeとResourceManagerは、可用性の観点や運用保守観点を考慮し、同一マシーンにインストールするケース(ノード台数を減らせる)と、物理的に異なるマシーン(ノード台数が増える)ケースがあります。■この左の図は、SparkマスタノードにNameNodeとResourceManagerを同居させている例です。
• 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)
例:平均気温の計算
• 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によるデータ操作
• グラフデータを並列分散環境で処理するためのフレームワーク
• グラフ構造データを用いた解析を行う• 「点」と「辺」からなるデータ
• 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
• 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
• 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される予定です。
• 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
SilentLogアプリ特徴1日の活動を自動で記録する手軽さから、高い継続率を得ています
■アプリケーション名:SilentLog(サイレントログ) ※現在はiPhoneのみ対応https://silentlog.com
■アプリケーションの特徴:・移動手段、距離、時間、歩数を自動で記録し続けるライフログ(生活記録)アプリケーションです
・バッテリーの消費を国内外の競合アプリよりも抑えた上で同程度以上の記録精度を確保しています
■利用者の傾向:・30代男性を中心に、40代や50代の健康や記憶に関心の高いユーザー様にご利用いただいています
・30日継続率が約30%と、ユーザー様の定着率が高いです・ライフログ分野の代表的なアプリとして、複数の書籍や雑誌、ウェブメディアで取り上げられております
・ユーザーレビュー平均評価4.5(Ver2.4.1/評価24人)
SDKにより収集された行動情報を分析することができます
SilentLog SDK
御社ソリューション
・自家用車管理・道路プローブ測定・交通情報分析・DSP連携(アドテク)・顧客行動調査・パネルリサーチ・屋外広告の効果測定・健康情報管理・訪日外国人調査・高齢者向けスマートシティの設計
・労働者の遠隔管理など
弊社アプリ
御社サービスSilentLog SDKを
組み込んだアプリ
行動情報群
弊社アプリ統計データ
御社サービス統計データ
オープンデータ弊社追加データ
・行動情報(位置情報)・個人属性データ・アプリ利用データ・人口・地価などの公開済み動態情報
行動分析基盤SilentLog Analytics
・行動パターン推定・属性の推定・滞在情報の分析・歩行情報の分析・乗物情報の分析
行動情報データプラットフォーム
行動情報
行動情報
通知可視化
iOS, Android
アクション人工知能で行動を分析行動収集
SilentLog Analytics における、Spark(Bluemix)活用
弊社アプリ
御社サービスSilentLog SDKを組み込んだアプリ
行動情報群
弊社アプリ統計データ
御社サービス統計データ
オープンデータ弊社追加データ
・行動情報(位置情報)・個人属性データ・アプリ利用データ・人口・地価などの公開済み動態情報
行動分析基盤SilentLog Analytics
行動情報データプラットフォーム
行動情報
行動情報
データクレンジング
機械学習 / オンライン学習
推定結果
可視化地図グラフ
SilentLog SDK
アクション人工知能で行動を分析行動収集
24
SilentLog Analytics行動情報を可視化。高い視点から人や物の動きが把握できます
同地区のヒートマップ表示
同地区の流入元表示
Agenda• Sparkの基礎• Sparkを使った機械学習• Sparkを学習するには• まとめ
25
Sparkの機械学習• 本日話すこと
• Sparkの機械学習の仕組み• MllibとSparkML
• 実際のプロジェクトで使った分析手法セレクション(SPSSのケース)• 本日はなさないこと、しないこと
• 機械学習の深い話・・・• Sparkでの実践
• 次回のMeetup 8月26日(予定)で実践編を開催する予定です。• こちらはリンクに実践編へのjupyter notebookがあります。
26
SparkにはMllibとSparkMLの2つがある• MLlibとsparkmlの話• 何がちがうのか?• MLlib : RDDsをベースに機械学習のアルゴリズムを各種実装
• →Spark 2.0からは、DataSetがPrimaryになるつまり、RDDベースは将来的にDeprecateする(→Spark 3.0から)
• SparkML : DataFramesをベースにPipeLineなど、機械学習をより使いやすい形に実装
• で、問題は二つの実装に今でも別々に実装され続けるアルゴリズム・・・• 以下、一例です。
27
教師あり
アルゴリズム 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
教師なしアルゴリズム 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
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
教師あり、なし• 概念的に説明すると、
• 教師あり:与えられたラベルによって、その”教えられた”構造を判定する• 教師なし:与えられたデータから何らかの規則性を見つけて判定する
• 例えば、「手書き文字を認識する」ケースで考えると
31
0~9までが、どの数字なのか?というラベルを人間が与えて(正解データ)、それを学習するのが教師ありの考え方です。つまり、人間が正解を教えてあげると、それに近くなるように学習を行っていきます。学習が終わった際には、新しい手書き文字がどの数値なのかという判定を行うことができるようになります。
50419213
教師あり、なし• 概念的に説明すると、
• 教師あり:与えられたラベル着けによって、その”教えられた”構造を判定する• 教師なし:与えられたデータから何らかの規則性を見つけて判定する
• 例えば、「手書き文字を認識する」ケースで考えると
32
ラベル(正解データ)がないため、データのパターンから何らかの性質がないか?を探し出します。例えば、0~9までの10パターンが見つかり、その規則性を見て学習をする考え方が教師なしです。
• スコア算出の問題は、マイニングの各種手法の中で、に2項分類予測の問題として定式化できます。主な分析手法 説明 主要アルゴリズム
教師あり手法
数値予測(回帰)
販売数、在庫量などの連続値を予測する予測するために着目すべき主な特徴を発見する
線型回帰決定木ニューラルネットワークサポートベクターマシン
分類予測(2項、多項)
2項:「買う/買わない」、「離反する/しない」などを判別予測する多項:3項以上の分類のどれに当てはまるかを予測する判別するために着目すべき主な特徴を発見する
ロジスティック回帰判別分析決定木ニューラルネットワークサポートベクターマシンベイジアンネットワーク
教師なし手法
クラスタリング 多次元空間の中で、データが密集している部分を発見する複数の軸の中から、データをうまく分類できる軸と切れ目を発見する
K-MeanTwoStepKohonen
外れ値 多次元空間の中で、外れ値のデータ(不正者等)を発見する 外れ値検知
その他
相関ルール(アソシエーション)
データ集合の中から,高頻度で発生する特徴的なパターン(併売等)を見つける
アプリオリCARMA
時系列予測 過去のトレンドから将来の連続値を予測する予測するために着目すべき主な特徴を発見する
指数平滑法ARIMA
スコア算出で使う分析手法
スコア算出の解き方○○品質低下の原因箇所の特定を、「経験に基づく特定」から「 「データ分析で算出したスコアに基づく特定」へ。これにより、この障害の原因箇所の早期発見を実現する。
• どこが故障原因箇所であるかスコア化するモデルを作成します。作成したモデルを使うと、どの機器が疑わしいかのスコアが算出されます。
機器# 発生日時障害原因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)モデルを使ったスコア算出
○○ルール化の解き方• ○○ルール化問題は、データマイニングの各種分析手法の中で、2項分類予測、もし
くは相関ルールの問題として定式化できます。
35
主な分析手法 説明 主要アルゴリズム
教師あり手法
数値予測(回帰)
販売数、在庫量などの連続値を予測する予測するために着目すべき主な特徴を発見する
線型回帰決定木ニューラルネットワークサポートベクターマシン
分類予測(2項、多項)
2項:「買う/買わない」、「離反する/しない」などを判別予測する多項:3項以上の分類のどれに当てはまるかを予測する判別するために着目すべき主な特徴を発見する
ロジスティック回帰判別分析決定木ニューラルネットワークサポートベクターマシンベイジアンネットワーク
教師なし手法
クラスタリング 多次元空間の中で、データが密集している部分を発見する複数の軸の中から、データをうまく分類できる軸と切れ目を発見する
K-MeanTwoStepKohonen
外れ値 多次元空間の中で、外れ値のデータ(不正者等)を発見する 外れ値検知
その他
相関ルール(アソシエーション) データ集合の中から,高頻度で発生する特徴的なパターン(併売等)を見つける アプリオリ
CARMA
時系列予測 過去のトレンドから将来の連続値を予測する予測するために着目すべき主な特徴を発見する
指数平滑法ARIMA○○○ルール化で使う分析手法
「単純な閾値判定による○○実施基準」から、「□○△毎の個別の状況に応じた○○実施基準」へ。これにより、例えば○○保守イドラインの基準を適正化する。
• 障害発生件数が、お客様の不満の高さ示すとの仮定をおき、障害発生件数が多い条件を分析技術を活用して求めます。この条件に逸脱する○○○を行わないように、ルール化します。
例)○○のルール化
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件より多い場合、障害発生リスクが高くなる。
出力(判定結果)
アラート
検査データ生産データ
センサーデータ
フィードバック先
入力データ
モデルの学習
合否判定基準 ②取得したデータからモデルを作る
④作成したモデルと新たなデータとを比較し合否を予測する
⑤合否の予測をアラートとして発信する
①データを取得する
⑥アラートを受け取り意思決定
#1~100の過去データでモデル作成
異常検知の考え方の例
モデルスコア計算
#101のデータに対して判定
事前準備フェーズ
検知フェーズ検査データ生産データ
センサーデータ ③データを取得する
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
Apache Sparkとストリーム処理の組み合わせ
39
IncidentCalls for Service
311
Code Violation Permit
Buildings Apache SparkApache Spark
MLlibMLlib
HDFSHDFSヒストリカル・データ
Model2 :どのアクションを実行すべ
きか?
Model2 :どのアクションを実行すべ
きか?
Model1 :これは同じ方向に進んでいる?
Model1 :これは同じ方向に進んでいる?
リアルタイムインプットデータ
リアルタイムインプットデータ
リアルタイム予測分析&コンテキスト解析
リアルタイム予測分析&コンテキスト解析
リアルタイム・ダッシュボード
• USA Cycling team• https://www.youtube.com/watch?v=rKED2m_ml3w
• https://www.youtube.com/watch?v=8-9OJ0G8usQ&feature=youtu.be
40
Agenda• Sparkの基礎• Sparkを使った機械学習• Sparkを学習するには• まとめ
41
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 参考
• Apache Spark入門動かして学ぶ最新並列分散処理フレームワーク(NEXT ONE)
Sparkの勉強方法はWEBと書籍、とBigdataUniversity.comLearning Spark Holden Karau (著), Andy Konwinski(著), Patrick Wendell (著)
初めてのSpark - IBMは東京基礎研究所から寄稿)より分析よりの内容はこれ⇒
参考
←【推奨】→詳解Apache Spark - IBMはSparkエキスパートである田中が共著者)
Holdenは、IBM Sparkテクノロジーセンタで勤務
Agenda• Sparkの基礎• Sparkを使った機械学習• Sparkを学習するには• まとめ
44
まとめ• Sparkの基本とSparkの機械学習
• 勉強してみる契機。一通り、実施してみることが重要です。• その際は、Big Data University と Data Scientist Workbenchが勉強ツー
ルとして利用可能です。
45
Skills Tools
補足資料
46
インフラ:• 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を使うには?
Sparkを試す簡単な方法-Spark as a Service
$0.07*(¥7.35)/GB/HourからはじめるSpark: 30日間無償/フリーミアム方式
ibm.com/spark
参考
提供される内容:“Sparkスターター・キット”- Apache Sparkサービス本体- OpenStack SWIFT Objectストレージ- Ipython Notebooks (Jupyter)(Pythonランタイム)- サンプル
Spark as a Serviceに含まれる内容
ストレージ(OpenStack SWIFT
ベース)
Sparkサービス(pythonランタイム
/Jupyter)
参考
• Sparkの導入・セットアップは必要なし!• 3つのチュートリアル;データのロード,Pythonサンプル,Scalaサンプルで
ステップ・バイ・ステップで試せます。
サンプルがあるので、まずはトライができます
データのロード
Pythonのサンプル
Scalaのサンプル
Jupyterを利用
参考
• SPSSは、どうなるの?• SPSSをリプレイスする位置づけではない。Spark MLlib(機械学習)との連携。事前
データ加工部分や、新しいアルゴリズム、自作部分で威力があるかも・・・
Sparkの使いどころと、SPSSの関係
1.システム部から基幹取引データをCSVファイルでもらう
2.文字コード変換する(ホストからのデータの場合は注意が必要)
3.不要なレコードを条件抽出で排除
4.列と行を入れ替え
5.顧客マスターをCSVでもらう6.また文字コード変換、不要レコー
ド、列と行・・
7.住所をGoogleMapAPIを使って緯度経度に変換
8.緯度経度から最寄り駅の距離を算出するPythonのプログラム
ここでやっとアルゴリズム
データの型があわずエラー!
Sparkの使いどころ②機械学習
最も手間がかかるのはデータの加工です。ビッグデータ分析の多くを占める処理は、実は「データ整形」です。~作業の80%はデータ整備、それは基幹データが分析のために作られていないから、とも言われています。~
Sparkの使いどころ①
参考:SPSS(統計解析ミドルウェア)を利用した分析工程の内訳
クライアント
R (R Studio IDE)
今までは・・・データウェアハウス(PDA)SPSS Modeler Server
分析指示
分析結果表示
RDBデータリクエスト分析指示
処理結果返信
ストリームイメージ
ローカルクライアント
分析ツールと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ノートブックなどで、データを取り込んでデータ加工、分析、ストリーム(ミニバッチ処理)
EOF
54