学びや思いつきを記録する、超要約ノート

国内MBA2013年入学、2015年無事卒業!読んだ本、記事、などの読書ノート。 忘れないために超要約整理。そんな記録。

データマイニングの基礎からWebへの応用までをイントロダクションしてくれる。 石川博・新美札彦・白石陽・横山昌平/データマイニングと集合知

データ分析ブームが来ている中、
データ大事だよ、こんな事例あるよ、すごいでしょ、
ビッグデータ万歳みたいな本が溢れている。

そういった本もそれはそれで結構なのだけど、何冊も読む必要はない。
そういうので興味を持った後、
もう少し具体的かつ実践的にデータマイニングって何なのか?
どういったロジックで動いているのかを知りたい人にぴったりの1冊がこれ。
というか今の自分にぴったりだった。
属性選択や次元圧縮、アンサンブル学習といった考え方を知ることで、
分析手法が随分と広がった印象。主成分分析の意義も理解できた。


データマイニングと集合知 ―基礎からWeb,ソーシャルメディアまで― (未来へつなぐ デジタルシリーズ 11)

データマイニングと集合知 ―基礎からWeb,ソーシャルメディアまで― (未来へつなぐ デジタルシリーズ 11)


データマイニングのタスクは4つ!

データマイニングのタスクは下記の4つに集約される。

相関関係のマイニング

大量データから頻出パターンを発見し、
その相関ルール(アソシエーションルール)を発見する試み。
そのルールを発見するための代表的な手法がアプリオリ(Apriori)というロジック。
アソシエーション分析は、スーパーマーケットなどの小売業で、
何と何が一緒に買われるかというルールを分析するバスケット分析などが有名。
またそこからの商品レコメンデーションや、Webページの閲覧履歴を対象にした、
ページ遷移の頻出パターンの発見など応用できる領域は広い。


バスケット分析の応用例

よく買われる商品の組み合わせは、

  • 近いところに配置して一緒に買わせる。
  • 最初からセット販売してしまう。
  • お互い離れた場所におき、回遊させる
  • 片方を値引きして買いやすくし、残りの商品の利益率を上げてトータルの利益を向上させる。

と、応用方法も工夫次第で色々ある。


相関分析におけるサポートと確信度

支持度(サポート)は全データの中で、AまたはBをともに含むデータの割合。
(この「または」は数学的な「または」のこと、よく勘違いしてここの部分をAかつBって書いてる解説がネットだと多い)
確信度(信頼度、コンフィデンス)はAを含むデータの中でBを含むデータの割合。
確率Pを用いると、
サポート=P(A U B)
確信度=P(B|A)(Aが起きたと言う前提条件付きで、Bが起きる確率)

つまり、サポートが低いということは、たとえ確信度が高くてもめったに起こらない組み合わせだってこと。なので、最小サポートを設定することで足きりできるのだが、
分析対象データのパターンが多くなればなるほどすべてのサポートは低くなっていくことにも注意。
細かいルールを拾いたいときはサポートの値が低いものも拾わないといけない。

確信度は条件Aが生じたときにBが起きる確率。この値が大きいほど、強いルールだと言える。
例えばAを買う人の8割がBを買うのであれば、まずはAを買わせる施策を考えることで、
Bの売上を伸ばせる、ということになる。


ついでにリフト値も大切。
確信度が高くても、B自体のサポートも高かったらどうなるか?
Aを買った人がBを買う確率は80%
でも、そもそも全顧客の中でBを買った人(Bのサポート)は80%だったら?
結局Aを購入することは、Bの購入に何の影響も与えていない。
B単体で買うよりもAを買ったという条件付でBを買う確率のほうが何倍高くなるか
(あるいは低くなるか)を示すのがリフト値!

1以上であれば有効なルールだし、1を下回るとマイナスのルールだということ。


相関ルールの種類

ブーリアン
買う/買わないの2値で表現でできる相関ルールのこと。
Aを買うならばBも買う

数値型
数値的に表現される属性間の相関関係。
数値型の属性は区間に分割して考えることが多い。
25歳~30歳 ならば Bを買う


クラスタリング

