ビッグデータに関する勘違い

2018/10/23
euler.bonjour@gmail.com / https://github.com/khj1977
金輝俊 / Hwi Jun KIM

ビックデータと聞くと何をイメージするのであろうか?超巨大データベース、機械学習、人工知能、と言った事で あろうか。一見すると、難しそうでなんだか深淵だが、Web業界の中の人も含めて、大抵の人はビックデータと は何かを勘違いしている。一つ一つ見ていこう。

機械学習。機械学習はわりと聞く単語。ところで、機械学習にソリッドな定義はあるのだろうか?答えは否に近 いと筆者は思っている。実際、機械学習の教科書を何冊か読んでみても、書いている事はバラバラだったりす る。したがって、機械学習にソリッドな定義はないと思う。

それはさておき、機械学習の有名な本、PRML。これは難しい。東京のWeb業界の人はみんな一生懸命勉強し ている様子。それは良い事だと思う。しかし、いきなりPRMLに行く必要はない。それよりも確率統計と多変量解 析をきちんと勉強した方がいい、というのが筆者の見解。多変量解析を理解するには微分積分と線形代数も必 要。両社とも工学系の学部では一年次に学ぶ基礎。でも、ここが重要(注:一年に学ぶものであるが、線形代数 が学部課程では一番難しいと思っている)

教科書も確率統計と多変量解析に絞ればPRMLみたいに難しいのを読むのではなくて、「プログラミングのため の確率統計」など読みやすく、理論的バックグランドもきちんと書いている良書はある。おすすめ。

では、データベースに目を移そう。ビッグデータというとどのくらいのレコード数と容量をイメージするであろう か?1000万レコード?5000万?1億?10億?そして、GB(ギガバイト?)、TB(テラバイト?)(注:単位は極め て重要。単位がらみで、ある大規模データ勉強会でソフトバンクの人に質問をしたが、単にごまかすだけで、まと もな回答は得られず、落胆。他にもソフトバンクの人は知っているが、そちらは極めてまともな方達だった)

5000万とか数億レコードくらいではビックデータであるとは筆者は特に思っていない。このくらいでテキストデー タなら、容量はGB級といったところであろうか。これくらいならバッチで数時間回せば処理できる。10年位前の 別にHadoopとかない時代にHDDでそれくらいのレコード数をもとに色々な数値演算などを行っていた。

世の中のデータのレコード数は大抵10億レコード未満であろう。もちろん、計算時間短縮や一台で載らない処理 のために並列分散処理は必要だったりするが、別になくてもなんとかなる。

では、MapReduceは必要ないのであろうか?答えは否定的だ。レコード数的には大したことなくても、巨大行列 の演算などで一つのマシンのメモリに乗らなかったり、高速処理化で必要だったりする。なぜか、世間では分散 SQLのためにHadoopが使われているが、Disk IOやdistributed file system目当てで分散SQLをそっちに寄 せているのであれば、それはちょっと違うと思う。分散SQLエンジンのデータマージ後の各種SQL演算のために 分散処理が必要なら、それは納得。

ビッグデータはあんまない。とは言え、SFA(営業管理システム)などで大量のデータがあれば、それは使いたい と思うだろう。多分、ミドルデータ(筆者の造語。数100万から1000万レコードくらい)になるであろうから、レッドシ フトや分散SQLを投げて、業務時間を効率化したいだろう。筆者のようにクエリや演算結果を数時間も待つわけ にはいかない。ぶっちゃけ、レッドシフトとかBig Queryとかバックグランドはあんまりユーザーに意識させたくな いから、普通のMySQLブラウザから繋がったら完璧。その上で、最近のWindows版ExcelはMySQLとつなげ られるバージョンがあるらしいから、Excelとビッグクエリが繋がれば別にいいのではないだろうか。

そうして、ビッククエリやExcelでデータを加工しても結局使うのはスタンダードな確率統計や多変量解析である。そして、たまに主成分分析をして、データをまるっと円で切って、クラスタリングなどであろう。(これは kmeansで高次元でもできるが、それは別の話)どのアルゴリズムを使ったなどではなく、統計的なインサイト勝 負。あとは何を分析したいか。筆者もWeb系企業でSVD-PCA(Singular Value Deomposition – Principal Component Analysis)やkmeansを用意していたが、結局、相関や移動平均など、もっと初等的な数学的テク ニックで十分だった事がある。それよりも研究開発の素養やデータを見るときの素養が重要。

あれ、結局、SQLの変形と簡単な数学なの?結局、確率統計、多変量解析とSQLがあればなんとかなってしま うのである。ビックデータ、ビックデータと世の中はうるさいが、その実、ビックデータはあまり存在しないし、その 扱いはオーソドックスな方法で構わないのである。