MATLAB によるビッグデータ解析...2 ビッグデータ解析とその背景...

26
1 © 2013 The MathWorks, Inc. MATLAB ® によるビッグデータ解析 MathWorks Japan アプリケーションエンジニアリング部 アプリケーションエンジニア 吉田剛士

Transcript of MATLAB によるビッグデータ解析...2 ビッグデータ解析とその背景...

Page 1: MATLAB によるビッグデータ解析...2 ビッグデータ解析とその背景 増え続けるデータ量 ビッグデータとは 100TB ~ 10PB程度のデータ量 データが膨大になる理由

1 © 2013 The MathWorks, Inc.

MATLAB®によるビッグデータ解析

MathWorks Japan

アプリケーションエンジニアリング部

アプリケーションエンジニア

吉田剛士

Page 2: MATLAB によるビッグデータ解析...2 ビッグデータ解析とその背景 増え続けるデータ量 ビッグデータとは 100TB ~ 10PB程度のデータ量 データが膨大になる理由

2

ビッグデータ解析とその背景 増え続けるデータ量

ビッグデータとは

100TB ~ 10PB程度のデータ量

データが膨大になる理由

データソースの多様化と高性能化

スマートフォン 位置情報 監視カメラ 検索情報 SNS

構造物センサー 交通情報

IC

ICカード情報 金融情報 買物履歴

Page 3: MATLAB によるビッグデータ解析...2 ビッグデータ解析とその背景 増え続けるデータ量 ビッグデータとは 100TB ~ 10PB程度のデータ量 データが膨大になる理由

3

ビッグデータ解析とその背景 活用できる時代がやってきた

これまでは・・・

データをためてはいたけど

あきらめていた

これからは・・・

ためていたデータを使った解析を実施

Page 4: MATLAB によるビッグデータ解析...2 ビッグデータ解析とその背景 増え続けるデータ量 ビッグデータとは 100TB ~ 10PB程度のデータ量 データが膨大になる理由

4

アジェンダ

Hadoop® へのアクセス

MATLABによるデータ解析

拡張性と柔軟性を合わせ持つ開発環境

まとめ

Page 5: MATLAB によるビッグデータ解析...2 ビッグデータ解析とその背景 増え続けるデータ量 ビッグデータとは 100TB ~ 10PB程度のデータ量 データが膨大になる理由

5

Hadoop®とは 分散処理を利用した大規模データ向けミドルウェア

Apache™ Project の1つで

– Hadoop Common

– Hadoop Distributed File System (HDFS™)

– Hadoop MapReduce

という3本柱から構成される

– Java™ がソフトウェアフレームワーク

HDFS

– 複数ホストにまたがる分散ファイルシステム

Hadoop MapReduce

– HDFS上のデータに効率よくアクセスするためのフレームワーク

Page 6: MATLAB によるビッグデータ解析...2 ビッグデータ解析とその背景 増え続けるデータ量 ビッグデータとは 100TB ~ 10PB程度のデータ量 データが膨大になる理由

6

Hadoop®-Related Projects at Apache Javaを知らなくてもHDFSの利用可能!

HDFS™やMapReduceを応用した製品または補完製品

代表的なプロジェクト

Hive™ : Facebookによって開発されたデータウェアハウス

Pig™ : Yahoo!によって開発されたデータフロー言語および実行環境

HBase™ : GoogleのBigtableを参考にした列指向の分散データベース

Cassandra™ : Facebookによって開発された列指向の分散データベース

ZooKeeper™ : 分散アプリケーション向け高可用性協調サービス

Page 7: MATLAB によるビッグデータ解析...2 ビッグデータ解析とその背景 増え続けるデータ量 ビッグデータとは 100TB ~ 10PB程度のデータ量 データが膨大になる理由

7

HDFS™へのアクセス MATLABにデータインポート

連携方法 – 2つの選択肢

1. Java API + テキストファイルのインポート

2. JDBCドライバ

.txt Java

Page 8: MATLAB によるビッグデータ解析...2 ビッグデータ解析とその背景 増え続けるデータ量 ビッグデータとは 100TB ~ 10PB程度のデータ量 データが膨大になる理由

8

デモンストレーション Import data from Hive/HBase via JDBC driver

>> % Import data as table array

>> setdbprefs(‘DataReturnFormat’, ‘table’);

>> % Access to Hive

>> conn = database('default', ‘USERNAME', ‘PASSWORD', …

'org.apache.hive.jdbc.HiveDriver', 'jdbc:hive2://HOSTNAME:HIVE2_PORT');

>> curs = exec(conn, 'select * from HARTRAINDATA'); % Open cursor

>> curs = fetch(curs); % Import data into MATLAB workspace

>> RawData = curs.Data;

>> close(curs);

>> close(conn);

>> clear conn curs

>> whos RawData

Name Size Bytes Class Attributes

RawData 388432x54 167818570 table

※ Hbase – Phoenixの場合は conn = database('',’USERNAME',‘PASSWORD','com.salesforce.phoenix.jdbc.PhoenixDriver', ...

'jdbc:phoenix:HOSTNAME:ZOOKEEPER_PORT:/hbase');

