データ・サイエンスとオープンソース

データを有用な情報に変換するためのオープンソース・ツールについて学ぶ

データ・サイエンスでは、データから価値ある情報を抽出することを目的として、数学とコンピューター・サイエンスを組み合わせます。この記事ではデータ・サイエンスについて紹介し、この急速に成長している分野での優れたオープンソース・ツールを調査します。

M. Tim Jones, Independent author, Consultant

Photo of M.Tim JonesM. Tim Jones は組み込みソフトウェアのエンジニアであり、『Artificial Intelligence: A Systems Approach』、『GNU/Linux Application Programming』(現在、第 2 版です) や『AI Application Programming』(こちらも現在、第 2 版です)、それに『BSD Sockets Programming from a Multilanguage Perspective』などの著者でもあります。技術的な経歴は静止軌道衛星用のカーネル開発から、組み込みシステム・アーキテクチャーやネットワーク・プロトコル開発まで、広範にわたっています。彼はコロラド州ロングモン在住で、Intel に勤務するプラットフォーム・アーキテクトであり、執筆活動も行っています。



2013年 9月 12日

データ・サイエンスの目的は、データ・セットから有用な情報を抽出することです。これまで長い間、企業はビジネス資産としてのデータの価値を認識していたものの、現在利用可能な膨大な量のデータには、データの意味を理解してそれを効率的に管理するための新しい手段が必要です。目下、データ・サイエンスを大量のデータに適用するためのシステムの構築に取り組むエンジニアと科学者が増えてきています。この記事では、データ・サイエンスという分野について紹介するとともに、データ・サイエンティストが現在使用できるオープンソース・ツールについても紹介します。

データ・サイエンスとデータ・サイエンティスト

データ・サイエンスは、データを「収集」することから始まります。収集の候補となるデータは、オープン・データの場合もあれば、内部ビジネス・プロセスから生成されるデータ (例えば、Web サイト統計など) の場合もあります。データの収集に続いて行われるのが「精製」です。精製とは、データを絞り込んで、特定の質問に対する答えとなる有用な情報のみにするプロセスで、創意工夫が必要なプロセスです。一般に、情報を抽出する手法は、対象とする質問によって決まります。収集と精製のステップには、データ・クレンジング (前処理) やデータ視覚化といった、他の重要な側面も含まれています。

オープン・データ

オープン・データとは、誰もが必要に応じて使用できるように、データを無料で公開することによってデータを「民主化」するという概念です。現在拡大しているオープン・データ運動は、オープンソースの背後にある考えに従っています。有益なオープン・データのソースには、Data.gov があります (「参考文献」を参照)。これは、連邦政府の行政機関によって生成されたデータへの公開アクセスを促進するために作成された米国政府の Web サイトです。

データ・サイエンスは、ビジネス・プロセスとして捉えることもできます。O'Reilly 社の Mike Loukides 氏は、データ・サイエンスはデータを情報に変換するだけでなく、製品に変換することでもあると強く訴えています。その観点からすると、この分野は現代のゴールド・ラッシュ ― つまり、山のような情報の中から価値のある情報を探し出す競争 ― であると言えます。

データ版ゴールド・ラッシュで価値のある情報を探す人たちは、データ・サイエンティストと呼ばれます。企業がデータの価値を認識するにつれ、有能かつ分野横断的なエンジニアおよびサイエンティストの需要が高まっています。データ・サイエンティストに必要なのは、コンピューター・サイエンス、数学、および統計学のスキルです。さらに、特定の分野の専門知識も持ち合わせていると ― つまり、特定のデータ・ソース (医療、金融、Web、その他の分野) について理解していると ― 理想的です。図 1 に、コンピューター・サイエンス、数学と統計学、および専門知識が交わり合う部分に、データ・サイエンスが位置する様子を示します。

図 1. データ・サイエンスの主要な学問分野
データ・サイエンスの主要な学問分野が交じり合う様子を示した図

