ビッグデータ解析とMATLAB

  • 営業へのお問い合わせ
  • 評価版

大規模で多様なデータ集合の扱い方

ビッグデータとは、従来のデータベースでは扱うことが困難な規模のデータ集合を指します。各種センサやGPSなどの衛星機器、防犯カメラや医療デバイス、さらには金融マーケットなどから送られる多様な非構造化データがビッグデータになり得ます。日本におけるビッグデータ活用事例として、Webショッピング、公共構造物のひずみや振動解析、プローブ情報解析などが知られています。各ストレージには数ギガバイトからテラバイトのデータが収められ、日々数GBずつ成長するような場合もあります。

ビッグデータは、各種アナリストやデータサイエンティストに対して、より深い洞察と熟慮に基づいた意思決定の機会を与えるとともに、メモリ不足や処理時間の長期化、処理のオーバーフローといった様々な課題をもたらします。標準的なアルゴリズムは、ビッグデータの処理に対しては時間的およびメモリ消費の観点からも適切でないことが多々あります。ビッグデータを扱うには1つではなく複数の手法を用意する必要があり、MATLABはこのような課題に取り組むための色々な手段を提供しています。

MATLABにおけるビッグデータ向け機能

  1. 64ビット対応。MATLABの64ビット版はメモリ上に配置できるデータ量を大幅に増やし、32ビット版に比べて最大でおよそ2000倍程度まで増やすことができます。32ビットアプリケーションの場合は2GBまでという制限がありますが、64ビットの場合はOSが認識している物理メモリのサイズまで割り当てることができます。Windowsの場合、デスクトップエディションで500GB、 サーバーエディションで4TBまでメモリを増やすことができます。
  2. メモリマップ変数。MATLABのmemmapfile関数は、ファイル、またはその一部をMATLAB変数としてメモリに割り当てることができます。これによりディスク上のメモリに保持できない、またはロードに時間がかかるような大きなデータに対して効率的にアクセスすることができます。
  3. ディスク変数。matfile関数はディスク上のMAT-ファイルに保存されている変数に直接アクセスできるので、一部の変数のみを読み込むことができます。これにより、メモリ上に展開するには大きすぎるファイルに対して、部分的に取り出して処理することができます。
  4. マルチスレッド対応関数。MATLABの多くのビルトイン関数、fftinveigといった関数はマルチスレッド化されています。並列的に実行されることにより、これらの関数はマルチコアの恩恵を受け、大きなデータに対する計算パフォーマンスの向上をもたらします。
  5. GPUコンピューティング。もし、GPUを利用されているのであれば、Parallel Computing ToolboxのGPU対応の数学関数群が計算速度の向上をもたらします。
  6. 並列計算。Parallel Computing Toolboxによって、 forループの並列化 (2:48) 、つまりマルチコア搭載PC上でMATLABコードを並列的に実行することができます。さらに、MATLAB Distributed Computing Serverがあれば、数千台のノードという規模のクラスタ環境でさえも、並列計算の環境として利用することができます。
  7. クラウドコンピューティング。Amazon Elastic Computing Cloud (EC2)上のMATLAB Distributed Computing Serverは、数百台または数千台のホストを使った並列処理をオンデマンドサービスとして利用することができます。クラウドコンピューティングは、コンピュータクラスタやデータセンターを構築したり管理したりする必要なく、ビッグデータ分析のための環境を提供します。(現在、本サービスは日本国内では提供されていません。)
  8. 分散配列。Parallel Computing ToolboxおよびMATLAB Distributed Computing Serverにより、クラスタにあるノード上のメモリに分散された行列や多次元配列を扱うことができます。これを利用することにより、1ノードでは収まらないデータを保持したり計算したりすることができます。
  9. ストリーミング処理。全てのデータを読み込んでから処理をしてしまうと、時間がかかり過ぎたりメモリが不足してしまうことがあります。そのような場合はSystem objectの利用により、次々に流れてくるデータに対してストリーミング処理を行うことができます。さらに、このSystem objectは、MATLAB Coderを利用することによって、C/C++ソースコードを生成したり、このコードを利用することによってパフォーマンスを向上しリアルタイム性を高めたりことができます。
  10. 画像のブロック処理。Image Processing Toolboxにあるblockproc関数は大きな画像に対してブロック単位で処理を行います。さらに、Parallel Computing Toolboxと一緒に利用することにより、ブロック処理をマルチコアまたはGPU上で並列的に実行することができます。
  11. 機械学習。機械学習は、データマイニングにおいてよく応用されている手法ですが、ビッグデータに対する予測モデルを構築したり重要度の高い変数を見つけたりするのにも有効な方法です。機械学習には、決定木(ブースティング/バギング)、K-means法や階層的クラスタリング、K最近傍法、混合ガウス分布とEMアルゴリズム、隠れマルコフモデル、ニューラルネットワークといった様々なアルゴリズムがありますが、これらはStatistics ToolboxおよびNeural Network Toolboxにより利用することができます。

製品使用例および使い方

その他製品に関する情報

その他: HDF5ファイルのインポート大規模データのインポート (英語)