データ分析がデキるITエンジニアになるために必要な「道具」を揃えるITエンジニアのためのデータサイエンティスト養成講座(2)(2/4 ページ)

» 2013年05月23日 18時05分 公開
[中林紀彦日本アイ・ビー・エム]

(7)多様なデータへの対応

 ソーシャルデータの分析などでテキストデータを分析する技術はかなり一般的になってきましたが、テクノロジーが発展するに従い、今よりも多様なデータにより簡単に対応できるようになっていきます。特に画像処理の分野はテキスト解析の次にニーズが高まっている分野ですので、画像を分析する機能への対応も数年後には必須となっているのではないでしょうか。

  • テキスト解析(Text Analysis)、形態素解析(Morphological Analysis)
  • 地理データ分析(Spatial Analysis)
  • パターン認識(Pattern recognition)、画像処理(Computer Vision)

(8)リアルタイムへの対応

 データ分析が高度化すると分析処理の間隔を1カ月から、1週間、1日、1時間、1秒と短くしてよりリアルタイムに状況に対応するというケースも必要になってきます。ここで必要になるのは、今までのデータをいったんどこかに格納して処理をするというアーキテクチャーではなく、ネットワークを流れるデータストリームをファイルやデータベースに格納せずリアルタイムに処理、分析ができる機能が求められます。

  • ストリーム・コンピューティング(Stream Computing)

 このように、データ分析には、基本機能として5つ、ビッグデータへの対応のために3つの機能が必要不可欠です。

(9)分析のための「道具」を選ぶ:おのおのの機能に対応したツール

 それでは前段を踏まえて、分析のための「道具」(ツール)の選び方を考えたいと思います。この連載では初級編のため、5つの基本機能について考えます。前段で挙げた5つの必要な機能を“完ぺき”に1つのツールで満たすことは現時点では現実的ではありませんので、複数のツールをうまく組み合わせて利用するのがよいのではないでしょうか。まずは、今までに挙げた項目を改めて見ながら検討していきましょう。

(1) データの取り込み
(2) データの事前処理
(3) 基本的な分析モデルを扱える
(4) 数値計算
(5) データや分析結果の視覚化
(6) 大量データへの対応
(7) 多様なデータへの対応
(8) リアルタイムへの対応
データ分析に必要な機能

 まず分析という観点で(3)(4)(5)の機能だけを考えるのであれば、「統計解析ソフトウェア」と呼ばれるカテゴリのツールが要件を満たします。オープンソースでフリーソフトウェアのプログラミング言語「R」がありますし、商用ソフトウェアという観点では「IBM SPSS」や「SAS」などが有名です。

 「R」に関しては、(1)(2)の機能に関してもかなりの部分で対応していると言ってよいでしょう。また、(4)(5)の機能に特化した「MATLAB」なども、選択肢として挙げることができます。

 しかし、実は、(1)や(2)の部分も重要な機能です。データを集めたり分析できる状態にきれいにするという作業も実際には重労働で、気の利いたツールを使って楽をしたいと思う方も多いと思います。

 この部分は柔軟性と自由度の観点から、プログラミング言語を選びたくなります。数値計算というと、まずFOTRANが思い浮かびますが、コンパイル型の言語は試行錯誤が多いデータ分析のツールとしてはいまひとつです。C/C++やJavaもこの点で優先度の高い選択肢ではありません。残るはインタプリタ型(スクリプト型)の言語でPerl、PHP、Ruby、Pythonなどがありますが、(3)(4)の分析モデルや数値計算、特に行列計算の観点から考えるとPythonが最有力候補です。

 昨今、米国オライリーから出版されるデータ分析関連書籍のほとんどがPythonとRをツールとして用いているものですし、米国防高等研究計画局(DARPA)がPythonの拡張モジュール・ライブラリを開発提供する企業に300万ドルを投資するというニュース(リンク)も報じられるほどPythonはホットな言語です。第1回で紹介したグレイロック・パートナーズの「DATA SCIENCE FELLOWS PROGRAM」でも行列計算ライブラリや数値解析ライブラリを含むPythonの学習がプログラムに含まれています。

 また、(7)に挙げたように、今後、分析対象データとしても重要になってくる画像処理(Computer Vision)という点からも、オープンソースのライブラリとして有名なOpenCV(注1)がPythonを標準でサポートしていて画像解析やパターン認識、機械学習など将来性という観点からもPythonの選択を後押しするものです。

 選択肢は1つではなく、場合によっては複数のツールを組み合わせた方が効率がいい場合もありますが、この連載では柔軟性と拡張性、将来性という観点からPythonをメインの「道具」として位置づけて利用していきます。

注1 OpenCV オープンソースで提供されている画像処理ライブラリ。形状認識などで使われる処理などがライブラリセットになっており、すでに多くの実績がある。



Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。