この完全なスキル・セットを持つデータ・サイエンティストは、特定の分野の専門知識と数学を駆使し、(コンピューター・サイエンス分野の手法により) データをマイニングして精製した情報にするアプリケーションを作成することができます。その鍵となるのが、分野横断的なフォーカスです (そこには、機械学習や情報検索などの分野が含まれることもあります)。

最近では、ビッグ・データ・アナリティクスの経験を持つエンジニアとサイエンティストの需要が高まっています。McKinsey & Company 社の予測では、2018年までに、データ・サイエンティストの役割を担える人材の不足が生じるということです (「参考文献」を参照)。データ・サイエンスにおける考え方と手法は、他の多くの学問分野でも役に立ちます。データ・サイエンティストになることを目指していないとしても、データ・サイエンスのスキルは、自分のエンジニアリング・ツールの 1 つに加えておくと非常に有用なものになるはずです。


データ・サイエンスが使用されている分野

クラウド・コンピューティングと同じく、データ・サイエンスは急速に関心を集め、その採用が広まっています。Google Insights for Search (現在は、Google トレンドに統合されています) のデータによれば、この記事を執筆していた時点とその 1 年前とを比べると、データ・サイエンスへの関心はおよそ 2 倍に高まっています。Google Insights for Search 自体も、データ・サイエンスが実際に採用されていた例の 1 つです。図 2 に示されているように、2011年夏から 2012年春までの間に Web 検索語として「data science」が入力された頻度は急増しています。

図 2. データ・サイエンスへの関心度に関する Google Insights for Search のデータ
2011年夏から 2012年春までの間のデータ・サイエンスへの関心度に関する Google Insights for Search のデータ

(クローリング・ベースの収集であろうと、クリック操作などのユーザーの行動に基づいた内部収集であろうと) データをオンラインで収集する組織内では、データ・サイエンスが瞬く間に不可欠な要素になってきています。Google、Amazon、Facebook、LinkedIn などの主要な Web サイトはいずれも、それぞれのサイトで入手できるデータを活用するために独自のデータ・サイエンス・チームを設けています (「参考文献」を参照)。

Google による PageRank アルゴリズムの開発は、初期の頃のデータ・サイエンスの一例です。Google は Web をクローリングして各ページ上のハイパーリンクに数値による重みを割り当て、これらのリンクの相対重要度を測っています (PageRank の完全な詳細は、Google の内部でのみ知られています)。PageRank アルゴリズムは、検索語の関数として Web コンテンツをランク付けする手段となっています。

Amazon や Walmart などの大規模なオンライン小売業者では、売り上げを伸ばす目的でデータ・サイエンスを使用しています。これらのオンライン小売業者は、ユーザーの製品検索と過去の購入実績に基づいて、個々のユーザーに対するお薦めを生成します。

プロフェッショナルのネットワーキング・サイトである LinkedIn は、人々とその職歴、関心、つながりに関する膨大なデータを保持しています。こうしたデータから成る膨大なネットワークは、LinkedIn で新しい製品を生み出すために、より深いレベルでデータを利用する (個人向け、グループ向け、および企業向けの) 各種推奨エンジンおよびプロジェクトを生み出しました。

Web が持つ性質を利用した斬新なデータ・サイエンスの一例は、bitly 社によるものです。bitly というサービスは、表面上はユーザーが任意の URL を最大 19 文字の URL にまで短縮できるようにするサービスです (短縮された URL は bitly のデータ・センターに永続的に保管されます)。短縮 URL を参照すると、bitly から本来の URL にリダイレクトされます。これにより、bitly はユーザーがどの URL を短縮するか、そして他のユーザーがどの URL をクリックするかがわかるというわけです。こうした戦術によって、bitly (および主任サイエンティストの Hilary Mason 氏) がブラウジングの傾向についての多様な統計を生成するために使用できる、膨大な量のデータがもたらされます。bitly に登録したユーザーは、自分の短縮 URL が、どこの国から、どのリファラー (e-メール・クライアント、Twitter、または別の URL) によって、いつクリックされたかを調べることができます。さらに企業も、bitly を使用することで、一連のコンテンツに関するユーザーの行動を追跡することができます。