あるデータをデータの類似性によって各クラスタにグループ化すること。
購買履歴の類似性によって顧客をグループ化し、
同じグループ内でよく購買される商品を同グループ内でまだ買ってない人へオススメする
といった応用に使える。
クラスタリングと分類は似ているが、
分類はデータの属するカテゴリが既知の場合、クラスタリングは未知の場合という違いがある。

K-means

K個のクラスタに分類してくれる手法なのだが、要注意だと思った。
本書によるとK-meansは、以下の注意点がある。

  • 重心の初期値の配置に依存する。
  • 得られるクラスタは局所的最適解
  • 何個のクラスタに分けるのが最適化はわからん
  • 外れ値に敏感
  • 数値属性しか使えない
  • 結果のクラスタはバランスされる保証はない

分類

分類は複数のカテゴリが存在するとき、データを振るい分ける技術。
クラスタリングと混同されがちだが、分類では、カテゴリがあらかじめわかっていることが前提。
クラスタリングは類似しているデータをひとまとめにして、複数のグループを作成するが、
そのグループがあらかじめわかっていない点が分類と大きく異なる。
分類を行うためには、データがどのカテゴリに属するか判断するためのモデルが必要であり、
学習と分類の2つのステップが必要になる。

「学習」の課題

  • 計算量の壁

データが多い=計算量が多い=処理に時間がかかりすぎる、という問題が出てくる。
データをサンプリングして処理するなどのアプローチが可能。

  • モデル複雑さの壁

説明変数が多いほど、モデルを良く説明できると言われるが、
変数の次元が増えると、その分必要なデータ量が増大してしまい、データが足りなくなることがある。

  • 次元の呪い

次元数の増加により、空間のデータ密度がスカスカになってしまう。
サンプル数の不足、データ間の距離が離れすぎる、などの問題。

ゆえに、属性選択や次元圧縮と言った手法が必要になってくる。
この辺の問題は先日読んだハーバード・ビジネス・レビューにも書いてあった。


属性選択

属性が増えると探索効率が低下する。
また、必ずしもすべての属性が重要であるとは限らない。
多くの属性を使うと過学習に陥りやすいと言う問題もある。
1つずつ増やしていって精度が向上しなくなった時点でやめる、という方法と
最初にすべて突っ込んでから1つずつ減らしていくというアプローチもある。
ディシジョンツリーを作って、影響度合いが高いパラメータだけを採用すると言うアプローチもあり。

次元圧縮

主成分分析により、元の次元数よりも少ない次元数の主成分に集約させるやりかたや、
χ二乗値が高い=独立性の高い指標に絞り込んでいく素性選択法などがある。


アンサンブル学習で精度を上げる!

1つの分類器(モデル)だけでは、精度を上げるのが困難な場合が多い。
なので、複数のモデルをそれぞれ作成し、精度を上げようというのがアンサンブル学習の考え方。
アンサンブル学習の方法論は下記5つ

  1. バギング
  2. ブースティング
  3. 確率的属性選択
  4. スタッキング
  5. カスケード

大きく2つにわけると、学習に用いるデータを分割して学習を行うのが
バギング、ブースティング、確率的属性選択で、
モデルを多段に組み合わせる手法が、スタッキングとカスケード。

  • バギング

元データから復元抽出(取り出した要素を元に戻して、抽出)をし、
トレーニング用のデータを作成し、繰り返し学習を行う手法。

  • ブースティング

モデルが分類したデータのうち、間違えたデータの重みを増しながら、
トレーニングデータのサンプリングを行って繰り返し学習を行う手法。

  • 確率的属性選択

属性の部分集合を選択する方法。どの入力属性を使用するかをランダムに変化させることにより、
様々なトレーニングデータを作成し、学習させる手法。

  • スタッキング

複数のモデルで予測した結果を属性とするデータを作成し、
これらを別のアルゴリズムで分類する方法

  • カスケード

一度学習して得られたモデルを使って予測した結果に
元データの属性を加えて、新たなトレーニングデータセットとして、
次のモデルに与える手法。


データマイニングと集合知 ―基礎からWeb,ソーシャルメディアまで― (未来へつなぐ デジタルシリーズ 11)

データマイニングと集合知 ―基礎からWeb,ソーシャルメディアまで― (未来へつなぐ デジタルシリーズ 11)