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

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

ビッグデータ分析とは

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

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

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

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

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

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

 ※2019/11/27:加筆修正

ビッグデータ分析

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

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

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

データ 静的 動的
構造化 ファイルサイズの大きい行と列でできたデータ 計算の速さよりもデータの作成や削除の速さが上回る
非構造化 画像やテキストなどの通常の機械学習で簡単に特徴量を得られないデータ 左記のようなデータの作成・削除が時々刻々と変化する

※動的とはデータの規模が時刻可変なものをここでは言う
※表もっときれいに作りたい

このようなデータや機械学習・AIの計算をあつかう事例として、

  • (大規模処理):
    • コンビニのPOS情報の分析(1日5億行ほどデータがたまるそうです)
  • (高頻度処理):
    • ミリ秒単位で発注・約定が繰り返される金融市場のデータ
    • 自動運転車の運転制御
  • (非構造処理):
    • SNSの友達関係のデータ

など、いろいろある。

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

このようなデータをどのように保存するかとか、どのように高速にデータベースにアクセスするかなどの難しさもビッグデータの取り扱いで重要な観点だが、分析の観点から言うと、次のようなことが、通常のデータ分析と異なり大きなハードルとなってくる。

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

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

 ビッグデータ分析のほとんどはデータマイニングの技術が占めるといってもいい。というのも、最初から最後まですべてがビッグデータであることは少なく、近似や特徴量抽出を通して、データの規模は小さくなっていく(小さくしていく)ことがほとんどだからである。そのため、分析の最初のフェーズで利用されるケースが多く、大量の静的データから探索的発見をしたり、リアルタイムに傾向が変わっていくデータを扱いやすいようにマイニングしていくことになる。データのフォーマットや背景の分布が同一であると考えられるならば、新しいデータがやってくれば、機械的に関係が抽出され、その関係をもとにモデルをリアルタイムにアップデートさせることができる。業務自動化のプロジェクトでは、すべてを数値に落とし込み、収集・整理・予測・配信など自動化するためには、重宝する技術である。こういう正確な理解、緻密な実装や職人技の調整が要求されることも多く、私の周りでも、エンジニアや研究者出身のデータサイエンティストが得意としている。

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

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

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

まとめの一言として

  1. ビッグデータ

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

  1. ビッグデータ分析

高速処理が必要な複雑データの統計的性質の抽出や構造に根差した分析方法の総称。

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

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

 データ分析自体は、最近始まったことではない。ただ、従来のデータ分析では、データ数が小規模の分析が多く、有意差、検定、仮説検証などの手法がとられる。大数の法則が成り立たず、複雑な分析に耐えられるデータではなかったため、分布の情報を消すノンパラメトリックな方法がとられたり、基本的な統計検定に加え、簡単な回帰が扱われるに過ぎなかった。
 データが大きくなることで、本来であれば手法はもっとリッチなものが扱えて、分析はもっといろいろなことができるはずである。しかし、データが大きなっても有意性が言いやすくなった程度の扱いしかできてないのも事実としてある。データの規模が小さいときに行っていたままの手法で統計検定や仮説検証だけでビッグデータを分析することはもったいない*4
 これを書いたきっかけとして、ビッグデータ分析はできなくても、データが持つ多くの情報を無駄にすることを許容すればデータ分析はできるということだ。周りでデータのポテンシャルがないがしろにされている分析を多々見かける。決して、統計学機械学習の理論として、間違っている操作ではないから、間違いとは言いづらいのだが、分析から余すことなく意味を見出すことを仕事としてる我々にとって、死角があるのは大変にもったいない。ビッグデータにおいては、人が仮説を与えて分析してしまうことは新しいことを発見することの妨げとなることもある。データの規模が大きくなった時、データのポテンシャルを引き出すためにはデータマイニング技術というものが必要になってくることを思い出してほしい。

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

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

*3:いつか書き直す

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