データ分析の準備・加工に優れた道具とは? 今回はITエンジニアがデータ分析する際のデファクトスタンダードになっている環境をセットアップしていきます。
連載第1回 「ITエンジニアがデータサイエンティストを目指すには?」ではデータサイエンティストの役割を説明し、その中でITエンジニアが担う役割と必要となるスキルについて解説しました。第1回の中でも述べましたが、この連載の目的の1つはデータサイエンティストを目指すITエンジニアが必要最低限の知識とスキルを中心に紹介し、読者の皆さんにすぐに始められることから実際に着手していただくことですので、第2回の今回は実際に分析使う“道具”をご紹介します。この連載では分析ツールとしてPythonを使っていきます。ここではなぜPythonがツールとして向いているのかを解説し、Python環境や必要なライブラリのセットアップについて説明していきます。
忘れてはいけないのは、難しい道具を使いこなすことが重要ではなく、分析結果を活用するマネジメントの視点は“スピード”や“効率”ですのであまり道具に凝りすぎないでください。
ITエンジニアの仕事は大きく分類すると「分析手法の検討と準備」「データの準備と分析」「プレゼンテーション」「結果の検証」4つのフェイズに分けられます。各フェイズで必要となる機能は以下が挙げられます。
分析対象のデータとしては表形式の構造化されているデータが理想です。分析アルゴリズムについて書かれた解説書などではあらかじめ表形式でデータが準備されていますので、カンマ区切りのCSVデータを読み込むところから始めますが、実際には、特にこれからの分析では、“オープンデータ”と呼ばれるインターネット上に公開されているデータやWebサーバのログなど分散したサーバ上にファイルとして存在するものなど、さまざまな場所に散在するデータをうまく取り込む機能が必要となります。公開されているデータをHTTP経由で取得したり、REST APIを使ってデータを取り込むような機能が必要となってきています。もちろんオーソドックスなCSVやRDBMSからのデータ取得機能も必須です。
項目 | 内容 |
---|---|
ファイル | CSV、Excel、Webログ |
ネットワーク | HTTP、FTP、REST |
データベース | RDBMS |
データを取得する場所も多様化していますが、取得するデータの種類はさらに多様化しています。Webアクセスログなどのログデータ、ソーシャルメディアなどのテキストデータなど、必ずしも構造化されていないデータが多くなってきていますし、時系列のデータを扱う場合には日付や時刻のフォーマットの統一にも気を配る必要があります。いずれにしろ分析に使用するためには、非構造化データであれば正規表現などを利用してデータを正規化・構造化し、時系列分析が必要であれば日付と時刻のフォーマットを統一し、場合によっては空白となっているデータを補完する作業が必要になります。
データの種類 | 事前処理の方法 |
---|---|
構造化 | 正規表現(Regular expression) |
時系列 | タイムスタンプフォーマット関数、時系列関数(Time series function) |
データの準備ができたら、いよいよ分析ですが、一般的な分析モデルをライブラリとして持っていることも重要です。もちろん理論を理解していればどんなプログラミング言語を使っても分析ロジックを記述することはできますが、効率の観点からもビジネスアナリティックスでよく使われる基本的な分析モデルはコーディングなしで使えることが望ましいです。欲を言うならばなるべく最新の分析モデルが早くライブラリ化されて提供されるものがよいでしょう。
数値計算は最も重要な機能です。特に行列計算は、回帰分析(Regression Analysis)や主成分分析(Principal component analysis, PCA)など多くの分析モデルを計算する際に必要になる計算ですので必須の機能です。また、桁数の大きな数値計算もありますので指数や対数計算に適した機能も必要です。
グラフを描画したりデータを視覚化する機能は分析の準備段階でデータの全体観をとらえるために必要ですし、分析結果をプレゼンテーションするためにも必須です。さらに分析がより複雑になっていきますので、3次元での視覚化も今よりも多くの人に求められる機能です。
データ分析を拡張、高度化していくという点からも今後はビッグデータへ対応するための機能も重要な要素となっています。
世界を見わたすと、1つの企業で数十ペタバイトものデータを使って分析を行う企業もあります。データの種類も多様化しているので、これまでのリレーショナルデータベースを基盤としたデータウェアハウスの仕組みに加えて、Hadoopのような大量のデータを超並列処理ができる機能も、これからますます重要になってきます。
さらに大量のデータを使った高度な分析を行うために、これまでのクライアント側のツールでデータを処理するアーキテクチャでは賄い切れなくなってきますので、データベース側で高度な分析処理ができる機能も必要になります。
Copyright © ITmedia, Inc. All Rights Reserved.