Note to other teachers and users of these slides: We would be delighted if you found this ourmaterial useful in giving your own lectures. Feel free to use these slides verbatim, or to modify
them to fit your own needs. If you make use of a significant portion of these slides in your own
lecture, please include this message, or a link to our web site: http://www.mmds.org

Mining of Massive Datasets
Jure Leskovec, Anand Rajaraman, Jeff Ullman
Stanford University

http://www.mmds.org

Supermarket shelf management – Market-basket
model:
 Goal: Identify items that are bought together by
sufficiently many customers
 Approach: Process the sales data collected withbarcode scanners to find dependencies amongitems
 A classic rule: If someone buys diaper and milk, then he/she islikely to buy beer Don’t be surprised if you find six-packs next to diapers!
J. Leskovec, A. Rajaraman, J. Ullman: Mining of Massive Datasets, http://www.mmds.org

2 A large set of items

Input:TID

Items

 e.g., things sold in asupermarket

1
2

Bread, Coke, Milk
Beer, Bread A large set of baskets
 Each basket is a3
4
5

Beer, Coke, Diaper, Milk
Beer, Bread, Diaper, Milk
Coke, Diaper, Milk

small subset of items
 e.g., the things one
customer buys on one day Want to discover

Output:Rules Discovered:{Milk} --> {Coke}{Diaper, Milk} --> {Beer}association rules
 People who bought {x,y,z} tend to buy {v,w} Amazon!
J. Leskovec, A. Rajaraman, J. Ullman: Mining of Massive Datasets, http://www.mmds.org

3 Items = products; Baskets = sets of products

someone bought in one trip to the store Real market baskets: Chain stores keep TBs ofdata about what customers buy together
 Tells how typical customers navigate stores, lets
them position tempting items
 Suggests tie-in “tricks”, e.g., run sale on diapers
and raise the price of beer
 Need the rule to occur frequently, or no $$’s
 Amazon’s people who bought X also bought Y
J. Leskovec, A. Rajaraman, J. Ullman: Mining of Massive Datasets, http://www.mmds.org

4 Baskets = sentences; Items = documents

containing those sentences Items that appear together too often could
represent plagiarism
 Notice items do not have to be “in” baskets
 Baskets = patients; Items = drugs & side-effects

 Has been used to detect combinationsof drugs that result in particular side-effects
 But requires extension: Absence of an item
needs to be observed as well as presence
J. Leskovec, A. Rajaraman, J. Ullman: Mining of Massive Datasets, http://www.mmds.org

5 A general many-to-many mapping(association) between two kinds of things But we ask about connections among “items”,
not “baskets”
 For example:

 Finding communities in graphs (e.g., Twitter)

J. Leskovec, A. Rajaraman, J. Ullman: Mining of Massive Datasets, http://www.mmds.org

6 Finding communities in graphs (e.g., Twitter) Baskets = nodes; Items = outgoing neighbors

 Searching for complete bipartite subgraphs Ks,t of a
big graph…

s nodes…

t nodes How?

A dense 2-layer graph View each node i as abasket Bi of nodes i it points to Ks,t = a set Y of size t that
occurs in s buckets Bi
 Looking for Ks,t  set of
support s and look at layer t –all frequent sets of size t

J. Leskovec, A. Rajaraman, J. Ullman: Mining of Massive Datasets, http://www.mmds.org

7

First: Define
Frequent itemsets
Association rules:
Confidence, Support, Interestingness

Then: Algorithms for finding frequent itemsets
Finding frequent pairs
A-Priori algorithm
PCY algorithm + 2 refinements
J. Leskovec, A. Rajaraman, J. Ullman: Mining of Massive Datasets, http://www.mmds.org

8 Simplest question: Find sets of items thatappear together “frequently” in baskets
 Support for itemset I: Number of baskets
containing all items in I
 (Often expressed as a fractionof the total number of baskets) Given a support threshold s,

TID

Items

1
2
3
4
5

Bread, Coke, Milk
Beer, BreadBeer, Coke, Diaper, Milk
Beer, Bread, Diaper, Milk
Coke, Diaper, Milkthen sets of items that appearin at least s baskets are calledfrequent itemsets
J. Leskovec, A. Rajaraman, J. Ullman: Mining of Massive Datasets, http://www.mmds.org

Support of{Beer, Bread} = 2