Database Toolbox™

Page 9: MATLAB によるビッグデータ解析...2 ビッグデータ解析とその背景 増え続けるデータ量 ビッグデータとは 100TB ~ 10PB程度のデータ量 データが膨大になる理由

9

Table R2013bの新機能

特徴

– 変数名付データ

利点

– 変数名を使ってアクセス可能

– データが比較的コンパクト

Name Size Bytes Class

RawData 388432x54 2517039360 cell

>> RawData.time

ans =

8.3800

8.3900

8.4000

:

>> RawData

ans =

time actid heart_rate …

____ _____ __________ __

8.38 0 104 …

8.39 0 NaN …

Name Size Bytes Class

RawDataT 388432x54 167818570 table

Page 10: MATLAB によるビッグデータ解析...2 ビッグデータ解析とその背景 増え続けるデータ量 ビッグデータとは 100TB ~ 10PB程度のデータ量 データが膨大になる理由

11

アジェンダ

Hadoop へのアクセス

MATLABによるデータ解析

拡張性と柔軟性を合わせ持つ開発環境

まとめ

Page 11: MATLAB によるビッグデータ解析...2 ビッグデータ解析とその背景 増え続けるデータ量 ビッグデータとは 100TB ~ 10PB程度のデータ量 データが膨大になる理由

12

デモンストレーション Physical Activity Recognition

体に取り付けたセンサーから得られる

データからの活動状態を把握

– 心拍数と3箇所に取り付けたセンサー情報

(温度、加速度(x,y,z)など17種類)から

1. 寝ている

2. 座っている

3. 立っている

:

という活動状態の分類を実施

– 活動状態との関係性を導き出す

t y x1 x2 x3 x4 x5 … x52

Tim

e S

eri

es

timestamp Activity ID Heart Rate

