データサイエンティストのひよこ

分析に関する日々の相談事項

ビッグデータ分析とは

ビッグデータ分析で私の関わったこと

私は、ビッグデータ分析を専門としていた情報科学科の助教だった。細かい専門分野の名前を出すと、複雑系およびネットワーク解析の研究をしていた。

f:id:TamSan:20180906021801p:plain
図:Phys. Rev. E 91, 042815

複雑系出身のデータサイエンティストは、珍しいタイプだと思っていた。が、いろいろと調べてみると、データサイエンティストのなかでも同分野の人が、そこそこいることが分かった。

  • Media Lab.のAlex "Sandy" Pentland教授
  • JALのデータサイエンティスト 渋谷直正
  • データの見えざる手 矢野和男
  • ホットリンクR&D 榊剛史

しっかりした人の中にも意外と仲間がいてうれしい。話せばいくらでも話を膨らませることができるが、ただ、今回はネットワーク分析ではなくて、ビッグデータ分析についてまとめてみたい。

ビッグデータ分析

 助教として何年か勤めた経験からすると、この話題で、データとビッグデータデータ分析とビッグデータ分析とは何が違うのかということを聞かれなかったことがない。結論から言うと、ビッグデータにはただ大きいだけのデータではない処理が困難な複雑データも含むので、分析技術として、データマイニング方法としての側面もあるし、ビッグさを軽減するための近似方法などの議論も多い。

 ガートナー社は、ビッグデータをvolume、velocity、varietyと特徴づけ、2012年に「高ボリューム、高速度、高バラエティのいずれか(あるいは全て)の情報資産であり、新しい形の処理を必要とし、意思決定の高度化、見識の発見、プロセスの最適化に寄与する」と新しい定義を与えた。技術水準に対し、非常に相対的な定義であるが仕方がない。
 Wikiの最初にも「一般的なデータ管理・処理ソフトウエアで扱うことが困難なほど巨大で複雑なデータの集合のことである。」と、書いてあった。困難・巨大・複雑との言葉に逃げてしまったが、それぞれ高速度、高ボリューム、高バラエティのことなので基本的には同じことを言っていると思う。
ただ、これはどちらかというと、単純な処理上の都合での分類である。

 何にせよ高ボリューム、高速度、高バラエティであることは確かであり、私の経験からいうと、このうちのいずれかと言っているガートナーの区分がやはり適切なように思う。決してファイルサイズの大きさだけがビッグデータではないのである。

データ 静的 動的
構造 ただ巨大なデータ 計算の速さよりもデータの流入の速さが上回る
非構造 通常の機械学習が当てはめられないデータ ←が動的にふるまう

※動的とはデータの規模が時刻可変なものを言う
※通常の機械学習が当てはめられないデータとは、非構造や非ベクトルデータのことである。
※表もっときれいに作りたい

こんなデータの例として、

  • (大規模処理):
    • 東証株式銘柄の株価データの相関分析(これぐらいだったらたいしたことか・・・)
  • (高頻度処理):
    • ミリ秒単位で発注が繰り返される金融市場では、発注・約定のデータを解析して自動発注をしようとしても計算時間が長ければ結果を受け取る前に、市場の様子が変わってしまう。
    • 自動運転車の前方障害物を確認する高精度計算が、人間の空走時間を下回らなければいけない。
  • (非構造処理):
    • SNSの友達関係のデータ

など、いろいろある。

分析におけるビッグデータ分析

