<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>MAFIA: A Performance Study of Mining Maximal Frequent Itemsets</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Doug Burdick</string-name>
          <email>who0ps99@cs.wisc.edu</email>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Manuel Calimlim</string-name>
          <email>calimlim@cs.cornell.edu</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Jason Flannick</string-name>
          <email>annick@cs.stanford.edu</email>
          <email>flannick@cs.stanford.edu</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Johannes Gehrke</string-name>
          <email>johannes@cs.cornell.edu</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Tomi Yiu</string-name>
          <email>ty42@cornell.edu</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Cornell University</institution>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Stanford University</institution>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>University of Wisconsin-Madison</institution>
          ,
          <country country="US">USA</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>We present a performance study of the MAFIA algorithm for mining maximal frequent itemsets from a transactional database. In a thorough experimental analysis, we isolate the effects of individual components of MAFIA, including search space pruning techniques and adaptive compression. We also compare our performance with previous work by running tests on very different types of datasets. Our experiments show that MAFIA performs best when mining long itemsets and outperforms other algorithms on dense data by a factor of three to thirty.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        MAFIA uses a vertical bitmap representation for support
counting and effective pruning mechanisms for searching
the itemset lattice [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]. The algorithm is designed to mine
maximal frequent itemsets (MFI), but by changing some
of the pruning tools, MAFIA can also generate all frequent
itemsets (FI) and closed frequent itemsets (FCI).
      </p>
      <p>MAFIA assumes that the entire database (and all data
structures used for the algorithm) completely fit into main
memory. Since all algorithms for finding association
rules, including algorithms that work with disk-resident
databases, are CPU-bound, we believe that our study sheds
light on some important performance bottlenecks.</p>
      <p>In a thorough experimental evaluation, we first quantify
the effect of each individual pruning component on the
performance of MAFIA. Because of our strong pruning
mechanisms, MAFIA performs best on dense datasets where large
subtrees can be removed from the search space. On
shallow datasets, MAFIA is competitive though not always the
fastest algorithm. On dense datasets, our results indicate
Research for this paper done while at Cornell University
Research for this paper done while at Cornell University
that MAFIA outperforms other algorithms by a factor of
three to thirty.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Search Space Pruning</title>
      <p>
        MAFIA uses the lexicographic subset tree originally
