ホワイトペーパー Excel と MATLAB の連携がデータ解析の課題を解決
製品開発の現場では 各種のセンサーや測定環境を利用したデータ解析が行われ シミュレーションや動作検証等に役立てられています しかし 日々収集されるデータ量は増加し 解析も複雑化しており データ解析の負荷は徐々に重くなっています 例えば自動車の車両計測データを解析する場合 取得したデータをそのまま解析に使用することはできず データロガーに記録されたバイナリファイルを変換 分割して CSV ファイルを取得したり またその中から異常値の除去や欠損値の補間のような煩雑なデータの前処理を経て 解析を始めることになります そうしたデータ解析のプロセスにマイクロソフト社の表計算ソフト Microsoft Excel を利用しているエンジニアは多くいます Excel はデータ整形や分析に使える関数を備え 汎用性が高く 多くの企業や研究機関に導入されており 過去に作成した VBA(Excel マクロ ) 資産を蓄積している企業も多いことでしょう しかしながら CSV ファイルのデータサイズが大きすぎてファイルを開くことができなかった 大規模な解析計算を実行すると処理に時間がかかる データ解析に使用する VBA のコーディング作業やメンテナンスが大変 といった声が エンジニアリング現場から聞こえて来るようになりました ここではそのような現場の課題に対し 使い慣れた Excel と MATLAB を連携させて利用することで 大規模エンジニアリングデータの演算や解析を可能にする各種機能についてご紹介します ( 図 1) 図 1. Excel と MATLAB を連携し 大規模データの解析 可視化を行っている例 エンジニアリングデータ解析の課題を解決する MATLAB MATLAB の代表的な特徴として データの扱いが簡単な点が挙げられます 変数型や配列の事前宣言を行う必要がないため 直感的なコーディングができるだけでなく ベクトルや行列データを直接扱える各種関数が用意されているため 処理速度や可読性の高いコードを記述することが可能です 他の言語では数百 数千行を要するコードが MATLAB であれば数十行で書けることは ホワイトペーパー 2
少なくありません MATLAB を共通言語としてチームで使用することで デバッグ作業やメンテナンス作業の効率を上げることができます MATLAB は インタプリタ型の科学技術計算言語であり 開発環境を提供する数値解析ソフトです 米国の研究機関で開発された線形代数ライブラリ LINPACK EISPACK などを基に プログラミング環境 グラフィックス機能などを統合し 大学などの教育 研究機関や自動車業界などの製造業に広く普及しています MATLAB の二次元 / 三次元のグラフィックス機能 ( 図 2) を使うことで データ解析の結果を表すグラフのカスタマイズや グラフィカルなユーザーインターフェイスの構築なども容易です MATLAB に搭載されている豊富な機能やライブラリに加え MathWorks サイトの MATLAB Examples に掲載されているコード例や オフィシャルコミュニティサイトの MATLAB Central で有志のユーザーが公開している様々なコードも プログラム開発の現場で役立てられています 図 2. MATLAB デスクトップと 解析 可視化を行っている例 MATLAB を使用することで 様々なデータソースへのアクセスに始まり データ解析やモデリング 結果のドキュメント化 実行可能な形式のアプリケーションや Excel マクロに変換しての共有など 一連のエンジニアリングタスクを一つの環境で実現することができます ( 図 3) 従来 手作業が多く発生していた煩雑な操作を自動化することで 作業時間を短縮したり より多くのテストケースを解析することが可能となるため 本来取り組むべきアルゴリズム開発に集中することができるようになります ホワイトペーパー 3
図 3. データへのアクセス アルゴリズムの探求 結果の共有までの一連の動作を実現する MATLAB データ解析ワークフロー 増大するエンジニアリングデータへのアクセス MATLAB ではデータサイズが大きい CSV ファイルでも データ量に関わらずアクセスすることができます CSV ファイルからデータを部分的に連続してインポートし ストリーミング処理する仕組みが用意されているため 例えば ギガバイト以上の巨大な CSV ファイルへアクセスし あるカラムのデータに注目した統計処理を行うことなども可能です このように ビッグデータに対応できるワークフローが MATLAB にはビルトインされており メモリ容量が限られているコンピュータでも 今までは困難だった大きなデータにアクセスし演算することが可能です また MATLAB には汎用の ODBC/JDBC ドライバ経由でのデータベース / データウェアハウスへのアクセスに加え Hadoop の様なビッグデータストレージへ直接アクセスし MapReduce のプログラミング手法を MATLAB 言語を使って実現する機能も用意されていますので さらに大規模なエンジニアリングデータへのアクセスにも対応できます 高度なデータ解析機能の実現 エンジニアリングデータを解析する際には 探索的に様々な解析手法を試す必要があります MATLAB はスクリプト言語のため ソースコードのコンパイルなどの操作は必要なく コマンドや関数名を入力するとすぐに実行可能です 豊富な可視化機能を使い データを二次元や三次元で表現し 様々な角度から観測 解析することができるため 思考を止めること無くタスクに集中することができます ベクトル 行列データを基本とする MATLAB 言語は 測定データなどの時系列データとの相性がよく データの欠損値や異常値の除去などのデータクレンジング作業を直感的に行うことができます ( 図 4) また スペクトル解析 フィルタリング 各種統計処理などの関数を利用することで 最小限のコード記述で様々なデータ解析が可能です オプション製品である各種 ツールボックス に専門領域に特化した様々な関数やアルゴリズムが用意されていますので 用途に応じた機能を追加することで 機械学習技術を取り入れた異常検知や故障予兆検知 など より高度な解析や処理を実現することができます ホワイトペーパー 4
図 4. データの欠損 サンプリング周期の異なる二種類のデータ ( 左 ) と 欠損箇所のデータ補間 およびサンプリング周期の同期 ( リサンプリング ) を行った例 ( 右 ) 使用するアルゴリズムが決まると 同じ解析や処理を多数のファイルやデータソースに適用するケースが データ解析の現場では多く見受けられます Parallel Computing Toolbox を使用し 作成したプログラムに最小限の変更を加えるだけで ループ処理など時間のかかる処理を マルチ CPU にて並列分散計算することができます また 演算の種類によっては GPU を用いた高速な演算処理を行うことも可能です ( 図 5) gx = gpuarray(x); % CPUからGPUへデータ X を転送 gy = fft(gx); % GPU 上にて演算処理を実行 (FFT 関数の呼び出し ) Y = gather(gy); % 演算結果をGPUからCPUへ戻す 図 5. GPU を使ったコード例 (FFT の処理例 ) Excel との連携 プログラムの配布 Excel スプレッドシート上での操作性や VBA の資産を そのまま使い続けたいという場合には PC にインストールされた MATLAB と Excel を連携させる方法があります Spreadsheet Link を利用することで Excel フロントエンドから MATLAB の計算エンジンを呼び出してデータの解析 演算処理を行うことができます MATLAB がインストールされていない PC に対しては MATLAB Compiler を利用することで 作成した MATLAB プログラムを Excel アドインとしてパッケージ化し Excel ユーザに配布することができます MATLAB Compiler で作成された Excel アドインは 無償で提供される MATLAB Runtime ライブラリをインストールした PC 上に自由に配布することができるため この配布された Excel アドインを利用することで 様々な現場のエンジニアが Excel 上から 前述したような大規模データアクセス ホワイトペーパー 5
や 高度なデータ解析 また 並列計算による高速な処理が実現された MATLAB の機能を利用することができます まとめ 複雑化 高度化するものづくりの現場において データ解析の重要性は高まっています MATLAB は幅広いデータフォーマットに対応しており データへのアクセスが容易です また MATLAB には様々なデータの処理 可視化機能が用意されています アルゴリズム開発では統計解析 機械学習 最適化など 分野別に関数ライブラリが用意され 開発されたアルゴリズムは Excel のアドインとして現場のエンジニアに配布することができます MATLAB をデータ解析の現場で利用することで 既存の Excel での解析環境を補完し 高度で高速な解析環境を作ることができます 関連 Web セミナー Excel ユーザーのための MATLAB 1:13:24 実践! 多チャンネル時系列データの解析入門 : 自動車テストコースでのセンサーデータ処理 1:03:50 ホワイトペーパー 6