データ・サイエンスのためのオープンソース・ツール

コンピューター・プログラミングが 1 つの言語または 1 つの開発環境に縛られていないのと同じく、データ・サイエンスに関連付けられるツールやツール・スイートも 1 つだけではありません。データ・サイエンスは、オープンソース・ドメインの多種多様なツールによって促進されています。そうしたツールには、大規模なデータ・セットを数字として処理するツールや、複雑な処理の開発を支援する視覚化およびプロトタイピング・ツールなどが含まれます。表 1 に、データ・サイエンティスト向けの著名なオープンソース・ツールと、それぞれの役割を記載します。

表 1. データ・サイエンスのためのオープンソース・ツール
ツール説明
Apache Hadoopビッグ・データを処理するためのフレームワーク
Apache MahoutHadoop 対応のスケーラブルな機械学習アルゴリズム
Sparkデータ・アナリティクス用クラスター・コンピューティング・フレームワーク
統計計算用 R プロジェクトデータ操作とグラフ作成が容易な言語環境
Python、Ruby、Perlプロトタイピングおよび本番用スクリプト言語
SciPy科学計算用 Python パッケージ
scikit-learn機械学習用 Python パッケージ
Axiisインタラクティブなデータ視覚化フレームワーク

表 1 に記載しているのは、すべてのツールではなく、データ・サイエンティストのツール・ボックス内で中核となる要素を代表するツールです。オープンソース・ドメインには、極めて特殊化されたドメイン固有のライブラリーやツールも多数あります (例えば、インタラクティブな地図視覚化ツールや、テキスト分析用ツールなど)。

Hadoop、Mahout、Spark

インターネットは、ユーザーの行動と習慣に関する大量のデータを収集する機会を与えてくれます。大量のデータ・セットを処理するフレームワークとしては、Apache Hadoop が第 1 に挙げられます。Hadoop がデータ・サイエンスにとって重要となる理由は、これが分散データ処理用のスケーラブルなフレームワークであるためです。データ・サイエンスで扱うすべての問題にビッグ・データの処理が必要となるわけではありませんが、インターネット規模のデータが関与する問題には Hadoop が理想的なフレームワークとなります。ビッグ・データ・フレームワークにおける初期のデータ・サイエンスの一例には、Google MapReduce フレームワークによる PageRank アルゴリズムの実装があります (Hadoop は、MapReduce の実装です)。また Apache Pig を使用すると、MapReduce アプリケーションを自動的に作成する問い合わせ言語が提供されるため、Hadoop がさらに利用しやすくなります (「参考文献」を参照)。

Apache Mahout は、Hadoop プラットフォームを対象にスケーラブルな機械学習アルゴリズムを実装したものです (「参考文献」を参照)。Mahout には、クラスタリング・アルゴリズムと (推奨システムを実装するための) バッチ・ベースのコラボレーティブ・フィルタリング・アルゴリズムのスケーラブルな実装が含まれています。

注目に値する大規模データ・セットのソリューションとしては、Spark フレームワークもあります (「参考文献」を参照)。Spark には、フォールト・トレラントな抽象化を使用したインメモリー・クラスター・コンピューティングなどの最適化が導入されています。

R プロジェクト

データ・マイナーが使用するツールキットの中に含まれていることが多いツールは、「R」という名前のプログラミング言語兼開発環境です。R は統計計算とグラフィックスにフォーカスしており、比較的簡単に習得することができ、データ分析の分野で広く使用されています。オープンソースであり、無料で入手できる Rは、大規模なユーザー・ベースを持つ人気の高い言語です。

R は、オブジェクト指向、関数型、手続き型、そして命令型という複数のプログラミング・スタイルをサポートしているマルチパラダイム言語です。R 言語はコマンドライン・インターフェースを通じて解釈されるだけでなく、本番レベルの広範なグラフ作成機能も備えています。そのまますぐに使用できる静的グラフが用意されている他、パッケージを追加することで、動的グラフとインタラクティブなグラフの両方に対応できるようになります。図 3 に、R で生成されたグラフの例を示します。