分析の観点から言うと、次のようなことが大きなハードルとなってくる。

  • 人間が仮説を立てることが難しい(巨大/複雑すぎてデータ全体を俯瞰できない、データの更新が早いetc)
  • アルゴリズムを当てはめることが難しい(計算時間・メモリが足りない)

 データが持つポテンシャルを最大限に引き出そうとしたとき、ビッグデータは人間による関係抽出に難があり、仮説を立てること自体が難しい巨大で複雑なデータである。無理やり仮説を立てることで、データから間違った情報を抽出してしまう可能性があったり、データが持つ多くの情報を無駄にしてしまうことがある。
 このようなデータに対する分析のアプローチとして、データから人間の主観的要因なく、機械的に関係を取り出することである。データマイニングという語があるように、データから仮説を発掘することもひとつの手法となっている。ただし、ドメイン知識やビジネス経験がむしろ不必要で、データの統計的性質や構造をもとに分析方法を選定するため恣意性が入りにくい分、分析方法の正確な理解が必要となってくる点が難しいところである。

 ビッグデータ分析のほとんどはデータマイニングの技術が占めるといってもいい。静的データからの探索的発見をしたり、リアルタイムに傾向が変わっていくデータに、データ形式さえ同一であれば、機械的に関係が抽出されモデルをリアルタイムに変化させることができる。業務自動化のプロジェクトにおいて、すべてを数値に落とし込み、機械の動くルールを作る分析では、重宝する技術である。こういう正確な理解、緻密な実装や職人技の調整が要求され、私の周りでも、エンジニア出身のデータサイエンティストが得意としている。

具体的には、ビッグデータ分析には、次のような知識や技術が要求される。

  • 現実的な時間やメモリで解くための手法
    • 行列計算(固有値計算)、データ構造、探索
  • 基礎統計量が露わでないデータの数値化手法
    • ノードランキング、関係性定量評価(テンソル、ネットワーク)、頑強性評価、モチーフ解析
  • 基礎計算
    • 数値解析、誤差*1

 このような技術を活用し、得られた結果をもとに、通常の機械学習モデリングに当てはめていくのである*2。また、ネットワーク解析やテンソル解析においては、データ構造やグラフアルゴリズムや圧縮など統計とは異なる計算機科学や情報科学の知識が必要となる。実務では、少々実装が難しいものが多いので、データサイエンティスト自身が実装するより、機械学習エンジニアにディレクションしていくことが適切であると思う。物によってはリサーチャあたりも必要かもしれない。

まとめの一言として

  1. ビッグデータ

高ボリューム、高速度、高バラエティ(非構造含む)のいずれかの特徴を持ち、データ分析時に特徴量が不明瞭かメモリや計算時間やサイズにおいてスケール上の問題をもたらすデータ

  1. ビッグデータ分析

複雑データの統計的性質の抽出や構造に根差した関係抽出方法の総称

ここまで読んで大した結論ではないなと自分で思った。*3

データ分析でごまかすビッグデータ分析

 データ分析自体は、別に最近始まったことではない。ただ、従来のデータでは、データ数が小規模の分析として、有意差、検定、仮説検証などの手法がとられる。複雑な分析に耐えられるデータではなかったため、ノンパラメトリックな方法がとられたり、基本的な統計検定に加え、簡単な回帰が扱われるに過ぎなかったのだと思う。
 データが大きくなることで、有意性が言いやすい程度の扱いしかできないのはもったいない。データの規模が小さいときに行っていたままの手法で統計検定や仮説検証だけで分析することももったいない*4
 これを書いたきっかけとして、ビッグデータ分析はできなくても、データが持つ多くの情報を無駄にすることを許容すればデータ分析はできるということで、データのポテンシャルがないがしろにされている分析を多々見かけるからである。データマイニングという言葉を、仮説・切り口・気づきをもとに仮説検証から、事実を引っ張り出してくることだと思っている人がいて、データマイニングという機械的技術があることを知らない人がいたことだ。ちなみにその人は、機械学習エンジニアという言葉も知らないようだった。恐ろしいことに、データ分析業務にかなり近いところにいる人だ。
 ビッグデータにおいては、人が仮説を与えて分析してしまうことは新しいことを発見することの妨げとなることもある。データの規模が大きくなった時、データのポテンシャルを引き出すためにはデータマイニング技術というものが必要になってくることを思い出してほしい。

*1:「誤差」には気をつけたい。社会データのほとんどが、べき性を持つ分布に従い、桁違いな数値同士の四則演算をすることが頻繁にある。何を言いたいか分かると思うので、ここでは書かない・・・。

*2:こういう例示が苦手なので、思いついたらこっそり増やす

*3:いつか書き直す

*4:ただ、我々分析ファームの人間には余計な分析をしている暇がないのは事実だ。悲しい。