9 Items = {milk, coke, pepsi, beer, juice} Support threshold = 3 baskets

B1 = {m, c, b}
B3 = {m, b}
B5 = {m, p, b}
B7 = {c, b, j}

B2 = {m, p, j}
B4 = {c, j}
B6 = {m, c, b, j}
B8 = {b, c}

 Frequent itemsets: {m}, {c}, {b}, {j},{m,b} , {b,c} , {c,j}.
J. Leskovec, A. Rajaraman, J. Ullman: Mining of Massive Datasets, http://www.mmds.org

10 Association Rules:

If-then rules about the contents of baskets
 {i1, i2,…,ik} → j means: “if a basket contains
all of i1,…,ik then it is likely to contain j”
 In practice there are many rules, want to findsignificant/interesting ones!
 Confidence of this association rule is theprobability of j given I = {i1,…,ik}
support( I ∪ j )conf( I → j ) =support( I )J. Leskovec, A. Rajaraman, J. Ullman: Mining of Massive Datasets, http://www.mmds.org

11 Not all high-confidence rules are interesting The rule X → milk may have high confidence formany itemsets X, because milk is just purchased very
often (independent of X) and the confidence will behigh Interest of an association rule I → j:difference between its confidence and thefraction of baskets that contain j

Interest(I → j ) = conf( I → j ) − Pr[ j ] Interesting rules are those with high positive or
negative interest values (usually above 0.5)
J. Leskovec, A. Rajaraman, J. Ullman: Mining of Massive Datasets, http://www.mmds.org

12

B1 = {m, c, b}
B3 = {m, b}
B5 = {m, p, b}
B7 = {c, b, j}

B2 = {m, p, j}
B4= {c, j}
B6 = {m, c, b, j}
B8 = {b, c}

 Association rule: {m, b} →c

 Confidence = 2/4 = 0.5
 Interest = |0.5 – 5/8| = 1/8
 Item c appears in 5/8 of the baskets
 Rule is not very interesting!
J. Leskovec, A. Rajaraman, J. Ullman: Mining of Massive Datasets, http://www.mmds.org

13 Problem: Find all association rules withsupport ≥s and confidence ≥c Note: Support of an association rule is the supportof the set of items on the left side Hard part: Finding the frequent itemsets!

 If {i1, i2,…, ik} → j has high support andconfidence, then both {i1, i2,…, ik} and{i1, i2,…,ik, j} will be “frequent”
support( I ∪ j )conf( I → j ) =support( I )J. Leskovec, A. Rajaraman, J. Ullman: Mining of Massive Datasets, http://www.mmds.org

14 Step 1: Find all frequent itemsets I (we will explain this next)
 Step 2: Rule generation

 For every subset A of I, generate a rule A → I \ A Since I is frequent, A is also frequent Variant 1: Single pass to compute the rule confidence
 confidence(A,B→C,D) = support(A,B,C,D) / support(A,B)

 Variant 2:
 Observation: If A,B,C→D is below confidence, so is A,B→C,D
 Can generate “bigger” rules from smaller ones!

 Output the rules above the confidence threshold
J. Leskovec, A. Rajaraman, J. Ullman: Mining of Massive Datasets, http://www.mmds.org

15

B1 = {m, c, b}
B3 = {m, c, b, n}
B5 = {m, p, b}
B7 = {c, b, j}

B2 = {m, p, j}
B4= {c, j}
B6 = {m, c, b, j}
B8 = {b, c}

 Support threshold s = 3, confidence c = 0.75
 1) Frequent itemsets: {b,m} {b,c} {c,m} {c,j} {m,c,b}
 2) Generate rules:

 b→m: c=4/6
 m→b: c=4/5
b→c: c=5/6…

b,c→m: c=3/5
b,m→c: c=3/4
b→c,m: c=3/6

J. Leskovec, A. Rajaraman, J. Ullman: Mining of Massive Datasets, http://www.mmds.org

16 To reduce the number of rules we canpost-process them and only output:
 Maximal frequent itemsets:
No immediate superset is frequent Gives more pruningor Closed itemsets:
No immediate superset has the same count (> 0) Stores not only frequent information, but exact counts

J. Leskovec, A. Rajaraman, J. Ullman: Mining of Massive Datasets, http://www.mmds.org

17Frequent, but
superset BC
also frequent.

