© 2013 The MathWorks, Inc.
MATLAB
®によるビッグデータ解析
MathWorks Japan アプリケーションエンジニアリング部 アプリケーションエンジニア 吉田剛士ビッグデータ解析とその背景
増え続けるデータ量 ビッグデータとは 100TB ~ 10PB程度のデータ量 データが膨大になる理由 データソースの多様化と高性能化 スマートフォン 位置情報 監視カメラ 検索情報 SNS 構造物センサー 交通情報 IC ICカード情報 金融情報 買物履歴ビッグデータ解析とその背景
活用できる時代がやってきた これまでは・・・ データをためてはいたけど あきらめていた これからは・・・ ためていたデータを使った解析を実施アジェンダ
Hadoop® へのアクセス
MATLABによるデータ解析
拡張性と柔軟性を合わせ持つ開発環境
Hadoop
®とは
分散処理を利用した大規模データ向けミドルウェア
Apache™ Project の1つで
– Hadoop Common
– Hadoop Distributed File System (HDFS™)
– Hadoop MapReduce という3本柱から構成される – Java™ がソフトウェアフレームワーク HDFS – 複数ホストにまたがる分散ファイルシステム Hadoop MapReduce – HDFS上のデータに効率よくアクセスするためのフレームワーク
Hadoop
®-Related Projects at Apache
Javaを知らなくてもHDFSの利用可能! HDFS™やMapReduceを応用した製品または補完製品 代表的なプロジェクト Hive™ : Facebookによって開発されたデータウェアハウス Pig™ : Yahoo!によって開発されたデータフロー言語および実行環境 HBase™ : GoogleのBigtableを参考にした列指向の分散データベース Cassandra™ : Facebookによって開発された列指向の分散データベース ZooKeeper™ : 分散アプリケーション向け高可用性協調サービスHDFS
™へのアクセス
MATLABにデータインポート 連携方法 – 2つの選択肢 1. Java API + テキストファイルのインポート 2. JDBCドライバ .txt Javaデモンストレーション
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');
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
アジェンダ
Hadoop へのアクセス
MATLABによるデータ解析
拡張性と柔軟性を合わせ持つ開発環境
デモンストレーション
Physical Activity Recognition
体に取り付けたセンサーから得られる データからの活動状態を把握 – 心拍数と3箇所に取り付けたセンサー情報 (温度、加速度(x,y,z)など17種類)から 1. 寝ている 2. 座っている 3. 立っている : という活動状態の分類を実施 – 活動状態との関係性を導き出す t y x1 x2 x3 x4 x5 … x52 Ti me Series
timestamp Activity ID Heart Rate
51 (= 3*17) Features
y
) , , , (x1 x2 x52f
?
課題
データがあっても・・・ 生データは前処理が必要 モデルを数式で表現することが困難 変数の数が多くても大事なのはその一部 -0.10 0 0.1 0.2 0.3 0.4 0.5 0.6 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 Model 6 5 4 3 2 1,x ,x ,x ,x ,x x … xn取り込んだデータの確認
生データはそのままでは使えない
使えないデータが無視できないほど含まれている
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 … 欠損値 異常値
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様々な回帰・分類アルゴリズム
試行錯誤を繰り返し普遍性の発見
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
決定木
「木」構造を用いた機械学習アルゴリズム
の が木構造 – AdaBoost
– Bagging (Bootstrap Aggregating)
– Random Forest △: Branch ●: Leaf △+●: Node ) , , , (x1 x2 xn f y f
変数が多い場合のモデル構築
変数の選択 全ての変数が意味のあるデータとは限らない
– 相関の高い変数 – 分類に影響を与えない変数 変数選択の効果
– メモリの節約 – 計算パフォーマンスの向上モデルの評価
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に属しているデータ課題(再掲)
生データは前処理が必要 モデルを数式で表現することが困難 変数の数が多くても大事なのはその一部 -0.10 0 0.1 0.2 0.3 0.4 0.5 0.6 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 Model 6 5 4 3 2 1,x ,x ,x ,x ,x x … xnMATLAB’s Solutions
データに潜む普遍的ルールの発見 論理配列による高速なデータクレンジング 様々な機械学習アルゴリズムをサポート 学習結果から変数選択を行いモデルを軽量化 Model 1 x x2 x8 x19 x31アジェンダ
Hadoop へのアクセス
MATLABによるデータ解析
拡張性と柔軟性を合わせ持つ開発環境
解析に時間がかかるような場合は・・・
ユーザフレンドリーな並列・分散プログラミング 12コアまでを用いた並列プログラミング 環境と関数群を提供 並列計算の初心者からMPIを使いこなす上 級者向けの機能をサポート MATLAB/Simulink®プロダクト・ ファミリとの連携による並列計算機能 GPGPU へのシームレスなアクセス Desktop Computer Parallel Computing Toolbox™1台で間に合わなければ・・・
スケーラブルな並列・分散環境を提供
Computer Cluster
MATLAB Distributed Computing Server™
Head Node Desktop Computer
アジェンダ
Hadoop® へのアクセス
MATLABによるデータ解析
拡張性と柔軟性を合わせ持つ開発環境
MATLABによるビッグデータ解析
まとめ:バッチ解析編
HDFS™へのアクセス
– JDBC / Java API
– MATLAB Builder JA
Tips & Tricks
– テーブル配列 – データクレンジングの高速化 – PCT / MDCS によるスケールアウト 豊富な解析機能 – データ集約 – 回帰または分類モデルの構築