図 3. R を使用して生成した sinc 関数の 3D グラフの例
R を使用して生成した sinc 関数の 3D グラフの例を示す画像のスクリーン・キャプチャー

R プログラミング言語は、C と Fortran で開発されました。R 内部の標準関数の多くは、R 自身で作成されています。R は混合言語プログラミングをサポートしているため、R オブジェクトには C や Java などの言語からアクセスすることができます。R の機能は、パッケージを使用することで簡単に拡張することができ、パッケージは、R、C、Java、Fortran といったプログラミング言語で開発することができます。

スクリプト言語

Python、Ruby、Perl などのマルチパラダイム・スクリプト言語は、アプリケーションの開発およびデプロイメントをするための専門家向けのプラットフォームになります。しかも、これらの言語は新しいアイデアのプロトタイピングとテストに最適であり、XML や JSON (JavaScript Object Notation) といった各種のデータ・ストレージおよび通信のフォーマット、さらには科学計算および機械学習のための多種多様なオープンソース・ライブラリーもサポートしています。この分野で最もよく使用されているのは、明らかに Python です。それはおそらく、コンピューター・サイエンス以外のバックグラウンドを持つユーザーにとって最も習得しやすいという理由からでしょう。Python の知識は、データ・サイエンティストの職務要件となっていることもよくあります。

SciPy および scikit-learn

SciPy パッケージは、Python を科学プログラミングの分野に拡張します。SciPy がサポートする機能は多岐にわたり、並列プログラミング・ツール、積分、常微分方程式ソルバー、さらには C/C++ コードを Python コード内に組み込むための拡張機能 (Weave) まであります。

SciPy に関連する scikit-learn は、Python ベースの機械学習用パッケージです。scikit-learn には数多くの機械学習アルゴリズムが含まれており、その対象としては、教師あり学習 (サポート・ベクター・マシン、ナイーブ・ベイズ)、教師なし学習 (クラスタリング・アルゴリズム)、そしてデータ・セット操作用のその他のアルゴリズムがあります。

この 2 つのパッケージは、どちらもデータ・サイエンス・プラットフォームとして使用できるように Python の機能を拡張します。

Axiis によるインタラクティブなデータ視覚化

オープンソース・ソリューションの多くは、視覚化のみにフォーカスしています。なかでも特に興味深い例が、簡潔なマークアップ言語によって色鮮やかな視覚化を実現する Axiis フレームワークです。図 4 に一例を示します。

図 4. Axiis フレームワークを使用したウェッジ積み上げグラフの視覚化
Axiis フレームワークで作成されたウェッジ積み上げグラフを視覚化したもののスクリーン・キャプチャー

図 4 は、BrightPoint Consulting 社の取締役である Tom Gonzalez 氏によるインタラクティブなデータ視覚化の静的バージョンです。「参考文献」で、インタラクティブ・バージョンへのリンクを参照してください。


さらに詳しく調べてください

データ・サイエンティストの任務は、知識と経験の確固たる基盤の上に成り立ちますが、ツールもまた、データ・サイエンス分野の重要な側面です。新たに出現する学問分野では、オープンソース・コミュニティーが先駆けとなって、これまでにないソフトウェアが構築されることがよくあります。データ・サイエンス分野も例外ではありません。データ・サイエンスは比較的新しい分野であるため、多くの新しいツール、データ・プロトコル、データ・フォーマットの開発が進められていることは、ほぼ間違いありませんが、データ・サイエンスでも他の多くの学問分野と同じく、ソリューションの種類の多さと内容の深さでリードしているのは、オープンソースのソリューションです。

参考文献