Support Maximal(s=3) Closed
A 4
No
No
Frequent, andits only superset,
B 5
No
Yes
ABC, not freq.
C 3
No
No
Superset BC
has same count.
AB 4
Yes
Yes
Its only superAC 2No
No
set, ABC, has
BC 3
Yes
Yes
smaller count.
ABC 2
No
Yes

J. Leskovec, A. Rajaraman, J. Ullman: Mining of Massive Datasets, http://www.mmds.org

18 Back to finding frequent itemsets
 Typically, data is kept in flat files

rather than in a database system: Stored on disk
 Stored basket-by-basket
 Baskets are small but we have
many baskets and many items
 Expand baskets into pairs, triples, etc.
as you read baskets
 Use k nested loops to generate allsets of size k

Item
Item
Item
Item
Item
Item
Item
Item
Item
Item
Item
Item

Etc.

Items are positive integers,
and boundaries between
Note: We want to find frequent itemsets. To find them, webaskets are –1.
have to count them. To count them, we have to generate them.
J. Leskovec, A. Rajaraman, J. Ullman: Mining of Massive Datasets, http://www.mmds.org

20 The true cost of mining disk-resident data is

usually the number of disk I/Os
 In practice, association-rule algorithms readthe data in passes – all baskets read in turn
 We measure the cost by the number ofpasses an algorithm makes over the data

J. Leskovec, A. Rajaraman, J. Ullman: Mining of Massive Datasets, http://www.mmds.org

21 For many frequent-itemset algorithms,

main-memory is the critical resource As we read baskets, we need to countsomething, e.g., occurrences of pairs of items
 The number of different things we can countis limited by main memory Swapping counts in/out is a disaster (why?)

J. Leskovec, A. Rajaraman, J. Ullman: Mining of Massive Datasets, http://www.mmds.org

22 The hardest problem often turns out to befinding the frequent pairs of items {i1, i2}
 Why? Freq. pairs are common, freq. triples are rare
 Why? Probability of being frequent drops exponentiallywith size; number of sets grows more slowly with size

 Let’s first concentrate on pairs, then extend tolarger sets
 The approach: We always need to generate all the itemsets
 But we would only like to count (keep track) of those
itemsets that in the end turn out to be frequent
J. Leskovec, A. Rajaraman, J. Ullman: Mining of Massive Datasets, http://www.mmds.org

23 Naïve approach to finding frequent pairs
 Read file once, counting in main memory

