相関ルール (Association Rule)• パソコンを買った人は,ウイルス駆除ソフトを買う
• どのPCにもウイルス駆除ソフトは入れないとね• ゲーム機を買った人は,HDDプレーヤーを買う
• 機械に対する興味が高い人,でしょうか• 30代で年収500万以上の人は,大型テレビを買う
• 生活に多少余裕がある?• 条件部が「30代」と「年収500万以上」の2つが複合していることに注意
• 遺伝子ALDHに変異のある人は,お酒に弱い
• 相関ルール:A ならば B の形で表されるルール.Aは何かの複合条件(A=C∧Dなど)で表される場合もある.
2
マーケットバスケット分析• Market Basket Analysis
• Frequent Pattern Mining とも呼ばれる• 何を同時に買うか?
牛乳 パンコーンフレーク
客1
牛乳 パン
砂糖客2
卵
牛乳パン
客3
バター砂糖 卵
客43
サポートと確信度• 相関ルールの表し方例
• パソコン⇒ウイルス駆除ソフト [サポート=2%, 確信度=60%]
• A⇒B
• A: 前提部(antecedent), B: 結論部(consequent)
• サポート(support)• 全トランザクション中で,AもBも満たすトランザクションの割合
• 全購入者中「パソコン」と「ウイルス駆除ソフト」を同時に購入している人の割合
• 確信度(confidence)• Aを満たすトランザクションの内,Bを満たすトランザクションの割合
• 「パソコン」を購入している人の内「ウイルス駆除ソフト」を買う人の割合
4
定義(1/2)• アイテム(商品)の集合:
• データベースDはトランザクションTの集合.
• 各トランザクションTはアイテムの集合:
• トランザクションTがAを含むとは, が成立すること.逆も真.
• アイテムの集合はitemsetと呼ばれる.
• あるitemsetがk個のアイテムを含む時,k-itemsetと呼ばれる
I = {I1, I2, ..., Im}
T ⊆ I
A ⊆ T
TID itemのリストT100 I1, I2, I5T200 I2, I4T300 I2, I4T400 I1, I2, I4T500 I1, I3T600 I2, I3T700 I1, I3T800 I1, I2, I3, I5T900 I1, I2, I3
I = {I1, I2, I3, I4, I5}T100 : {I1, I2, I5}
5
定義(2/2)• 相関ルール は,次の条件を満たす:
• のサポートと確信度は次のように表せる.support(A⇒ B) = P (A ∪B)
confidence(A⇒ B) = P (B | A)
confidence(A⇒ B) = P (B | A) =support(A ∪B)
support(A)=
support count(A ∪B)support count(A)
A⇒ BA ⊂ I, B ⊂ I, A ∩B = φ
A⇒ B
• 確信度は次のように,サポートで計算できる
A = {I1} B = {I2} A ∪B = {I1, I2}, ,
P (A ∪B) = 4/9 P (B | A) = 4/6
TID itemのリストT100 I1, I2, I5T200 I2, I4T300 I2, I4T400 I1, I2, I4T500 I1, I3T600 I2, I3T700 I1, I3T800 I1, I2, I3, I5T900 I1, I2, I3
6
興味深い相関ルール• サポートと確信度が高いルール• サポートの高い A ∪ B が見つかれば,そのサポートからA⇒B,
B⇒Aの確信度はすぐに計算可能.そして,良い相関ルールかどうかを判断できる• つまり,確信度ではなく,サポートの計算だけを考える
• あるサポート(min_sup)以上を持つ相関ルールを全て見つけよう• min_sup回以上現れるitemsetを見つける
• 何通りのitemsetがある?1. itemの数が100個なら,単純に考えて2^100-1通り2. もし,9-itemset {a1, a2, .., a9}が min_sup 以上現れるなら,{a1}
や{a2}や{a1,a2}や{a1, a9}や{a1, a2, a3} ... もmin_sup 以上現れる• 膨大な数のitemsetが現れないだろうか?列挙が大変.
7
データへのアクセスの時間• 必ずしも、計算量の議論では反映されない• データはディスクから取り出してメモリの上に配置して計算を始める
• 大きなデータ、あるいは広い探索空間を扱うと、扱うデータや計算結果がメモリの上に乗らなくなる
• メインメモリアクセスのスピード>>ハードディスクアクセスのスピード
• メインメモリの容量<<ハードディスクの容量• メモリも安くなっているが、ハードディスクは劇的に安くなっている
• メインメモリは高速にランダムアクセスが可能• ハードディスクはランダムアクセスが苦手
• 円盤の上にデータが書かれている• シークエンシャル(連続した)アクセスは得意
• できるだけ、ディスクにアクセスすることなく、メモリ上のデータで計算をしたい 8
Apriori: Overview-1• 効率良くmin_sup 以上のitemsetを探索する方法
• Agrawal & Srikant 1994 • データはデータベースに入り,数億トランザクションある状況を考える(メモリにはトランザクションが乗らない状況)
• 例として min_sup = 2の場合を考える.TID itemのリストT100 I1, I2, I5T200 I2, I4T300 I2, I4T400 I1, I2, I4T500 I1, I3T600 I2, I3T700 I1, I3T800 I1, I2, I3, I5T900 I1, I2, I3
1. データベースD全体を一度スキャンし,1-itemset の数を数える
Itemset Sup. count{I1} 6{I2} 7{I3} 6{I4} 2{I5} 2
C1
9
Apriori: Overview-22. min_supより小さいItemsetを削る3. 残ったk-itemsetから,(k+1)-itemsetを作成する
Itemset Sup. count
{I1} 6{I2} 7{I3} 6{I4} 2{I5} 2
L1
Itemset Sup. count
{I1} 6{I2} 7{I3} 6{I4} 2{I5} 2
Itemset
{I1,I2}{I1,I3}{I1, I4}{I1, I5}{I2, I3}{I2, I4}{I2, I5}{I3, I4}{I3, I5}{I4, I5}
C1C2
10
Apriori: Overview-34. データベースをスキャンして,各Itemsetの現れる数を数える
• DBのスキャンでは、HDDにアクセスする必要あり• スキャンはシークエンシャルなアクセスで済むようにする
5. min_supより小さいものを削る.残りのitemsetが空集合なら終了
Itemset
{I1,I2}{I1,I3}{I1, I4}{I1, I5}{I2, I3}{I2, I4}{I2, I5}{I3, I4}{I3, I5}{I4, I5}
Itemset Sup. Count
{I1,I2} 4{I1,I3} 4{I1, I4} 1{I1, I5} 2{I2, I3} 4{I2, I4} 2{I2, I5} 2{I3, I4} 0{I3, I5} 1{I4, I5} 0
C2 L2
Itemset Sup. Count
{I1,I2} 4{I1,I3} 4{I1, I5} 2{I2, I3} 4{I2, I4} 2{I2, I5} 2
11
Apriori: Overview-4• L1, L2, L3 が全て min_sup 以上のitemset
• L1からC2, L2からC3, L3からC4 は簡単に求まるのだろうか?
L2
Itemset Sup. Count
{I1,I2} 4{I1,I3} 4{I1, I5} 2{I2, I3} 4{I2, I4} 2{I2, I5} 2
Itemset
{I1,I2, I3}{I1,I2, I5}
Itemset Sup. Count
{I1,I2, I3} 2{I1,I2, I5} 2
C3 L3
C4
Itemset
12
Apriori
• 赤の×は,DBをスキャンした後,min_supを越えていないので削除されたitemset
• 緑の×は,k-itemsetをスキャンして該当するitemset
が無いので削られたitemset
{I1} {I2} {I3} {I4} {I5}
{I1, I2} {I1,I3} {I1, I4} {I2, I3} {I2,I5}{I2, I4} {I3,I4}{I1, I5} {I3,I5}
6 7 6 2 2
4 4 1 2 4 2{I4,I5}
2 0 1 0
{I1, I2, I3} {I1, I2, I5} {I1, I3, I5} {I2, I3, I4} {I2, I3, I5}2 2
{I1, I2, I3, I5}
{}
13
Apriori: Pruning Phase• k-itemsetから(k+1)-itemsetを作成する方法は複数通り存在するが,
itemsetの前側 k-1 itemが一致する2つから(k+1)-itemsetを作成する• {I1, I2}, {I1,I3}は I1が一致するので{I1, I2, I3}• {I1, I2, I3}, {I1, I2, I5}はI1,I2が一致するので {I1, I2, I3, I5}
• 作成した(k+1)-itemsetのサブセットとなる全てのk-itemset({I1, I2, I3}なら,{I1, I2}, {I1, I3}, {I2, I3})がk-itemsetの集合に存在するかを調べる.• 存在しないものがあれば,枝刈りができる• {I1, I3, I5}なら,{I3, I5}が刈られているので,{I1, I3, I5}もmin_sup以上になることはない
{I1, I2} {I1,I3} {I1, I4} {I2, I3} {I2,I5}{I2, I4} {I3,I4}{I1, I5} {I3,I5} {I4,I5}
{I1, I2, I3} {I1, I2, I5} {I1, I3, I5} {I2, I3, I4} {I2, I3, I5}
4 4 1 2 4 2 2 0 1 014
DIC • 1-itemsetをスキャンしている途中でも,2-itemsetのスキャンを始める• 例えば{I2}と{I4}がmin_supを越えたら
{12,14}の探索も始める. {12,I4}もmin_supを越える候補のため
• 全体として,DBをスキャンする回数を減らす
TID itemのリストT100 I1, I2, I5T200 I2, I4T300 I2, I4T400 I1, I2, I4T500 I1, I3T600 I2, I3T700 I1, I3T800 I1, I2, I3, I5T900 I1, I2, I3
Apriori DIC
1-itemset
2-itemset
3-itemset
1-itemset
2-itemset
3-itemset
S. Brin, R. Motowani, J. Ullman, and S. Tsur. 1997
15
その他の相関ルール• 高速に解く
• Hashを利用する• (k+1)-itemset作成時のk-itemsetのスキャンを早く行う
• 並列化する• 複数のPCに分割して解く
• Heapの様な構造を利用して,itemsetの候補作成を避ける• FP-tree (J.Han, J. Pei and Y. Yin. 2000)
• サポート,確信度の指標で良いのか?• 指標が単純なので,相関の無い属性も取られることがある
• 統計的な指標の利用
• S.Brin, R. Motwani and C. Silverstein. 1997• S. Morishita and J. Sese. 2000
16