390 likes | 772 Views
Chapter 5: Mining Frequent Patterns, Association and Correlations. What Is Frequent Pattern Analysis?. Frequent pattern : a pattern (a set of items, subsequences, substructures, etc.) that occurs frequently in a data set
E N D
Chapter 5: Mining Frequent Patterns, Association and Correlations
What Is Frequent Pattern Analysis? • Frequent pattern: a pattern (a set of items, subsequences, substructures, etc.) that occurs frequently in a data set • First proposed by Agrawal, Imielinski, and Swami [AIS93] in the context of frequent itemsets and association rule mining • Motivation: Finding inherent regularities in data • What products were often purchased together?— Beer and diapers?! • What are the subsequent purchases after buying a PC? • What kinds of DNA are sensitive to this new drug? • Can we automatically classify web documents? • Applications • Basket data analysis, cross-marketing, catalog design, sale campaign analysis, Web log (click stream) analysis, and DNA sequence analysis.
Why Is Freq. Pattern Mining Important? • Discloses an intrinsic and important property of data sets • Forms the foundation for many essential data mining tasks • Association, correlation, and causality analysis • Sequential, structural (e.g., sub-graph) patterns • Pattern analysis in spatiotemporal, multimedia, time-series, and stream data • Classification: associative classification • Cluster analysis: frequent pattern-based clustering • Data warehousing: iceberg cube and cube-gradient • Semantic data compression: fascicles • Broad applications
Customer buys both Customer buys diaper Customer buys beer Basic Concepts: Frequent Patterns and Association Rules • Itemset X = {x1, …, xk} • Find all the rules X Ywith minimum support and confidence • support, s, probability that a transaction contains X Y • confidence, c,conditional probability that a transaction having X also contains Y • Let supmin = 50%, confmin = 50% • Freq. Pat.: {A:3, B:3, D:4, E:3, AD:3} • Association rules: • A D (60%, 100%) • D A (60%, 75%)
Association Rule • What is an association rule? • An implication expression of the form X Y, where X and Y are itemsets and XY= • Example: {Milk, Diaper} {Beer}
2. What is association rule mining? • To find all the strong association rules • An association rule r is strong if • Support(r) ≥ min_sup • Confidence(r) ≥ min_conf • Rule Evaluation Metrics • Support (s): Fraction of transactions that contain both X and Y • Confidence (c): Measures how often items in Y appear in transactions that contain X
Example of Support and Confidence To calculate the support and confidence of rule {Milk, Diaper} {Beer} • # of transactions: 5 • # of transactions containing {Milk, Diaper, Beer}: 2 • Support: 2/5=0.4 • # of transactions containing {Milk, Diaper}: 3 • Confidence: 2/3=0.67
Definition: Frequent Itemset • Itemset • A collection of one or more items • Example: {Bread, Milk, Diaper} • k-itemset • An itemset that contains k items • Support count () • # transactions containing an itemset • E.g. ({Bread, Milk, Diaper}) = 2 • Support (s) • Fraction of transactions containing an itemset • E.g. s({Bread, Milk, Diaper}) = 2/5 • Frequent Itemset • An itemset whose support is greater than or equal to a min_sup threshold
Association Rule Mining Task • An association rule r is strong if • Support(r) ≥ min_sup • Confidence(r) ≥ min_conf • Given a transactions database D, the goal of association rule mining is to find all strong rules • Two-step approach: 1. Frequent Itemset Identification • Find all itemsets whose support min_sup 2. Rule Generation • From each frequent itemset, generate all confident rules whose confidence min_conf
Rule Generation Suppose min_sup=0.3, min_conf=0.6, Support({Beer, Diaper, Milk})=0.4 All candidate rules: {Beer} {Diaper, Milk} (s=0.4, c=0.67) {Diaper} {Beer, Milk} (s=0.4, c=0.5) {Milk} {Beer, Diaper} (s=0.4, c=0.5) {Beer, Diaper} {Milk} (s=0.4, c=0.67) {Beer, Milk} {Diaper} (s=0.4, c=0.67) {Diaper, Milk} {Beer} (s=0.4, c=0.67) All non-empty real subsets {Beer} , {Diaper} , {Milk}, {Beer, Diaper}, {Beer, Milk} , {Diaper, Milk} Strong rules: {Beer} {Diaper, Milk} (s=0.4, c=0.67) {Beer, Diaper} {Milk} (s=0.4, c=0.67) {Beer, Milk} {Diaper} (s=0.4, c=0.67) {Diaper, Milk} {Beer} (s=0.4, c=0.67)
Frequent Itemset Indentification: the Itemset Lattice Level 0 Level 1 Level 2 Level 3 Level 4 Given I items, there are 2I-1 candidate itemsets! Level 5
Frequent Itemset Identification: Brute-Force Approach • Brute-force approach: • Set up a counter for each itemset in the lattice • Scan the database once, for each transaction T, • check for each itemset S whether T S • if yes, increase the counter of S by 1 • Output the itemsets with a counter ≥ (min_sup*N) • Complexity ~ O(NMw) Expensive since M = 2I-1 !!!
BRUTE FORCE EXAMPLE List all possible combinations in an array. a 6 cd 3 abce 0 b 6 acd 1 de 3 ab 3 bcd 1 ade 1 • For each record: • Find all combinations. • For each combination index into array and increment support by 1. • Then generate rules c 6 abcd 0 bde 1 ac 3 e 6 abde 0 bc 3 ae 3 cde 1 abc 1 be 3 acde 0 d 6 abe 1 bcde 0 ad 6 ce 3 abcde 0 bd 3 ace 1 abd 1 bce 1
Support threshold = 5% Frequents Sets (F): ab(3) ac(3) bc(3) ad(3) bd(3) cd(3) ae(3) be(3) ce(3) de(3) a 6 cd 3 abce 0 b 6 acd 1 de 3 ab 3 bcd 1 ade 1 c 6 abcd 0 bde 1 Rules: ab conf=3/6=50% ba conf=3/6=50% Etc. ac 3 e 6 abde 0 bc 3 ae 3 cde 1 abc 1 be 3 acde 0 d 6 abe 1 bcde 0 ad 6 ce 3 abcde 0 bd 3 ace 1 abd 1 bce 1
Advantages: • Very efficient for data sets with small numbers of attributes (<20). • Disadvantages: • Given 20 attributes, number of combinations is 220-1 = 1048576. Therefore array storage requirements will be 4.2MB. • Given a data sets with (say) 100 attributes it is likely that many combinations will not be present in the data set --- therefore store only those combinations present in the dataset!
How to Get an Efficient Method? • The complexity of a brute-force method is O(MNw) • M=2I-1, I is the number of items • How to get an efficient method? • Reduce the number of candidate itemsets • Check the supports of candidate itemsets efficiently
Anti-Monotone Property • Any subset of a frequent itemset must be also frequent— an anti-monotone property • Any transaction containing {beer, diaper, milk} also contains {beer, diaper} • {beer, diaper, milk} is frequent {beer, diaper} must also be frequent • In other words, any superset of an infrequent itemset must also be infrequent • No superset of any infrequent itemset should be generated or tested • Many item combinations can be pruned!
Illustrating Apriori Principle Level 0 Level 1 Found to be Infrequent Pruned Supersets
An Example Min. support 50% Min. confidence 50% For rule AC: support = support({AλC}) = 50% confidence = support({AλC})/support({A}) = 66.6% The Apriori principle: Any subset of a frequent itemset must be frequent
Mining Frequent Itemsets: the Key Step • Find the frequent itemsets: the sets of items that have minimum support • A subset of a frequent itemset must also be a frequent itemset • i.e., if {AB} isa frequent itemset, both {A} and {B} should be frequent itemsets • Iteratively find frequent itemsets with cardinality from 1 to k (k-itemset) • Use the frequent itemsets to generate association rules.
Apriori: A Candidate Generation-and-Test Approach • Apriori pruning principle: If there is any itemset which is infrequent, its superset should not be generated/tested! (Agrawal & Srikant @VLDB’94, Mannila, et al. @ KDD’ 94) • Method: • Initially, scan DB once to get frequent 1-itemset • Generate length (k+1) candidate itemsets from length k frequent itemsets • Test the candidates against DB • Terminate when no frequent or candidate set can be generated
Intro of Apriori Algorithm • Basic idea of Apriori • Using anti-monotone property to reduce candidate itemsets • Any subset of a frequent itemset must be also frequent • In other words, any superset of an infrequent itemset must also be infrequent • Basic operations of Apriori • Candidate generation • Candidate counting • How to generate the candidate itemsets? • Self-joining • Pruning infrequent candidates
L1 C1 Scan D C2 C2 L2 Scan D L3 C3 Scan D The Apriori Algorithm — Example Database D
Data base D 1-candidates Freq 1-itemsets 2-candidates TID Items Itemset Sup Itemset Sup Itemset 10 a, c, d a 2 a 2 ab Scan D 20 b, c, e b 3 b 3 ac 30 a, b, c, e c 3 c 3 ae 40 b, e d 1 e 3 bc Min_sup=0.5 e 3 be ce Counting 3-candidates Freq 2-itemsets Scan D Itemset Sup Itemset Itemset Sup ab 1 bce ac 2 Scan D ac 2 bc 2 Freq 3-itemsets ae 1 be 3 bc 2 ce 2 Itemset Sup be 3 bce 2 ce 2 Apriori-based Mining
The Apriori Algorithm • Ck: Candidate itemset of size k • Lk : frequent itemset of size k • L1 = {frequent items}; • for (k = 1; Lk !=; k++) do • Candidate Generation: Ck+1 = candidates generated from Lk; • Candidate Counting: for each transaction t in database do increment the count of all candidates in Ck+1 that are contained in t • Lk+1 = candidates in Ck+1 with min_sup • return k Lk;
n/a abcd n/a n/a n/a Candidate-generation: Self-joining • Given Lk, how to generate Ck+1? Step 1: self-joining Lk INSERT INTO Ck+1 SELECT p.item1, p.item2, …, p.itemk, q.itemk FROM Lkp, Lkq WHERE p.item1=q.item1, …, p.itemk-1=q.itemk-1, p.itemk < q.itemk • Example L3={abc, abd, acd, ace, bcd} Self-joining: L3*L3 • abcdabc * abd • acdeacd * ace C4={abcd, acde} abc abc abd abd acd acd ace ace bcd bcd
Candidate Generation: Pruning • Can we further reduce the candidates in Ck+1? For each itemset c in Ck+1 do For each k-subsets s of c do If (s is not in Lk) Then delete c from Ck+1 End For End For • Example L3={abc, abd, acd, ace, bcd}, C4={abcd, acde} acde cannot be frequent since ade (and also cde) is not in L3, so acde can be pruned from C4.
How to Count Supports of Candidates? • Why counting supports of candidates a problem? • The total number of candidates can be very huge • One transaction may contain many candidates • Method • Candidate itemsets are stored in a hash-tree • Leaf node of hash-tree contains a list of itemsets and counts • Interior node contains a hash table • Subset function: finds all the candidates contained in a transaction
Challenges of Apriori Algorithm • Challenges • Multiple scans of transaction database • Huge number of candidates • Tedious workload of support counting for candidates • Improving Apriori: the general ideas • Reduce the number of transaction database scans • Shrink the number of candidates • Facilitate support counting of candidates • Improving Apriori: the general ideas • Reduce the number of transaction database scans • DIC: Start count k-itemset as early as possible • S. Brin R. Motwani, J. Ullman, and S. Tsur, SIGMOD’97. • Shrink the number of candidates • DHP: A k-itemset whose corresponding hashing bucket count is below the threshold cannot be frequent • J. Park, M. Chen, and P. Yu, SIGMOD’95 • Facilitate support counting of candidates
Performance Bottlenecks • The core of the Apriori algorithm: • Use frequent (k – 1)-itemsets to generate candidate frequent k-itemsets • Use database scan and pattern matching to collect counts for the candidate itemsets • The bottleneck of Apriori: candidate generation • Huge candidate sets: • 104 frequent 1-itemset will generate 107 candidate 2-itemsets • To discover a frequent pattern of size 100, e.g., {a1, a2, …, a100}, one needs to generate 2100 1030 candidates. • Multiple scans of database: • Needs (n +1 ) scans, n is the length of the longest pattern