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

Preview:

Citation preview

1 © 2013 The MathWorks, Inc.

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

MathWorks Japan

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

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

吉田剛士

2

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

ビッグデータとは

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

データが膨大になる理由

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

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

構造物センサー 交通情報

IC

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

3

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

これまでは・・・

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

あきらめていた

これからは・・・

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

4

アジェンダ

Hadoop® へのアクセス

MATLABによるデータ解析

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

まとめ

5

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

Apache™ Project の1つで

– Hadoop Common

– Hadoop Distributed File System (HDFS™)

– Hadoop MapReduce

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

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

HDFS

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

Hadoop MapReduce

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

6

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

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

代表的なプロジェクト

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

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

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

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

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

7

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

連携方法 – 2つの選択肢

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

2. JDBCドライバ

.txt Java

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™

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

11

アジェンダ

Hadoop へのアクセス

MATLABによるデータ解析

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

まとめ

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

?

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…

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 …

欠損値

異常値

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

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

17

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

の が木構造

– AdaBoost

– Bagging (Bootstrap Aggregating)

– Random Forest

△: Branch

●: Leaf

△+●: Node

),,,( 21 nxxxfy f

18

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

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

– 相関の高い変数

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

変数選択の効果

– メモリの節約

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

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に属しているデータ

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…

21

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

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

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

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

Model

1x 2x 8x 19x 31x

22

アジェンダ

Hadoop へのアクセス

MATLABによるデータ解析

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

まとめ

23

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

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

環境と関数群を提供

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

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

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

Desktop Computer

Parallel Computing Toolbox™

24

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

Computer Cluster

MATLAB Distributed Computing Server™

Head Node

Desktop Computer

Parallel Computing Toolbox™

25

アジェンダ

Hadoop® へのアクセス

MATLABによるデータ解析

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

まとめ

26

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

HDFS™へのアクセス

– JDBC / Java API

– MATLAB Builder JA

Tips & Tricks

– テーブル配列

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

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

豊富な解析機能

– データ集約

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

27

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

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

対象データは大規模

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

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

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

対象データは小規模

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

ポイントは低遅延性

Batch Processing

Stream Processing

Recommended