450 likes | 692 Views
MAFIA:A Maximal Frequent Itemset Algorithm for Transactional Databases. Doug Burdick, Manuel Calimlim, Johannes Gehrke Department of Computer Science, Cornell University Int. Conf. Data Engineering, pp.443-462, 2001. 牧之内研究室 修士1年 久保正明. 目次. 1. 目的 2.アルゴリズム Simple DFS HUTMFI PEP FHUT
E N D
MAFIA:A Maximal Frequent Itemset Algorithm for Transactional Databases Doug Burdick, Manuel Calimlim, Johannes Gehrke Department of Computer Science, Cornell University Int. Conf. Data Engineering, pp.443-462, 2001 牧之内研究室 修士1年 久保正明
目次 • 1. 目的 • 2.アルゴリズム • Simple DFS • HUTMFI • PEP • FHUT • HUTMFI • Dynamic reordering • 3.データベース表現 • representation • Compression • 4.実験結果 • 5.まとめ
1.目的 • トランザクションデータベースで最大頻出アイテム集合を発掘するには膨大な時間がかかる • 探索時間の短縮 • 手法 • 深さ優先探索による走査・pruning • データベースのビットマップ表現・圧縮
頻出アイテム集合 • 支持度support(X):データベースT中のアイテム集合Xのパーセンテージ。出現回数で表現する場合もある。 • ならばXは頻出アイテム集合。ただしminSupはユーザ定義数値 • 最大頻出アイテム集合:Xが頻出且つsupersetが頻出でない • MFI:最大頻出アイテム集合の集合
2.Algorithm 深さ優先探索を基本とした走査とpruning手法 • Simple DFS • HUTMFI • PEP • FHUT • HUTMFI • Dynamic reordering
相関ルール • トランザクションデータベース、関係データベース、あるいはその他のデータ貯蔵庫に存在するアイテム、対象間の頻出パターン、関連性、相関、あるいは因果関係 • 応用 • 買い物データ分析 • クラスタリング • アクセスログ解析 • 侵入検知 • ルール形:Body→Head[支持度、信頼度]
顧客はおしめを買う ルールの評価: 支持度と信頼度 顧客は両方買う 顧客はビー ルを買う 最小支持度を50%, 最小信頼度を50%とする。 • A C (50%, 66.6%) • C A (50%, 100%)
頻出アイテム集合 支持度 {A} 75% {B} 50% {C} 50% {A,C} 50% 相関ルールの発見 最小支持度 50% 最小信頼度 50% • ルール AC に対して: 支持度 =支持度({A, C}) = 50% 信頼度 = 支持度({A, C})/支持度({A}) = 66.6% MFI={{B},{A,C}}
{} P 2 4 1 3 CUT 3.4 1.4 2.3 2.4 1.2 1.3 1.2.4 2.3.4 1.3.4 head:1 tail:2,3,4 1.2.3 1.2.3.4 アイテムの辞書式整列
カット • カットをどこでするかが発掘の問題 • カットの上は頻出、下は頻出でない • Positive border:カットのひとつ上 • Negative border:カットのひとつ下 • pruning無しのときNegative border以上ですべてを数える必要がある
走査手順 • HUT:head union tail • P:head{1},tail{2,3,4},HUT={1,2,3,4} • Dynamic reordering • まずPの子{1,2},{1,3},{1,4}が数えられる • この中で{1,2}のみ頻出 • Pを親とする3,4を含む子はすべて削除 • Pを親とする子を数えない • {2,3},{2,4},{3,4}を数える • {1,2,3}{1,2,4},{2,3,4}を数える
Simple Depth-First Algorithm • それぞれのノードnでtailの生成、1-extensionとしてカウント • もし ならばApriori原理により走査を止める • これからの1-extensionは頻出でない • 1-extensionが導かれなければ葉ノード • Xが葉ノードであればMFIの候補 • XのsupersetがMFIにあるかをチェック • MFIにあるとき:なにもしない • MFIにないとき:XをMFIに追加
Aprioriの計算原理 • 頻出アイテム集合の任意の部分集合はふたたび頻出アイテム集合である 頻出アイテム集合をSとし、そのある部分集合をTとする。また、Sの要素をs1,s2,…,snとし、Tの要素をsi1,si2,…,sijとする。 その時,S⊇Tなので、 P(S)=P(s1s2…sn)=P(si1si2…sij)P(sk1sk2…skl| si1si2…sij) ≦P(T) となる。そのため、Sの任意の部分集合の方が出現確率が高くなる.
Aprioriの計算原理 • 頻出アイテム集合の任意の部分集合はふたたび頻出アイテム集合である
{} 2 4 1 3 3.4 1.4 2.3 2.4 1.2 1.3 1.2.4 2.3.4 1.3.4 1.2.3 1.2.3.4 Simple Algorithm走査① 頻出アイテム 集合でない 下位集合を 走査しない
{} 2 4 1 3 3.4 1.4 2.3 2.4 1.2 1.3 1.2.4 2.3.4 1.3.4 1.2.3 1.2.3.4 Simple Algorithm走査② ①候補 ③MFIにあるとき:なにもしない MFIにないとき:MFIに追加 ②supersetがMFI にあるかチェック
Algorithmic Description and Pseudocode for Simple Pseudocode: Simple (Current node C, MFI) { For each item i in C.tail { newNode = Ci if newNode is frequent Simple(newNode, MFI) } if (C is a leaf and C.head is not in MFI) Add C.head to MFI }
PEP • Parent Equivalence pruning • ノードnのhead x,tail yとする。もし ならばxを含むトランザクションはすべてyを含む • 頻出アイテム集合zがxを含みyを含まなければ頻出superset が存在することが保証される • 最大頻出アイテム集合を求めるのでxを含みyを含まないアイテム集合は必要ない • ノードnのアイテムyをtailからheadに移動
Algorithmic Description and Pseudocode for PEP Pseudocode: PEP (Current node C, MFI) { For each item i in C.tail { newNode = Ci if (newNode.support == C. support) Move i from C.tail to C.head else if newNode is frequent PEP (newNode, MFI) } if (C is a leaf and C.head is not in MFI) Add C.head to MFI }
FHUT • Frequent Head Union Tail • nのHUTが頻出であることがわかればそれ以上部分集合を走査する必要なし • それぞれのノードの最も左の部分木を走査すればよい • 深さ優先探索では左から走査するので特別なプログラミングが必要ない
{} 2 4 1 3 3.4 1.4 2.3 2.4 1.2 1.3 1.2.4 2.3.4 1.3.4 1.2.3 1.2.3.4 FHUTの走査 頻出であれば上位ノード を調べる必要がない
Algorithmic Description and Pseudocode for FHUT Pseudocode: FHUT (node C, MFI, Boolean IsHUT) { For each item i in C.tail { newNode = CI IsHUT = whether i is the leftmost child in the tail if newNode is frequent FHUT (newNode, MFI, IsHUT) } if (C is a leaf and C.head is not in MFI) Add C.head to MFI if (IsHUT and all extensions are frequent) Stop exploring this subtree and go back up tree to when IsHUT was changed to True }
HUTMFI • アイテムセットxのsupersetが頻出であればxも頻出であることを利用 • あるノードnのHUTのsupersetがMFIにあるかを決定。もしsupersetが存在すればHUTが頻出であることがわかり、このxを含むノードの部分木をpruning
{} 2 4 1 3 3.4 1.4 2.3 2.4 1.2 1.3 1.2.4 2.3.4 1.3.4 1.2.3 1.2.3.4 HUTMFIの走査 ノードx {2.3.4}のsupersetがMFIにあれば ノードxの部分木はすべて削除
Algorithmic Description and Pseudocode for HUTMFI Pseudocode: HUTMFI (Current node C, MFI) { name HUT = C.head C.tail; if HUT is in MFI Stop searching and return For each item i in C.tail { newNode = CI if newNode is frequent HUTMFI(newNode, MFI) } if (C.head is not in MFI) Add C.head to MFI }
動的再構成 • pure depth-first • 削除などの操作なし • 辞書式に走査 • Dynamic reconstruction • ノードのtailで頻出でないextensionが見つかったらそのノードのすべての子ノードのうちそのextensionを含むものはすべて頻出でないのでpruningできる
3.Database Representation 縦:アイテム 横:トランザクション トランザクションにアイテムが含まれていれば1 そうでなければ0
ビットマップ表現の拡張 縦:bitmap(X):トランザクション 横:X:アイテム集合 onecount(X):Xの1の数=支持度
{1,2} {1,2,3} ノード生成 AND head Xとtail YのANDを とることにより を生成
圧縮 • ビットマップ表現の弱点は情報の無駄が多いこと • もしアイテム集合Xを含まなければXとその部分集合を無視できる • トランザクションTにアイテム集合Xがなければ概念的にビットを消去
圧縮のタイミング • アイテム集合Xの支持度がある値、再構築閾値(rebuilding_threshold)を下回ったとき圧縮が実行される • 閾値はトレードオフ • 低くなるにつれ: • ビットマップ表現への投影にコストがかかる • ビットマップのサイズは小さくなり処理は高速化する • 実験的に最適値は0.25~1、ほとんど差はない
環境 • Pentium3 933MHz • 512MB • Windows2000 Professional • Microsoft Visual C++6.0 • 長いパターンを持つデータ • connect-4,mushroom,chess • すべてメモリ上で作業する
実験結果1 pruning手法を組み合わせる ・内容 pruning手法 計測時間 訪問ノード数 再整列あり データ:mushroom 支持度:1%
実験結果2 pruning手法を組み合わせる ・内容 pruning手法 計測時間 訪問ノード数 再整列なし データ:mushroom 支持度:1%
結果に関する考察 ○HMとFHは同じタイプのpruningのため結果も似ている ○PEPが最も効果的 • コストは頻出と頻出でないところのボーダー部分で最もかかる。この部分を削除するため。 • 動的再整列ありと無しでPEPの部分以外は速さが一桁違う。 • PEPと動的再整列では効果が似ているため
DepthProjectとの比較1 data:connect-4,mushroom DPと比較して4~5倍速い Connect-4では膨大なトランザクション(67557)があるので MAFIAの性能(生成、カウント時)が発揮されている
DepthProjectoとの比較1続き • MushroomではPEPが効果を発揮 • 深さ1~4レベルで高い • 検索空間を大幅に小さくすることができる reduction factor= (PEP無し深さkで会うアイテム集合)/(PEP有り深さkで会うアイテム集合)
DepthProjectとの比較2 • data:chess • 2倍程度の性能差 • トランザクション数が少ない(3196) • PEPの効果も少ない(Table1) Chess.data
Scaleup • 支持度を50%固定 • どちらも線形的に増加 • MAFIAが5倍速い • トランザクションの増加に強い • chessだけでなくほかのデータでも同様の結果が見られる
圧縮の効果 • 実験内容 • トランザクション数200000 • 再構成閾値 • 0、1、最適値(実験的) • 40%を境にして低いほうは大きな差がでる • 全圧縮、最適圧縮:違いは最大で11%
全圧縮と最適圧縮 • 実験内容 • 支持値固定 • スケールアップ • トランザクション数が増加(10^6)すると最適値の効果を発揮(約35%)
5.Conclusion • 最大頻出アイテム集合発見アルゴリズムMAFIA • DepthProjectより3~5倍程度性能が高い • PEPと動的再構成が検索空間を減らすのに効果的 • ビットマップの圧縮・投影がアイテム集合のカウントとデータベースのスケールアップに対して大きな効果を発揮した