全 文 - terrapub

日本統計学会誌
第 43 巻, 第 1 号, 2013 年 9 月
113 頁 ∼ 121 頁
特 集
ビッグデータのビジネスアナリティクス
五十嵐 健太∗
Business Analytics for Big Data
Kenta Igarashi
ビジネスアナリティクス (BA) とは,データからビジネスに役立つ知見を発見し,意思決定に
役立てるための技術や取り組みを指す.近年,ビッグデータの蓄積と,これを使った分析が盛ん
に行われている.ビッグデータを分析に使用することで,今までには得られなかった新たな知見
が得られるはずであると期待されている.本稿では,ビッグデータを使用して BA を実現するた
めの課題と,対応策を解説する.
Business Analytics (BA) refers to technologies and teqniques for investigation of data to drive
business planning. These days, business persons accelerate an interest on Big Data Analysis,
with support on related softwares to store, handle and operate huge amount of data. They
hope BigData analysis will give us a new perspective.
This paper describes some important elements to realize BA for Big Data.
キーワード: BA,BI,データマイニング,機械学習
はじめに
1.
インターネットのアクセスログ,センサー機器のデータ,Twitter や Facebook などの
SNS のデータなど,様々な分野で従来の分析の想定を超える大規模なデータが発生してい
る.これらの大規模なデータを蓄積,分析する基盤として,Hadoop をはじめとした大規
模分散システムも普及しつつあり,大量のデータが日々蓄えられている.
ただ発生するデータを蓄えるだけではなく,分析に使用できるデータを積極的に収集し
ようとする意識も高まっている.小売店であれば,ポイントカードを作成し購買履歴を個
人の ID と紐づけられるようにしている.この ID を,他店での購買情報やインターネット
での行動履歴と紐づけて,さらに個人の行動を詳しく追跡し,多様なデータを使用して分
析を行えるようにしている.
∗
株式会社 NTT データ数理システム:〒 160-0016 東京都新宿区信濃町 35 番地信濃町煉瓦館 1 階 (E-mail:
[email protected]).
114
日本統計学会誌 第43巻 第1号 2013
このように集められた大量のデータを用いて,個々のユーザーのふるまいの分類,シス
テムの障害の検知・予測など,多様な分析を行い,ビジネスに役立てるための試みが盛んに
行われている.従来は,分析対象データが量的にも質的にも十分に得られないために,粒
度が荒く,精度も低い分析になってしまうことがあったが,大量のデータを活用すること
で,より精度が高く,よりきめの細かい分析を実現することが期待されている.
このような詳細な分析を行うためには,単なる集計で表面的な結果をとらえるのではな
く,確率統計,機械学習の手法を用いてデータマイニングを行い,現象を発生させている
仕組みを探る必要がある.しかし,大規模なデータに対して従来の分析手法をそのまま適
用すると,処理時間が爆発的に増加してしまい,現実的な計算時間では分析が終了しない
ことがある.ハードウェア,ソフトウェア両面から,このような,ビッグデータに対して
適切に分析を行うための方法を検討する必要がある.
以下では,ビッグデータとその分析についての概説を行う.
2.
ビッグデータとは
ビッグデータとは,従来のシステムでは管理,分析が困難になる大規模なデータのこと
である.従来広く使われてきたリレーショナルデータベース管理システムで処理するのが
困難な,ペタバイトを超えるようなデータは典型的なビッグデータと言える.
一方で,それほどの容量に至らない数十ギガバイトのデータでも,Support Vecter Machine
での分類モデルの作成のような複雑な計算を行う場合には,処理にかなりの時間を要し,
実質的に分析ができなくなる場合がある.
分析を行うことが困難になるデータサイズは,分析を行う環境,分析の内容に応じて大
きく異なる.それぞれの問題を適切に判断し,ストレージ,プロセッサなどのハードウェ
ア的な面だけでなく,分析アルゴリズムなどのソフトウェア的な面からも問題に対処して
いくことが重要である.
本稿では,ビッグデータを,ある分析内容に対して,従来の手法では実質的に分析が不
可能になるデータと定義する.ここで,
「実質的に不可能」とは,通常のパソコンではメモ
リが不足してしまい計算できなくなってしまうことや,要求される時間内に計算が終わら
なくなることを指す.
3.
BI と BA
ビジネスデータの分析では,Business Intelligence (BI) と Business Analytics (BA) と
いうキーワードがよく使われる.BI とは,
「何が起こったか」の分析である.例えば,売り
上げが増えたかどうか,どのような商品が売れ行きが良いかといった事柄を調べることで
ある.蓄積されたデータに対して検索,集計などを行い,データから過去,現在に起こっ
ビッグデータのビジネスアナリティクス
115
ている現象を適切に捉え意思決定につなげる.一方 BA とは,
「なぜ起こったのか」の分析
である.例えば,売り上げが増加した原因は何か,なぜこの商品が売れているのかを調べ
る.データマイニングを行って,発生したデータの裏側に潜んでいるルールを発見し,未
来予測などに役立てることである.
BI では蓄積されたデータに対する集計がメインとなるため,計算にかかるコストは小さ
く,ファイルへのアクセスがボトルネックとなる.このため,インメモリデータベースの
ような超高速データベースや,Hadoop のような大規模分散処理システムで,ファイルアク
セスの速度を高めることで大規模なデータに対しても分析が可能となる.一方で,BA で
は,分類モデル,予測モデルの構築などが求められるため,計算にかかるコストが大きく,
モデル作成アルゴリズムの適用部分がボトルネックとなる.大規模データに対応するため
には,前処理の段階でデータを小さくする工夫や,大規模データでも高速に処理が可能な
アルゴリズムの選択が必要となる.
データベースや分散処理基盤といったハードウェア的な面では,ビッグデータへの対応
が進んでおり,BI では非常に大きなデータでも比較的容易に分析が実現できるようになっ
てきた.しかし,BA のような深い分析を行う場合には,以下のような,最近のハードウェ
アではあまり大きいとは言えないデータに対しても,処理が困難な場合がある.
• アンケートデータ
日本全国 1 億人に 100 の質問
1 億 × 100 × 4 バイト = 40 ギガバイト
• 買い物リスト
1 億人が 1 日 1 回,1 度に 10 品,1 年分
1 億 × 10 × 365 × 4 バイト = 1.46 テラバイト
• 品質管理センサーデータ
100 台のセンサーが 1 秒単位で計測,1 年分
100 × 365 × 24 × 60 × 60 × 8 バイト = 25 ギガバイト
• Twitter の書き込み
100 万人が 1 日に 10 Tweets,1 Tweet は 140 文字,1 ヶ月間
100 万 × 10 × 140 × 2 バイト × 30 = 84 ギガバイト
116
日本統計学会誌 第43巻 第1号 2013
ビッグデータに対する BA を実現するためには,ハードウェアだけでなく,分析に使用す
るアルゴリズムやプログラムの実装上の工夫など,ソフトウェア的な部分でのビッグデー
タへの対応が不可欠である.ビッグデータに対応するためのアルゴリズムは,現在盛んに
研究,実践が行われている領域でもある.
4.
ビッグデータの分析技術
ビッグデータに対して BA を実現するために,以下のような手法が使用される.
• サンプリング・データ縮約
モデル作成のフェーズで全データをそのまま分析対象とするのではなく,サンプリン
グの結果や縮約されたデータを対象とすることで,計算時間を抑えることができる.
単純な方法としてはランダムサンプリングがある.統計量の概算を求めるような場
合には,ランダムサンプリングの結果を使用することで大幅に計算コストを軽減する
ことができる.また,モデルの構築を行う場合にも,モデル作成には一部のデータを
使用して,残りのデータを使用してモデルの検証を行うことで,短い計算時間で頑健
なモデルを構築することが可能である.
ただし,ロングテール状のデータの分析や異常値検出のような,出現頻度の低い少数
のデータが重要となる分析を行う場合には,ランダムサンプリングは適さない.分析
上重要となる情報が残されるようなデータの縮約を行う必要がある.このように,分
析に応じて適切にデータを縮約することをデータスカッシング (data squashing) と
呼ぶ.例えば,k-means でクラスタリングを行う場合,ランダムサンプリングの結果
を使用してクラスタリングを行うと,全データを使用した場合とは大きく異なる結果
が得られる場合がある.このような場合,ランダムサンプリングではなく,coreset
(Ackermann (2010)) と呼ばれる専用のサンプルを抽出し,これに対してクラスタリ
ングを行うことで,サンプリングされたデータを対象にしても,十分に精度の良いク
ラスタリングを行うことができる.
• 並列処理・分散処理
近年はマルチコア CPU が一般的に普及し,並列プログラミングが一般的になってい
る.ビッグデータに対する分析にも有効で,理想的には並列実行数に反比例して計算
時間が減少する.ただし一般的に,複雑な機械学習アルゴリズムには,逐次的な処理
や,データ間の相互関係が必要な処理が含まれることが多い.このような処理は並列
化することが難しく,並列化できたとしても計算時間が並列数に反比例するような理
想的な並列化の効果は得られない場合が多い.
ビッグデータのビジネスアナリティクス
117
Hadoop のような,分散処理のシステムもビッグデータに対して効果的である.これ
は,データを複数のマシンに分散して保持し,各データに対して各マシンは独立し
て計算を行い,最後にこれらの結果を統合することで,計算を行うシステムである.
1 台のマシンで処理を行うシステムで,集計のような単純な処理を行う場合には,ス
トレージの読み込み速度がボトルネックとなることが多い.分散処理システムでは,
ファイル自体が分散されており,各ノードが独立に読み込みを行えるため,計算だけ
でなく,データの読み込み速度をノードの数だけ高速化することができ,読み込み速
度のボトルネックを解消することが可能である.当然ながら,並列化で高速にならな
いアルゴリズムで,なおかつ,ファイルの読み込みがボトルネックになっていない場
合には,分散処理で速くなるということはない.
集計,テキスト処理のような,データ間の相互関係が存在せず,計算処理がそれほど
重くない分析に対しては,分散処理は非常に効果を発揮する.
• オンラインアルゴリズム
従来のデータマイニングアルゴリズムの多くは,バッチと呼ばれる,全てのデータを
一度に扱って処理をするようなアルゴリズムである.このようなアルゴリズムでは,
データサイズが増加に従い,メモリ使用量が増大し,ビッグデータに対して分析を行
うことができない.
これに対して,オンラインアルゴリズムと呼ばれる,逐次的に学習を行うアルゴリズ
ムがある (Bottou and LeCun (2004),Hazan (2006),Rakhlin (2009)).オンライン
アルゴリズムは,全データを 1 度に読み込むのではなく,1 レコードずつデータを読
み込み,モデルの更新を繰り返すアルゴリズムである.このため,メモリ使用量は
データサイズに依存せずバッチに比して少ない量で済み,十分に収束した際には計算
を打ち切ることができるため短い計算時間で済むこともある.また,新しいデータが
取得できた場合,差分データだけを使用してモデルの更新を行えば全データの情報を
反映したモデルが作成できるため,無駄なく高速に,最新の状況に適応したモデルが
作成できるというメリットもある.このため,オンラインアルゴリズムはビッグデー
タに対する分析として非常に有効なアルゴリズムである.バッチアルゴリズムとオ
ンラインアルゴリズムの中間的なアルゴリズムとして,データをいくつかのブロッ
ク (データチャンク) に分割し,データチャンク単位で学習を行うミニバッチと呼ば
れるアルゴリズムもある.
機械学習で用いられるオンラインアルゴリズムの 1 つとして,Stochastic Gradient
Descent (SGD) と呼ばれるアルゴリズムがある (Rakhlin et al. (2010)).機械学習の
多くは与えられた損失関数 l(w, z) の確率変数 z についての平均 (期待損失,汎化誤
118
日本統計学会誌 第43巻 第1号 2013
図1
図2
オンラインアルゴリズムのイメージ.
バッチアルゴリズムとオンラインアルゴリズム.
差)L(w) が最小となるようなパラメータ w を求めるという確率的最適化問題に帰着
される.例えば線形回帰ならば二乗誤差,Support Vector Machine はヒンジ関数,
k-means はクラスタ中心からの距離の二乗が損失関数として用いられる.L(w) その
ものの最小化は困難なため,訓練データ z1 , . . . , zn による経験損失 Ln (w) の最小化
問題に置き換える.すると,勾配法やニュートン法といった最適化の手法が適用可能
となる.勾配法では,以下の更新則に従ってパラメータを更新する.
wk+1 = wk − ηk L0n (wk ),
ビッグデータのビジネスアナリティクス
表1
119
ASGD(SGD の改良) によるオンライン SVM と LIBSVM の比較.
アルゴリズム
読込時間+学習時間
正解率
ASGDSVM
3m 33.168s
96.4157%
LIBSVM
9.969s
96.7761%
使用データ: news20.binary
訓練データ 15000 件 (102MB),テストデータ 4996 件
1∑ 0
l (wk , zi ) であるので勾配法はバッチ型のアルゴリズムであるが,SGD
n i=1
ではランダムに選ばれた一つのデータ z による勾配情報のみを用いた,次のような
n
L0n (w) =
更新を行う.
wk+1 = wk − ηk l0 (wk , z).
l0 (wk , z) は平均的には L0n (wk ) と一致するため,勾配法と同様に収束性が期待される.
実際に,損失関数に凸性等の仮定をおけば収束は保証される.Ln (w) の最小化に必
要とするパラメータの更新回数は SGD の方が多いが,勾配法では各反復の計算量が
データ数に依存するのに対し,SGD にはそれがない.このため,より汎化誤差を抑え
るべく大規模データを対象とした場合,SGD の方が高速に求解可能となる (Bottou
and Bousquet (2008)).ここでは勾配法に注目したが,ニュートン法においても同様
な関係が成り立つ.
オンラインアルゴリズムは,逐次的な学習アルゴリズムであるため,ストリーム的に
データを受け取り,リアルタイムにモデル更新を行う,ストリームマイニングと呼
ばれるような学習を行うことも可能である.ストリームマイニングを行う場合には,
モデルが過去の情報に引きずられず,最新のデータの影響力が高くなるような重みづ
けを行い,常に最新の傾向を反映できるような工夫が必要となる.
これらの仕組みを利用して,各種の分析ツールが提供されている.分析ツールには現状
では以下の 3 つの方向性がある.
1 点目は,オンラインアルゴリズムのような高速なアルゴリズムやサンプリング・データ
縮約によって,従来の小規模なデータを扱っていた場合と同様に分析を行うツールである.
基本的には 1 台のパソコンの上にデータを取り込んで処理を行うため,従来と同じように
状況に応じて様々な処理を行うことができる.既存のデータマイニングツールでも,ビッ
グデータへの対応が徐々に進んでいる.分析に使用するデータの絶対的なサイズが大きく
なく,目的に合致する高速なアルゴリズムが搭載されていれば,このようなツールで簡単
にビッグデータの分析を行うことが可能である.
120
日本統計学会誌 第43巻 第1号 2013
2 点目は,データベースの中で分析を行う In-DB Analytics と呼ばれる方法である.デー
タを蓄積する環境と分析を行う環境は分かれている場合が多いが,扱うデータが大きい場
合,分析環境へのデータのコピーに要する時間が長くなってしまう.In-DB Analytics で
は,データ蓄積環境と分析を行う環境を一致させることで,データのコピーを無くし,無
駄なく分析を行うことができる.検索,抽出,結合などの処理に対しては,データベース
の既存の処理ルーチンがあるため,このような計算は非常に高速に行うことができる.こ
れに加えて,予測モデル作成,分類モデル作成などの高度な分析がデータベースの内部で
高速に実現できるよう,各データベースベンダーでシステムの開発が行われている.
3 点目は,大規模分散環境の上で分析を行う方法である.代表例として,Hadoop とその
機械学習ライブラリの Mahout がある.Hadoop はスケールアウトが可能であるため,一
般的なリレーショナルデータベースでは扱うことが難しい超大規模なデータでも,保存と
分散化による高速処理ができる.文書や動画データのような,リレーショナルデータベー
スの構造に適合しにくい非構造化データはデータサイズが大きくなりやすいが,このよう
なデータに対する構造化データへの変換にも分散処理は適している.データ構造を問わず
一次データをすべて蓄積する環境,および,そのデータ加工を行うための環境として使用
されることも多い.
いずれか 1 つの分析ツールで分析を行うのではなく,状況に応じてツールを組み合わせ
ていくことが重要である.例えば,大量に生成されるテキストデータがあった場合,デー
タの蓄積や構造化データへの変換は Hadoop のような分散処理環境が絶大な効果を発揮す
る.Hadoop の処理の結果として構造化されたデータの管理,集計,検索にはリレーショ
ナルデータベースが便利かつ高速である.構造化処理の結果はリレーショナルデータベー
スに格納し,これ以降はできるだけデータを移動させずに,In-DB で分析を行うことで高
速に分析ができる.一方で,Hadoop での構造化処理や,リレーショナルデータベースに
おいて必要なデータの抽出を行った結果,扱うデータが 10 ギガバイト以下のオーダーにな
るときは,In-DB で処理を行うことにこだわる必要はなく,手元の 1 台のパソコンにデー
タを移動して分析を行った方が,プログラミングの容易さや,使用できるツールの豊富さ
のためにより良い分析ができるのではないかと考えられる.データの形式,大きさなどに
応じて適材適所でツールの使い分けを行うことがビッグデータの分析に重要である.
5.
おわりに
BI では,分散処理システムによって,従来は処理が行えなかった大規模なデータに対
応することができるようになった.BA では,分散処理だけで単純に問題が解決しないが,
データマイニングアルゴリズムの研究や,In-DB Analytics のような考え方で,ビッグデー
タに対しても様々な分析が行えるようになりつつある.このようなビッグデータに対して
ビッグデータのビジネスアナリティクス
121
BA を実現するためのアルゴリズムは現在盛んに研究,開発が行われている.今後もます
ます豊富な分析アルゴルズムが扱えるようになり,データの大規模化,処理の高速化が進
んでいくだろう.
今後はこのようなアルゴリズムを積極的に取り入れ,実務に役立てるような分析を実践
していくことが求められる.実務に関する知識を分析モデルに落とし込む作業や,現実の
データと分析モデルの出した結果を照合し,モデルの改良を行うという,データマイニング
の核であり,非常に手間のかかる部分を実行する人材が求められる.このような分析がで
きる,実務と統計解析,データマイニングの両面の知識を持った人材の育成が急務である.
参 考 文 献
Ackermann, M. R., Lammersen, C., Martens, M., Raupach, C., Sohler, C. and Swierkot, K. (2010). StreamKM++:
A Clustering Algorithm for Data Streams, IN ALENEX.
Bottou, L. and Bousquet, O. (2008). The tradeoffs of large scale learning, Adv. Neural Inf. Process. Syst., 20,
161–168.
Bottou, L. and LeCun, Y. (2004). Large scale online learning, Adv. Neural Inf. Process. Syst., 16, 217–224.
Hazan, E. (2006). Efficient Algorithms for Online Convex Optimization and Their Applications.
Rakhlin, A. (2009). Lecture Note on Online Learning.
Rakhlin, A., Shamir, O. and Sridharan, K. (2010). Making Gradient Descent Optimal for Strongly Convex
Stochastic Optimization, In ICML.