学ぶために

  • Google トレンド (かつての Google Insights for Search): この Google サイトでは、世界のさまざまな地域で検索されたトピックのトレンドを誰もが見ることができます。複数のトピックのトレンドを比較することもできます。
  • オープンデータ: ウィキペディアでオープン・データについての説明を読んでください。
  • What is data science?」(Mike Loukides 著、O'Reilly Radar、2010年6月): データ・サイエンスについての優れた説明、そしてデータを製品に変えるという発想を読んでください。
  • Growing Your Own Data Scientists」(Dan Woods 著、Forbes、2012年3月): データ・サイエンティストの定義を調査している、データ・サイエンスの第一人者による連載記事です。
  • developerWorks の Hadoop: Apache Hadoop とその関連テクノロジーに関する豊富な記事とその他のリソースを調べてください。
  • Apache Mahout: 万人のためのスケーラブルな機械学習」(Grant Ingersoll 著、developerWorks、2011年12月): Mahout のコミッターである Ingersoll 氏が、Mahout の機能について説明し、よく使われている Mahout のアルゴリズムをデプロイしてスケーリングする方法の一例を紹介しています。
  • Linux 対応のデータ可視化ツール」(M. Tim Jones 著、developerWorks、2006年11月): この記事では、R プロジェクトとの類似点を持ついくつかの有用なデータ可視化ツールを紹介しています。
  • Big data: The next frontier for competition」: McKinsey & Co. によるビッグ・データとデータ・サイエンティストの役割に関する調査を読んでください。
  • developerWorks Big data テクニカル・トピックス: ビッグ・データの世界を案内する広範なハウツー情報、ツール、製品を調べてください。
  • Data.gov: オンライン・カタログからアクセスできる Data.gov データ・セットをブラウズしてください。複数の基準を使用して検索を絞り込むことができます。
  • Science.gov: このポータルでは、13 の連邦機関の 55 を超えるデータベースと 2,100 を超える Web サイトにアクセスして、米国政府の科学情報を調べることができます。Data.gov での場合と同じく、検索基準または特定の機関を基準に検索を絞り込むことができます。
  • Apache Pig でデータを処理する」(M. Tim Jones 著、developerWorks、2012年3月): Pig の詳細とアプリケーションで Pig を使用する方法を学んでください。
  • Spark: 高速なデータ分析のための新たな手段」(M. Tim Jones 著、developerWorks、2011年12月): Spark のクラスター・コンピューティング手法、そして Spark と Hadoop の違いについて学んでください。
  • developerWorks Open source テクニカル・トピックス: オープンソース技術を使用した開発や、オープンソース技術を IBM 製品とともに使用するのに役立つ広範なハウツー情報、ツール、およびプロジェクトの更新を見つけてください。

製品や技術を入手するために

  • Apache Hadoop: Hadoop をダウンロードしてください。
  • Apache Mahout: Apache ミラーから Mahout をダウンロードしてください。
  • Spark: Spark の最新リリースを入手してください。
  • R プログラミング言語: 統計および視覚化の分野で普及しているマルチパラダイム言語兼開発環境である R を入手してください。
  • PythonRubyPerl: これらのマルチパラダイム・スクリプト言語を使用して、データ精製アルゴリズムの開発およびプロタイピングを単純化してください。
  • SciPy および scikit-learn: 科学計算用 SciPy パッケージと機械学習用 scikit-learn パッケージで提供される Python のデータ・サイエンス機能を使用してください。
  • Axiis: Axiis データ視覚化フレームワークは、初心者にもエキスパートにも役立つソリューションです。サンプル・ページを調べて、図 4インタラクティブ・バージョンを含め、このフレームワークで実現できることを確かめてください。
  • IBM 製品の評価をご自分に最適な方法で行ってください。評価の方法としては、製品の評価版をダウンロードすることも、オンラインで製品を試してみることも、クラウド環境で製品を使用することもできます。

議論するために

  • developerWorks コミュニティー: ここでは他の developerWorks ユーザーとのつながりを持てる他、開発者によるブログ、フォーラム、グループ、Wiki を調べることができます。

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Open source
ArticleID=944380
ArticleTitle=データ・サイエンスとオープンソース
publish-date=09122013