the occurrences of each pair: From each basket of n items, generate itsn(n-1)/2 pairs by two nested loops Fails if (#items)2 exceeds main memory Remember: #items can be
100K (Wal-Mart) or 10B (Web pages)
 Suppose 105 items, counts are 4-byte integers
 Number of pairs of items: 105(105-1)/2 = 5*109
 Therefore, 2*1010 (20 gigabytes) of memory needed
J. Leskovec, A. Rajaraman, J. Ullman: Mining of Massive Datasets, http://www.mmds.org

24

Two approaches: Approach 1: Count all pairs using a matrix
 Approach 2: Keep a table of triples [i, j, c] =“the count of the pair of items {i, j} is c.” If integers and item ids are 4 bytes, we needapproximately 12 bytes for pairs with count > 0 Plus some additional overhead for the hashtable

Note: Approach 1 only requires 4 bytes per pair
 Approach 2 uses 12 bytes per pair(but only for pairs with count > 0)
J. Leskovec, A. Rajaraman, J. Ullman: Mining of Massive Datasets, http://www.mmds.org

25

4 bytes per pair

Triangular Matrix

12 peroccurring pair

TriplesJ. Leskovec, A. Rajaraman, J. Ullman: Mining of Massive Datasets, http://www.mmds.org

26 Approach 1: Triangular Matrix

 n = total number items
 Count pair of items {i, j} only if i<j Keep pair counts in lexicographic order: {1,2}, {1,3},…, {1,n}, {2,3}, {2,4},…,{2,n}, {3,4},…

 Pair {i, j} is at position (i –1)(n– i/2) + j –1
 Total number of pairs n(n –1)/2; total bytes= 2n2
 Triangular Matrix requires 4 bytes per pair
 Approach 2 uses 12 bytes per occurring pair(but only for pairs with count > 0)
 Beats Approach 1 if less than 1/3 ofpossible pairs actually occur
J. Leskovec, A. Rajaraman, J. Ullman: Mining of Massive Datasets, http://www.mmds.org

27 Approach 1: Triangular Matrix

 n = total number items
 Count pair of items {i, j} only if i<j Keep pair counts in lexicographic order:

Problem is if we have too
items(isothei/2)pairs
 Pair {i,manyj} is at position–1)(n–+ j –12
 Total number
of
pairs
n(n
–1)/2;
total
bytes=
2n
do not fit into memory.
 {1,2}, {1,3},…, {1,n}, {2,3}, {2,4},…,{2,n}, {3,4},…

 Triangular Matrix requires 4 bytes per pair

Can we do better?

 Approach 2 uses 12 bytes per pair(but only for pairs with count > 0)
 Beats Approach 1 if less than 1/3 ofpossible pairs actually occur
J. Leskovec, A. Rajaraman, J. Ullman: Mining of Massive Datasets, http://www.mmds.org

28 A two-pass approach called

A-Priori limits the need formain memory
 Key idea: monotonicity
 If a set of items I appears atleast s times, so does every subset J of I
 Contrapositive for pairs:

If item i does not appear in s baskets, then nopair including i can appear in s baskets
 So, how does A-Priori find freq. pairs?
J. Leskovec, A. Rajaraman, J. Ullman: Mining of Massive Datasets, http://www.mmds.org

30

 Pass 1: Read baskets and count in main memory

the occurrences of each individual item
 Requires only memory proportional to #items

 Items that appear ൒ ࢙ times are the frequent items
 Pass 2: Read baskets again and count in main

memory only those pairs where both elements
are frequent (from Pass 1)
 Requires memory proportional to square of frequent
items only (for counts) Plus a list of the frequent items (so you know what must
be counted)
J. Leskovec, A. Rajaraman, J. Ullman: Mining of Massive Datasets, http://www.mmds.org

31Main memory

Item counts

Frequent items

Counts ofpairs offrequent items(candidate
pairs)

Pass 1

Pass 2

J. Leskovec, A. Rajaraman, J. Ullman: Mining of Massive Datasets, http://www.mmds.org

32 You can use the May save space comparedwith storing triples
 Trick: re-number

frequent items 1,2,…
and keep a table relating
new numbers to originalitem numbers

Old
item
#s

Item counts

Frequent
items

Main memory

triangular matrix
method with n = numberof frequent items

Counts of pairs
Countsofoffrequent
pairs
of
items
frequent items

Pass 1

J. Leskovec, A. Rajaraman, J. Ullman: Mining of Massive Datasets, http://www.mmds.org

Pass 233

 For each k, we construct two sets ofk-tuples (sets of size k): Ck = candidate k-tuples = those that might befrequent sets (support > s) based on informationfrom the pass for k–1
 Lk = the set of truly frequent k-tuples
All
items

C1

Count
the items

All pairsof items
from L1

FilterConstruct

L1

Count
the pairs

C2

FilterTo be
explained

L2

J. Leskovec, A. Rajaraman, J. Ullman: Mining of Massive Datasets, http://www.mmds.org

Construct

C334

** Note here we generate new candidates bygenerating Ck from Lk-1 and L1.
But that one can be more careful with candidate
generation. For example, in C3 we know {b,m,j}cannot be frequent since {m,j} is not frequent Hypothetical steps of the A-Priori algorithm C1 = { {b} {c} {j} {m} {n} {p} } Count the support of itemsets in C1
 Prune non-frequent: L1 = { b, c, j, m } Generate C2 = { {b,c} {b,j} {b,m} {c,j} {c,m} {j,m} } Count the support of itemsets in C2
 Prune non-frequent: L2 = { {b,m} {b,c} {c,m} {c,j} } Generate C3 = { {b,c,m} {b,c,j} {b,m,j} {c,m,j} }** Count the support of itemsets in C3
 Prune non-frequent: L3 = { {b,c,m} }J. Leskovec, A. Rajaraman, J. Ullman: Mining of Massive Datasets, http://www.mmds.org

35 One pass for each k (itemset size) Needs room in main memory to counteach candidate k–tuple
 For typical market-basket data and reasonablesupport (e.g., 1%), k = 2 requires the most memory
 Many possible extensions: Association rules with intervals:
 For example: Men over 65 have 2 cars

 Association rules when items are in a taxonomy
 Bread, Butter → FruitJam BakedGoods, MilkProduct → PreservedGoods

 Lower the support s as itemset gets bigger
J. Leskovec, A. Rajaraman, J. Ullman: Mining of Massive Datasets, http://www.mmds.org

36 Observation:

In pass 1 of A-Priori, most memory is idle
 We store only individual item counts
 Can we use the idle memory to reduce
memory required in pass 2?
 Pass 1 of PCY: In addition to item counts,

maintain a hash table with as many
buckets as fit in memory Keep a count for each bucket into whichpairs of items are hashed For each bucket just keep the count, not the actual
pairs that hash to the bucket!
J. Leskovec, A. Rajaraman, J. Ullman: Mining of Massive Datasets, http://www.mmds.org

38FOR (each basket) :FOR (each item in the basket) :add 1 to item’s count;
FOR (each pair of items) :New
hash the pair to a bucket;
inPCY
add 1 to the count for that bucket;

 Few things to note:

 Pairs of items need to be generated from the input
file; they are not present in the file
 We are not just interested in the presence of a pair,
but we need to see whether it is present at least s(support) times
J. Leskovec, A. Rajaraman, J. Ullman: Mining of Massive Datasets, http://www.mmds.org

39 Observation: If a bucket contains a frequent pair,then the bucket is surely frequent However, even without any frequent pair,a bucket can still be frequent  So, we cannot use the hash to eliminate any
member (pair) of a “frequent” bucket But, for a bucket with total count less than s,none of its pairs can be frequent ☺
 Pairs that hash to this bucket can be eliminated as
candidates (even if the pair consists of 2 frequent items)
 Pass 2:

Only count pairs that hash to frequent buckets
J. Leskovec, A. Rajaraman, J. Ullman: Mining of Massive Datasets, http://www.mmds.org

40 Replace the buckets by a bit-vector:

 1 means the bucket count exceeded the support s(call it a frequent bucket); 0 means it did not 4-byte integer counts are replaced by bits,so the bit-vector requires 1/32 of memory
 Also, decide which items are frequentand list them for the second pass

J. Leskovec, A. Rajaraman, J. Ullman: Mining of Massive Datasets, http://www.mmds.org

41Count all pairs {i, j} that meet theconditions for being a candidate pair:
1. Both i and j are frequent items
2. The pair {i, j} hashes to a bucket whose bit in
the bit vector is 1 (i.e., a frequent bucket)

Both conditions are necessary for thepair to have a chance of being frequent

J. Leskovec, A. Rajaraman, J. Ullman: Mining of Massive Datasets, http://www.mmds.org

42

Main memory

Item counts

Frequent items
Bitmap

Hash
Hash
table
table
for pairs

Pass 1Counts ofcandidatepairs

Pass 2

J. Leskovec, A. Rajaraman, J. Ullman: Mining of Massive Datasets, http://www.mmds.org

43 Buckets require a few bytes each: Note: we do not have to count past s #buckets is O(main-memory size) On second pass, a table of (item, item, count)triples is essential (we cannot use triangularmatrix approach, why?) Thus, hash table must eliminate approx. 2/3of the candidate pairs for PCY to beat A-Priori

J. Leskovec, A. Rajaraman, J. Ullman: Mining of Massive Datasets, http://www.mmds.org

44 Limit the number of candidates to be counted

 Remember: Memory is the bottleneck Still need to generate all the itemsets but we only
want to count/keep track of the ones that are frequent Key idea: After Pass 1 of PCY, rehash only thosepairs that qualify for Pass 2 of PCY
 i and j are frequent, and {i, j} hashes to a frequent bucket from Pass 1
 On middle pass, fewer pairs contribute tobuckets, so fewer false positives
 Requires 3 passes over the data
J. Leskovec, A. Rajaraman, J. Ullman: Mining of Massive Datasets, http://www.mmds.org

45

Main memory

Item counts

First
hash
table
First

Freq. items

Freq. items

Bitmap 1

Bitmap 1
Bitmap 2

hash table

Secondhash table

CountsCounts ofofcandidatecandidate
pairs
pairs

Pass 1

Pass 2

Pass 3

Count items
Hash pairs {i,j}Hash pairs {i,j}into Hash2 iff:i,j are frequent,{i,j} hashes tofreq. bucket in B1

Count pairs {i,j} iff:i,j are frequent,{i,j} hashes tofreq. bucket in B1{i,j} hashes tofreq. bucket in B2

J. Leskovec, A. Rajaraman, J. Ullman: Mining of Massive Datasets, http://www.mmds.org

46

Count only those pairs {i, j} that satisfy thesecandidate pair conditions:
1. Both i and j are frequent items
2. Using the first hash function, the pair hashes toa bucket whose bit in the first bit-vector is 1
3. Using the second hash function, the pair hashes toa bucket whose bit in the second bit-vector is 1

J. Leskovec, A. Rajaraman, J. Ullman: Mining of Massive Datasets, http://www.mmds.org

47

1.
2.

The two hash functions have to be
independent
We need to check both hashes on thethird pass

If not, we would end up counting pairs of
frequent items that hashed first to an
infrequent bucket but happened to hashsecond to a frequent bucket

J. Leskovec, A. Rajaraman, J. Ullman: Mining of Massive Datasets, http://www.mmds.org

48 Key idea: Use several independent hashtables on the first pass
 Risk: Halving the number of buckets doubles
the average count We have to be sure most buckets will still notreach count s If so, we can get a benefit like multistage,

but in only 2 passes

J. Leskovec, A. Rajaraman, J. Ullman: Mining of Massive Datasets, http://www.mmds.org

49Main memory

Item counts

Freq. items
Bitmap 1

First
First
hash
hash
table
table

Bitmap 2

SecondSecondhash
tablehash table

CountsCountsofof
candidatecandidate
pairs
pairs

Pass 1

Pass 2

J. Leskovec, A. Rajaraman, J. Ullman: Mining of Massive Datasets, http://www.mmds.org

50 Either multistage or multihash can use morethan two hash functions
 In multistage, there is a point of diminishingreturns, since the bit-vectors eventuallyconsume all of main memory
 For multihash, the bit-vectors occupy exactly

what one PCY bitmap does, but too manyhash functions makes all counts > sJ. Leskovec, A. Rajaraman, J. Ullman: Mining of Massive Datasets, http://www.mmds.org

51 A-Priori, PCY, etc., take k passes to findfrequent itemsets of size k Can we use fewer passes?
 Use 2 or fewer passes for all sizes,

but may miss some frequent itemsets Random sampling SON (Savasere, Omiecinski, and Navathe) Toivonen (see textbook)
J. Leskovec, A. Rajaraman, J. Ullman: Mining of Massive Datasets, http://www.mmds.org

53 Take a random sample of the market baskets
 Run a-priori or one of its improvements

 So we don’t pay for disk I/O eachtime we increase the size of itemsets
 Reduce support thresholdproportionallyto match the sample size

J. Leskovec, A. Rajaraman, J. Ullman: Mining of Massive Datasets, http://www.mmds.org

Main memory

in main memory
Copy ofsamplebasketsSpace
forcounts54 Optionally, verify that the candidate pairs are

truly frequent in the entire data set by asecond pass (avoid false positives) But you don’t catch sets frequent in the whole

but not in the sample
 Smaller threshold, e.g., s/125, helps catch moretruly frequent itemsets
 But requires more space

J. Leskovec, A. Rajaraman, J. Ullman: Mining of Massive Datasets, http://www.mmds.org

55 Repeatedly read small subsets of the baskets

into main memory and run an in-memoryalgorithm to find all frequent itemsets
 Note: we are not sampling, but processing theentire file in memory-sized chunks
 An itemset becomes a candidate if it is foundto be frequent in any one or more subsets ofthe baskets.

J. Leskovec, A. Rajaraman, J. Ullman: Mining of Massive Datasets, http://www.mmds.org

56 On a second pass, count all the candidate

itemsets and determine which are frequent in
the entire set
 Key “monotonicity” idea: an itemset cannot

be frequent in the entire set of baskets unless
it is frequent in at least one subset.

J. Leskovec, A. Rajaraman, J. Ullman: Mining of Massive Datasets, http://www.mmds.org

57 SON lends itself to distributed data mining Baskets distributed among many nodes

 Compute frequent itemsets at each node Distribute candidates to all nodes
 Accumulate the counts of all candidates

J. Leskovec, A. Rajaraman, J. Ullman: Mining of Massive Datasets, http://www.mmds.org

58 Phase 1: Find candidate itemsets

 Map?
 Reduce?
 Phase 2: Find true frequent itemsets

 Map?
 Reduce?

J. Leskovec, A. Rajaraman, J. Ullman: Mining of Massive Datasets, http://www.mmds.org

59