51 (= 3*17) Features y),,,( 5221 xxx f

?

Page 12: MATLAB によるビッグデータ解析...2 ビッグデータ解析とその背景 増え続けるデータ量 ビッグデータとは 100TB ~ 10PB程度のデータ量 データが膨大になる理由

13

課題 データがあっても・・・

生データは前処理が必要

モデルを数式で表現することが困難

変数の数が多くても大事なのはその一部

-0.1 0 0.1 0.2 0.3 0.4 0.5 0.60

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

Model

654321 ,,,,, xxxxxx nx…

Page 13: MATLAB によるビッグデータ解析...2 ビッグデータ解析とその背景 増え続けるデータ量 ビッグデータとは 100TB ~ 10PB程度のデータ量 データが膨大になる理由

14

取り込んだデータの確認 生データはそのままでは使えない

使えないデータが無視できないほど含まれている

time actid heart_rate imu_and_

temperature imu_hand_3d_ acceleration2

imu_hand_3d_ acceleration3

8.38 0 104 30 2.37220 8.60070 …

8.39 0 NaN 30 2.18840 8.56560 …

8.40 0 NaN 30 2.37360 8.60110 …

: : : : : : …

1985.50 13 NaN 33.6250 -8.29240 3.62440 …

: : : : : : …

3143.31 18 106 34.5625 2.98428 8.00174 …

欠損値

異常値

Page 14: MATLAB によるビッグデータ解析...2 ビッグデータ解析とその背景 増え続けるデータ量 ビッグデータとは 100TB ~ 10PB程度のデータ量 データが膨大になる理由

15

Data Cleansing データを整えるテクニック

論理配列による高速なデータ抽出

– 論理配列とは、1 (true) / 0 (false) から配列

– 論理配列によるデータ抽出

– FIND関数を使うよりも30%程度高速

>> x

x =

0.8147

0.9058

0.1270

0.9134

0.6324

>> x >= 0.7

ans =

1

1

0

1

0

>> x(x >= 0.7)

ans =

0.8147

0.9058

0.9134

Page 15: MATLAB によるビッグデータ解析...2 ビッグデータ解析とその背景 増え続けるデータ量 ビッグデータとは 100TB ~ 10PB程度のデータ量 データが膨大になる理由

16

様々な回帰・分類アルゴリズム 試行錯誤を繰り返し普遍性の発見

Regression

Non-linear Reg. (GLM, Logistic)

Linear Regression Bagging /

Random Forest Boosting Neural Networks

Classification

Nearest Neighbor Discriminant

Analysis Naive Bayes

Support Vector Machines

Statistics Toolbox™

Neural Networks Toolbox™

Decision Tree

Page 16: MATLAB によるビッグデータ解析...2 ビッグデータ解析とその背景 増え続けるデータ量 ビッグデータとは 100TB ~ 10PB程度のデータ量 データが膨大になる理由

17

決定木 「木」構造を用いた機械学習アルゴリズム

の が木構造

– AdaBoost

– Bagging (Bootstrap Aggregating)

– Random Forest

△: Branch

●: Leaf

△+●: Node

),,,( 21 nxxxfy f

Page 17: MATLAB によるビッグデータ解析...2 ビッグデータ解析とその背景 増え続けるデータ量 ビッグデータとは 100TB ~ 10PB程度のデータ量 データが膨大になる理由

18

変数が多い場合のモデル構築 変数の選択

全ての変数が意味のあるデータとは限らない

– 相関の高い変数

– 分類に影響を与えない変数

変数選択の効果

– メモリの節約

– 計算パフォーマンスの向上

Page 18: MATLAB によるビッグデータ解析...2 ビッグデータ解析とその背景 増え続けるデータ量 ビッグデータとは 100TB ~ 10PB程度のデータ量 データが膨大になる理由

19

モデルの評価

Confusion Matrix

ROC 曲線と AUC

A B C D E F G

A 557 23 0 0 0 0 0

B 19 342 24 0 0 0 0

C 0 32 480 63 0 0 0

D 0 0 52 863 99 1 0

E 0 0 0 98 784 45 0

F 0 0 0 1 98 214 7

G 0 0 0 0 1 19 110

実際の分類

モデルによる分類

モデルではグループEに分類されたが

実際はグループFに属しているデータ

Page 19: MATLAB によるビッグデータ解析...2 ビッグデータ解析とその背景 増え続けるデータ量 ビッグデータとは 100TB ~ 10PB程度のデータ量 データが膨大になる理由

20

課題(再掲)

生データは前処理が必要

モデルを数式で表現することが困難

変数の数が多くても大事なのはその一部

-0.1 0 0.1 0.2 0.3 0.4 0.5 0.60

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

Model

654321 ,,,,, xxxxxx nx…

Page 20: MATLAB によるビッグデータ解析...2 ビッグデータ解析とその背景 増え続けるデータ量 ビッグデータとは 100TB ~ 10PB程度のデータ量 データが膨大になる理由

21

MATLAB’s Solutions データに潜む普遍的ルールの発見

論理配列による高速なデータクレンジング

様々な機械学習アルゴリズムをサポート

学習結果から変数選択を行いモデルを軽量化

Model

1x 2x 8x 19x 31x

Page 21: MATLAB によるビッグデータ解析...2 ビッグデータ解析とその背景 増え続けるデータ量 ビッグデータとは 100TB ~ 10PB程度のデータ量 データが膨大になる理由

22

アジェンダ

Hadoop へのアクセス

MATLABによるデータ解析

拡張性と柔軟性を合わせ持つ開発環境

まとめ

Page 22: MATLAB によるビッグデータ解析...2 ビッグデータ解析とその背景 増え続けるデータ量 ビッグデータとは 100TB ~ 10PB程度のデータ量 データが膨大になる理由

23

解析に時間がかかるような場合は・・・ ユーザフレンドリーな並列・分散プログラミング

12コアまでを用いた並列プログラミング

環境と関数群を提供

並列計算の初心者からMPIを使いこなす上級者向けの機能をサポート

MATLAB/Simulink®プロダクト・ ファミリとの連携による並列計算機能

GPGPU へのシームレスなアクセス

Desktop Computer

Parallel Computing Toolbox™

Page 23: MATLAB によるビッグデータ解析...2 ビッグデータ解析とその背景 増え続けるデータ量 ビッグデータとは 100TB ~ 10PB程度のデータ量 データが膨大になる理由

24

1台で間に合わなければ・・・ スケーラブルな並列・分散環境を提供

Computer Cluster

MATLAB Distributed Computing Server™

Head Node

Desktop Computer

Parallel Computing Toolbox™

Page 24: MATLAB によるビッグデータ解析...2 ビッグデータ解析とその背景 増え続けるデータ量 ビッグデータとは 100TB ~ 10PB程度のデータ量 データが膨大になる理由

25

アジェンダ

Hadoop® へのアクセス

MATLABによるデータ解析

拡張性と柔軟性を合わせ持つ開発環境

まとめ

Page 25: MATLAB によるビッグデータ解析...2 ビッグデータ解析とその背景 増え続けるデータ量 ビッグデータとは 100TB ~ 10PB程度のデータ量 データが膨大になる理由

26

MATLABによるビッグデータ解析 まとめ:バッチ解析編

HDFS™へのアクセス

– JDBC / Java API

– MATLAB Builder JA

Tips & Tricks

– テーブル配列

– データクレンジングの高速化

– PCT / MDCS によるスケールアウト

豊富な解析機能

– データ集約

– 回帰または分類モデルの構築

Page 26: MATLAB によるビッグデータ解析...2 ビッグデータ解析とその背景 増え続けるデータ量 ビッグデータとは 100TB ~ 10PB程度のデータ量 データが膨大になる理由

27

MATLABによるビッグデータ解析 2つの流派

Batch Processing – ある程度のデータをためて処理する

対象データは大規模

処理に時間をかけてもよい

ポイントはデータストレージへのアクセス

Stream Processing – 次々生成されるデータを処理する

対象データは小規模

処理に時間はかけられない

ポイントは低遅延性

Batch Processing

Stream Processing