presented by Rymon [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] and adopted by both Agarwal [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] and
Bayardo [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. The itemset identifying each node will be
referred to as the node’s head, while possible extensions of
the node are called the tail. In a pure depth-first traversal of
the tree, the tail contains all items lexicographically larger
than any element of the head. With a dynamic reordering
scheme, the tail contains only the frequent extensions of
the current node. Notice that all items that can appear in
a subtree are contained in the subtree root’s head union tail
( ), a set formed by combining all elements of the head
and tail.
      </p>
      <p>In the simplest itemset traversal, we traverse the
lexicographic tree in pure depth-first order. At each node , each
element in the node’s tail is generated and counted as a
extension. If the support of n’s head -extension is
less than , then we can stop by the Apriori
principle, since any itemset from that possible -extension would
have an infrequent subset.</p>
      <p>For each candidate itemset, we need to check if a
superset of the candidate itemset is already in the MFI. If
no superset exists, then we add the candidate itemset to the
MFI. It is important to note that with the depth-first
traversal, itemsets already inserted into the MFI will be
lexicographically ordered earlier.
2.1</p>
      <sec id="sec-2-1">
        <title>Parent Equivalence Pruning (PEP)</title>
        <p>One method of pruning involves comparing the
transaction sets of each parent/child pair. Let be a node ’s head
and be an element in ’s tail. If , then any
transaction containing also contains . Since we only
want the maximal frequent itemsets, it is not necessary to
count itemsets containing and not . Therefore, we can
move item from the node’s tail to the node’s head.
2.2</p>
      </sec>
      <sec id="sec-2-2">
        <title>FHUT</title>
        <p>
          Another type of pruning is superset pruning. We observe
that at node , the largest possible frequent itemset
contained in the subtree rooted at is ’s HUT (head union
tail) as observed by Bayardo [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ]. If ’s HUT is
discovered to be frequent, we never have to explore any subsets
of the HUT and thus can prune out the entire subtree rooted
at node . We refer to this method of pruning as FHUT
(Frequent Head Union Tail) pruning.
2.3
        </p>
      </sec>
      <sec id="sec-2-3">
        <title>HUTMFI</title>
        <p>There are two methods for determining whether an
itemset is frequent: direct counting of the support of , and
checking if a superset of has already been declared
frequent; FHUT uses the former method. The latter approach
determines if a superset of the HUT is in the MFI. If a
superset does exist, then the HUT must be frequent and the
subtree rooted at the node corresponding to can be pruned
away. We call this type of superset pruning HUTMFI.
2.4</p>
      </sec>
      <sec id="sec-2-4">
        <title>Dynamic Reordering</title>
        <p>
          The benefit of dynamically reordering the children of
each node based on support instead of following the
lexicographic order is significant. An algorithm that trims the
tail to only frequent extensions at a higher level will save
a lot of computation. The order of the tail elements is also
an important consideration. Ordering the tail elements by
increasing support will keep the search space as small as
possible. This heuristic was first used by Bayardo [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ].
        </p>
        <p>In Section 5.3.1, we quantify the effects of the
algorithmic components by analyzing different combinations of
pruning mechanisms.
3</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>MAFIA Extensions</title>
      <p>MAFIA is designed and optimized for mining maximal
frequent itemsets, but the general framework can be used to
mine all frequent itemsets and closed frequent itemsets.</p>
      <p>The algorithm can easily be extended to mine all
frequent itemsets. The main changes required are suppressing
any pruning tools (PEP, FHUT, HUTMFI) and adding all
frequent nodes in the itemset lattice to the set FI without
any superset checking. Itemsets are counted using the same
techniques as for the regular MAFIA algorithm.</p>
      <p>MAFIA can also be used to mine closed frequent
itemsets. An itemset is closed if there are no supersets with the</p>
      <p>Optimizations
same support. PEP is the only type of pruning used when
mining for frequent closed itemsets (FCI). Recall from
Section 2.1 that PEP moves all extensions with the same
support from the tail to the head of each node. Any items
remaining in the tail must have a lower support and thus are
different closed itemsets. Note that we must still check for
supersets in the previously discovered FCI.</p>
      <sec id="sec-3-1">
        <title>Effective MFI Superset Checking</title>
        <p>
          In order to enumerate the exact set of maximally
frequent itemsets, before adding any itemset to the MFI we
must check the entire MFI to ensure that no superset of the
itemset has already been found. This check is done often,
and significant performance improvements can be realized
if it is done efficiently. To ensure this, we adopt the
progressive focusing technique introduced by Gouda and Zaki
[
          <xref ref-type="bibr" rid="ref7">7</xref>
          ].
        </p>
        <p>
          The basic idea is that while the entire MFI may be large,
at any given node only a fraction of the MFI are possible
supersets of the itemset at the node. We therefore maintain
for each node a LMFI (Local MFI), which is the subset of
the MFI that contains supersets of the current node’s
itemset. For more details on the LMFI concept, please see the
paper by Gouda and Zaki [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ].
4.2
        </p>
      </sec>
      <sec id="sec-3-2">
        <title>Support Counting and Bitmap Compression</title>
        <p>
          MAFIA uses a vertical bitmap representation for the
database [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ]. In a vertical bitmap, there is one bit for each
transaction in the database. If item appears in
transaction , then bit of the bitmap for item is set to one;
otherwise, the bit is set to zero. This naturally extends
to itemsets. Generation of new itemset bitmaps involves
bitwise-ANDing bitmap( ) with a bitmap for 1-itemset
and storing the result in bitmap ( ). For each byte in
bitmap( ), the number of 1’s in the byte is determined
using a pre-computed table. Summing these lookups gives
the support of .
4.3
        </p>
      </sec>
      <sec id="sec-3-3">
        <title>Compression and Projected Bitmaps</title>
        <p>The weakness of a vertical representation is the
sparseness of the bitmaps especially at the lower support levels.
Since every transaction has a bit in vertical bitmaps, there
are many zeros because both the absence and presence of
the itemset in a transaction need to be represented.
However, note that we only need information about transactions
containing the itemset to count the support of the subtree
rooted at node . So, conceptually we can remove the bit
for transaction from if does not contain . This is
a form of lossless compression on the vertical bitmaps to
speed up calculations.
4.3.1</p>
      </sec>
      <sec id="sec-3-4">
        <title>Adaptive Compression</title>
        <p>Determining when to compress the bitmaps is not as simple
as it first appears. Each 1-extension bitmap in the tail of the
node must be projected relative to the itemset , and the
cost for projection may outweigh the benefits of using the
compressed bitmaps. The best approach is to compress only
when we know that the savings from using the compressed
bitmaps outweigh the cost of projection.</p>
        <p>We use an adaptive approach to determine when to
apply compression. At each node, we estimate both the cost
of compression and the benefits of using the compressed
bitmaps instead of the full bitmaps. When the benefits
outweight the costs, compression is chosen for that node and
the subtree rooted at that node.
5
5.1</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Experimental Results</title>
      <sec id="sec-4-1">
        <title>Datasets</title>
        <p>
          To test MAFIA, we used three different types of data.
The first group of datasets is sparse; the frequent itemset
patterns are short and thus nodes in the itemset tree will
have small tails and few branches. We first used artificial
datasets that were created using the data generator from
IBM Almaden [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ]. Stats for these datasets can be found in
Figure 1 under T10I4D100K and T40I10D100K. The
distribution of maximal frequent itemsets is displayed in Figure
2. For all datasets, the minimum support was chosen to
yield around 100,000 elements in the MFI. Note that both
T10I4 and T40I10 have very high concentrations of
itemsets around two and three items long with T40I10 having
another smaller peak around eight to nine items.
50
45
40
)35
%
(30
y
c
n25
e
qu20
e
rF15
10
5
0
30
25
)20
%
(
y
c
n15
e
u
q
re10
F
5
0
20
18
16
)14
%
(12
y
c
n10
e
uq 8
e
r
F 6
4
2
0
        </p>
        <p>T10I4D100K
T40I10D100K
0
5</p>
        <p>10
Itemset Length
15
20</p>
        <p>
          The second dataset type is click stream data from two
different e-commerce websites (BMS-WebView-1 and
BMSWebView-2) where each transaction is a web session and
each item is a product page view; this data was provided
by Blue Martini [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ]. BMS-POS contains point-of-sale data
from an electronics retailer with the item-ids corresponding
to product categories. Figure 3 shows that BMS-POS and
BMS-WebView-1 have very similar normal curve itemset
distributions with the average length of a maximal frequent
itemset around five to six items long. On the other hand,
BMS-WebView-2 has a right skewed distribution; there’s
a sharp incline until three items and then a more gradual
decline on the right tail.
        </p>
        <p>
          Finally, the last datasets used for analysis are the dense
datasets. They are characterized by very long itemset
patterns that peak around 10-25 items (see Figure 4). Chess
and Connect4 are gathered from game state information and
are available from the UCI Machine Learning Repository
[
          <xref ref-type="bibr" rid="ref5">5</xref>
          ]. The Pumsb dataset is census data from PUMS (Public
Use Microdata Sample). Pumsb-star is the same dataset as
Pumsb except all items of 80% support or more have been
removed, making it less dense and easier to mine. Figure
4 shows that Chess and Pumsb have nearly identical
itemset distributions that are normal around 10-12 items long.
Connect4 and Pumsb-star are somewhat left-skewed with
a slower incline that peaks around 20-23 items and then a
sharp decline in the length of the frequent itemsets.
5.2
        </p>
      </sec>
      <sec id="sec-4-2">
        <title>Other Algorithms</title>
        <p>5.2.1</p>
      </sec>
      <sec id="sec-4-3">
        <title>DepthProject</title>
        <p>
          DepthProject demonstrated an order of magnitude
improvement over previous algorithms for mining maximal frequent
itemsets [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ]. MAFIA was originally designed with
DepthProject as the primary benchmark for comparison and we
have implemented our own version of the DepthProject
algorithm for testing.
        </p>
        <p>
          The primary differences between MAFIA and
DepthProject are the database representation (and consequently
the support counting) and the application of pruning
tools. DepthProject uses a horizontal database layout while
MAFIA uses a vertical bitmap format, and supports of
itemsets are counted very differently. Both algorithms use some
form of compression when the bitmaps become sparse.
However, DepthProject also utilizes a specialized counting
technique called bucketing for the lower levels of the
itemset lattice. When the tail of a node is small enough,
bucketing will count the entire subtree with one pass over the data.
Since bucketing counts all of the nodes in a subtree, many
itemsets that MAFIA will prune out will be counted with
DepthProject. For more details on the DepthProject
algorithm, please refer to the paper by Agarwal and Aggarwal
[
          <xref ref-type="bibr" rid="ref2">2</xref>
          ].
5.2.2
        </p>
      </sec>
      <sec id="sec-4-4">
        <title>GenMax</title>
        <p>
          GenMax is a new algorithm by Gouda and Zaki for finding
maximal itemset patterns [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ]. GenMax introduced a novel
concept for finding supersets in the MFI called progessive
focusing. The newest version of MAFIA has incorporated
this technique with the LMFI update. GenMax also uses
diffset propagation for fast support counting. Both
algorithms use similar methods for itemset lattice exploration
and pruning of the search space.
5.3
        </p>
      </sec>
      <sec id="sec-4-5">
        <title>Experimental Analysis</title>
        <p>We performed three types of experiments to analyze the
performance of MAFIA. First, we analyze the effect of each
pruning component of the MAFIA algorithm to
demonstrate how the algorithm works to trim the search space of
the itemset lattice. The second set of experiments
examines the savings generated by using compression to speed
support counting. Finally, we compare the performance of
MAFIA against other current algorithms on all three types
of data (see Section 5.1). In general, MAFIA works best on
dense data with long itemsets, though the algorithm is still
competitive on even very shallow data.</p>
        <p>These experiments were conducted on a 1500 Mhz
Pentium with 1GB of memory running Redhat Linux 9.0. All
code was written in C++ and compiled using gcc version
3.2 with all optimizations enabled.
5.3.1</p>
      </sec>
      <sec id="sec-4-6">
        <title>Algorithmic Component Analysis</title>
        <p>First, we present a full analysis of each pruning component
of the MAFIA algorithm (see Section 2 for algorithmic
details). There are three types of pruning used to trim the
tree: FHUT, HUTMFI, and PEP. FHUT and HUTMFI are
both forms of superset pruning and thus will tend to
“overlap” in their efficacy for reducing the search space. In
addition, dynamic reordering can significantly reduce the size
of the search space by removing infrequent items from each
node’s tail.</p>
        <p>Figures 5 and 6 show the effects of each component of
the MAFIA algorithm on the Connect4 dataset at 40%
minimum support. The components of the algorithm are
represented in a cube format with the running times (in seconds)
and the number of itemsets counted during the MAFIA
search. The top of the cube shows the time for a simple
traversal where the full search space is explored, while the
bottom of the cube corresponds to all three pruning
methods being used. Two separate cubes (with and without
dynamic reordering) rather than one giant cube are presented
for readability.</p>
        <p>Note that all of the pruning components yield great
savings in running time compared to using no pruning.
Applying a single pruning mechanism runs two to three orders of</p>
        <sec id="sec-4-6-1">
          <title>HUTMFI</title>
          <p>101.54s
4,471,023c
FH+PEP
9.84s
409,741c
ALL
2.48s
96,871c</p>
        </sec>
        <sec id="sec-4-6-2">
          <title>HUTMFI</title>
          <p>14.98s
609,100c
FH+PEP</p>
          <p>1.82s
63,027c
magnitude faster while using all of the pruning tools is four
orders of magnitude faster than no pruning.</p>
          <p>Several of the pruning components seem to overlap in
trimming the search space. In particular, HUTMFI and
FHUT yield very similar results, since they use the same
type of superset pruning but with different methods of
implementation. It is interesting to see that adding FHUT
when HUTMFI is already performed yields very little
savings, i.e. from HUTMFI to FH+HM or from HM+PEP
to ALL, the running times do not significantly change.
HUTMFI first checks for the frequency of a node’s HUT
by looking for a frequent superset in the MFI, while FHUT
will explore the leftmost branch of the subtree rooted at that
node. Apparently, there are very few cases where a superset
of a node’s HUT is not in the MFI, but the HUT is frequent.</p>
          <p>PEP has the largest impact of the three pruning
methods. Most of the running time of the algorithm occurs at the
lower levels of the tree where the border between frequent
and infrequent itemsets exists. Near this border, many of the
itemsets have the same exact support right above the
minimum support and thus, PEP is more likely to trim out large
sections of the tree at the lower levels.</p>
          <p>Dynamically reordering the tail also has dramatic
savings (cf. Figure 5 with Figure 6). At the top of each cube, it
is interesting to note that without any pruning mechanisms,
dynamic reordering will actually run slower than static
ordering. Fewer itemsets get counted, but the cost of
reordering so many nodes outweighs the savings of counting fewer
nodes.</p>
          <p>However, once pruning is applied, dynamic reordering
runs nearly an order of magnitude faster than the static
ordering. PEP is more effective since the tail is trimmed as
early in the tree as possible; all of the extensions with the
same support are moved from the tail to the head in one step
at the start of the subtree. Also, FHUT and HUTMFI have
much more impact. With dynamic reordering, subtrees
generated from the end of tail have the itemsets with the highest
supports and thus the HUT is more likely to be frequent.
5.3.2</p>
        </sec>
      </sec>
      <sec id="sec-4-7">
        <title>Effects of Compression in MAFIA</title>
        <p>Adaptive compression uses cost estimation to determine
when it is appropriate to compress the bitmaps. Since the
cost estimate adapts to each dataset, adaptive compression
is always better than using no compression. Results on
different types of data show that adaptive compression is at
least 25% faster as higher supports and at lower supports up
to an order of magnitude faster.</p>
        <p>Figures 7 and 8 display the effect of compression on
sparse data. First, we analyze the sparse, artificial datasets
T10I4 and T40I10 that are characterized by very short
itemsets, where the average length of maximally frequent
itemsets is only 2-6 items. Because these datasets are so sparse
with small subtrees, at higher supports compression is not
0.12
0.1
often used and thus has a negligible effect. But as the
support drops and the subtrees grow larger, the effect of
compression is enhanced and the running times for adaptive
compression increase to nearly 3-10 times faster.</p>
        <p>Next are the results on the sparse, real datasets:
BMSPOS, BMS-WebView-1, and BMS-WebView-2 in Figure
8. Note that for BMS-POS, adaptive compression follows
the exact same pattern as the synthetic datasets with the
difference growing from negligible to over 10 times
better. BMS-WebView-1 follows the same general pattern
except for an anomalous spike in the running times without
compression around .05%. However, for BMS-WebView-2
compression has a very small impact and is only really
effective at the lowest supports. Recall from Figure 3 that
BMS-WebView-2 has a right-skewed distribution of
frequent itemsets, which may help explain the different
compression effect.</p>
        <p>The final group of datasets is found in Figure 9 and
shows the results of compression on dense, real data. The
results on Chess and Pumsb indicate that very few
compressed bitmaps were used; apparently, the adaptive
compression algorithm determined compression to be too
expensive. As a result, adaptive compression is only around
15-30% better than using no compression at all. On the
other hand, the Connect4 and Pumsb-star datasets use a
much higher ratio of compressed bitmaps and adaptive
compression is more than three times faster than no
compression.</p>
        <p>It is interesting to note that Chess and Pumsb both have
left-skewed distributions (see Figure 4) while Connect4 and
Pumsb-star follow a more normal distribution of itemsets.
The results indicate that when the data is skewed (left or
right), adaptive compression is not as effective. Still, even
in the worst case adaptive compression will use the cost
estimate to determine that compression should not be chosen
and thus is at least as fast as never compressing at all. In the
best case, compression can significantly speed up support
0.06
0.05
0.04
0.02</p>
        <p>0.01
0.03</p>
        <p>Min Sup (%)
1000
100
10000
1000
100
0
10
10000
1000
)
s
100 (e
m
i</p>
        <p>T
10
1
10000
1000
100
0
10
35
30
25
10</p>
        <p>5
35
30
25
10
5</p>
        <p>0
20 15</p>
        <p>Min Sup (%)</p>
        <p>Compression on Pumsb-star
6
5
4</p>
        <p>3
Min Sup (%)
2
1
1000
100
10
1
0.03</p>
        <p>Min Sup (%)
counting by over an order of magnitude.
5.3.3</p>
      </sec>
      <sec id="sec-4-8">
        <title>Performance Comparisons</title>
        <p>Time Comparison on Chess
3</p>
        <p>In this paper we present a detailed performance
analysis of MAFIA. The breakdown of the algorithmic
components show that powerful pruning techniques such as
parentequivalence pruning and superset checking are very
beneficial in reducing the search space. We also show that
adaptive compression/projection of the vertical bitmaps
dramatically cuts the cost of counting supports of itemsets. Our
experimental results demonstrate that MAFIA is highly
optimized for mining long itemsets and on dense data
consistently outperforms GenMax by two to ten and DepthProject
by ten to thirty.</p>
        <p>Acknowledgements: We would like to thank Ramesh
Agarwal and Charu Aggarwal for discussing DepthProject
and giving us advice on its implementation. We also thank
Jayant Haritsa for his insightful comments on the MAFIA
algorithm, Jiawei Han for helping in our understanding of
CLOSET and providing us the executable of the FP-Tree
algorithm, and Mohammed Zaki for making the source code
of GenMax available.</p>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>[1] Data generator available at http://www.almaden.ibm.com/software/quest/Resources/.</mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>R. C.</given-names>
            <surname>Agarwal</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C. C.</given-names>
            <surname>Aggarwal</surname>
          </string-name>
          , and
          <string-name>
            <given-names>V. V. V.</given-names>
            <surname>Prasad</surname>
          </string-name>
          .
          <article-title>Depth first generation of long patterns</article-title>
          .
          <source>In Knowledge Discovery and Data Mining</source>
          , pages
          <fpage>108</fpage>
          -
          <lpage>118</lpage>
          ,
          <year>2000</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>R. C.</given-names>
            <surname>Agarwal</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C. C.</given-names>
            <surname>Aggarwal</surname>
          </string-name>
          , and
          <string-name>
            <given-names>V. V. V.</given-names>
            <surname>Prasad</surname>
          </string-name>
          .
          <article-title>A tree projection algorithm for generation of frequent item sets</article-title>
          .
          <source>Journal of Parallel and Distributed Computing</source>
          ,
          <volume>61</volume>
          (
          <issue>3</issue>
          ):
          <fpage>350</fpage>
          -
          <lpage>371</lpage>
          ,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>R. J.</given-names>
            <surname>Bayardo</surname>
          </string-name>
          .
          <article-title>Efficiently mining long patterns from databases</article-title>
          .
          <source>In SIGMOD</source>
          , pages
          <fpage>85</fpage>
          -
          <lpage>93</lpage>
          ,
          <year>1998</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>C.</given-names>
            <surname>Blake</surname>
          </string-name>
          and
          <string-name>
            <given-names>C.</given-names>
            <surname>Merz</surname>
          </string-name>
          .
          <source>UCI repository of machine learning databases</source>
          ,
          <year>1998</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>D.</given-names>
            <surname>Burdick</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Calimlim</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J.</given-names>
            <surname>Gehrke</surname>
          </string-name>
          .
          <article-title>Mafia: A maximal frequent itemset algorithm for transactional databases</article-title>
          .
          <source>In ICDE</source>
          <year>2001</year>
          , Heidelberg, Germany,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>K.</given-names>
            <surname>Gouda</surname>
          </string-name>
          and
          <string-name>
            <given-names>M. J.</given-names>
            <surname>Zaki</surname>
          </string-name>
          .
          <article-title>Efficiently mining maximal frequent itemsets</article-title>
          .
          <source>In ICDM</source>
          , pages
          <fpage>163</fpage>
          -
          <lpage>170</lpage>
          ,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>R.</given-names>
            <surname>Kohavi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Brodley</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Frasca</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Mason</surname>
          </string-name>
          , and
          <string-name>
            <given-names>Z.</given-names>
            <surname>Zheng</surname>
          </string-name>
          .
          <article-title>KDD-Cup 2000 organizers' report: Peeling the onion</article-title>
          .
          <source>SIGKDD Explorations</source>
          ,
          <volume>2</volume>
          (
          <issue>2</issue>
          ):
          <fpage>86</fpage>
          -
          <lpage>98</lpage>
          ,
          <year>2000</year>
          . http://www.ecn.purdue.edu/KDDCUP.
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>R.</given-names>
            <surname>Rymon</surname>
          </string-name>
          .
          <article-title>Search through systematic set enumeration</article-title>
          .
          <source>In International Conference on Principles of Knowledge Representation and Reasoning</source>
          , pages
          <fpage>539</fpage>
          -
          <lpage>550</lpage>
          ,
          <year>1992</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>