<!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>
      <contrib-group>
        <aff id="aff0">
          <label>0</label>
          <institution>Lars Schmidt-Thieme Computer-based New Media Group (CGNM), Institute for Computer Science, University of Freiburg</institution>
          ,
          <country country="DE">Germany</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>Nowadays basic algorithms such as Apriori and Eclat often are conceived as mere textbook examples without much practical applicability: in practice more sophisticated algorithms with better performance have to be used. We would like to challenge that point of view by showing that a carefully assembled implementation of Eclat outperforms the best algorithms known in the field, at least for dense datasets. For that we view Eclat as a basic algorithm and a bundle of optional algorithmic features that are taken partly from other algorithms like lcm and Apriori, partly new ones. We evaluate the performance impact of these different features and report about results of experiments that support our claim of the competitiveness of Eclat.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>Algorithms for mining frequent itemsets often are
presented in a monolithic way and labeled with a fancy name
for marketing. Careful inspection often reveals similarities
with other mining algorithms that allow the transfer from
a smart solution of a specific (detail) problem in one
algorithm to another one. We would like to go one step further
and view such mining algorithms as a basic algorithm and a
bundle of algorithmic features.</p>
      <p>
        Basically, there are only two large families of mining
algorithms, Apriori [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] and Eclat [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] (counting fpgrowth [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]
in the Eclat family what might be arguable). As the basic
computation schemes of both of these algorithms are quite
simple, one might get the impression, that nowadays they
are good only as examples how mining algorithms work in
principle for textbooks, but in practice more sophisticated
algorithms have to be applied to get good performance
results: for example, the four best-performing algorithms of
the FIMI-03 workshop, patricia, kdci, lcm, and fpgrowth*
(see [
        <xref ref-type="bibr" rid="ref6 ref7 ref8 ref9">7, 6, 9, 8</xref>
        ], for the implementations and [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] for a
performance evaluation of these algorithms, respectively) do use
candidate generation procedures and data structures quite
different from those usually associated with the basic
algorithms.
      </p>
      <p>In this paper, we would like to challenge that point
of view by presenting an Eclat algorithm that for dense
datasets outperforms all its more sophisticated competitors.</p>
      <p>
        We will start with a formal outline of Eclat algorithm
in section 2. In section 3 we investigate several
algorithmic features of Eclat, partly gathered from other algorithms
as lcm, fpgrowth, and Apriori, partly new ones, review their
usefulness in Eclat and shortly discuss their possible
performance impact along with possible reasons thereof. In
section 4 we present an empirical evaluation of that impact as
well as a comparison with the competitor algorithms from
FIMI 03 mentioned above. – We will stick to Eclat. See
[
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] for an excellent discussion and evaluation of different
features of Apriori.
      </p>
      <p>Let us fix notations for the frequent itemset mining
problem in the rest of this section. Let A be a set, called set
of items or alphabet. Any subset X ∈ P(A) of A is
called an itemset. Let T ⊆ P (A) be a multiset of
itemsets, called transaction database, and its elements T ∈ T
called transactions. For a given itemset X ∈ P(A), the set
of transactions that contain X</p>
      <p>T (X) := {T ∈ T | X ⊆ T }
is called (transaction) cover of X in T and its cardinality
sup(X) := |T (X)|</p>
      <p>T
(absolute) support of X in T . An (all) frequent
itemset mining task is specified by a dataset T and a lower
bound minsup ∈ N on support, called minimum support,
and asks for enumerating all itemsets with support at least
minsup, called frequent or (frequent) patterns.</p>
      <p>An itemset X is called closed, if</p>
      <p>X = \ T (X)
i.e., if any super-itemset of X has lower support.
2. Basic Eclat Algorithm</p>
      <p>
        Most frequent itemset mining algorithms as Apriori [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]
and Eclat [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] use a total order on the items A of the
alphabet and the itemsets P(A) to prevent that the same itemset,
called candidate, is checked twice for frequency. Items
orderings ≤ are in one-to-one-correspondence with item
codings, i.e., bijective maps o : A → {1, . . . , n} via natural
ordering on N. – For itemsets X, Y ∈ P(A) one defines
their prefix as
prefix(X, Y ) :={{x ∈ X | x ≤ z} | maximal z ∈ X ∩ Y :
{x ∈ X | x ≤ z} = {y ∈ Y | y ≤ z}}
Any order on A uniquely determines a total order on P(A),
called lexicographic order, by
X &lt; Y :⇔ min(X\prefix(X, Y )) &lt; min(Y \prefix(X, Y ))
      </p>
      <p>For an itemset X ∈ P(A) an itemset Y ∈ P(A) with
X ⊂ Y and X &lt; Y is called an extension of X. An
extension Y of X with Y = X ∪ {y} (and thus y &gt; max X)
is called an 1-item-extension of X. The extension
relation organizes all itemsets in a tree, called extension tree or
search tree.</p>
      <p>Eclat starts with the empty prefix and the
itemtransaction incidence matrix C∅, shortly called incidence
matrix in the following, and stored sparsely as list of item
covers: C∅ := {(x, T ({x})) | x ∈ A}. The incidence
matrix is filtered to only contain frequent items by
freq(C) := {(x, Tx) | (x, Tx) ∈ C, |Tx| ≥
minsup}.
that represent frequent 1-item-extensions of the prefix. For
any prefix p ∈ P(A) and incidence matrix C of frequent
1item-extensions of p one can compute the incidence matrix
Cx of 1-item-extensions of p ∪ {x} by intersection rows:</p>
      <p>Cx := {(y, Tx ∩ Ty) | (y, Ty) ∈ C, y &gt; x}
where (x, Tx) ∈ C is the row representing p ∪ {x}. Cx
has to be filtered to get all frequent 1-item-extensions of
p ∪ {x} and then this procedure is recursively iterated until
the resulting incidence matrix Cx is empty, signaling that
there are no further frequent 1-item-extensions of the prefix.
See alg. 1 for an exact description of the Eclat algorithm.</p>
    </sec>
    <sec id="sec-2">
      <title>3. Features of Eclat</title>
      <p>The formal description of the Eclat algorithm in the last
section allows us to point to several algorithmic features that
this algorithm may have. These sometimes are described as
implementation details, sometimes as extensions of Eclat,
and sometimes as new algorithms.</p>
      <p>Algorithm 1 Basic Eclat algorithm.
input: alphabet A with ordering ≤ ,
multiset T ⊆ P (A) of sets of items,
minimum support value minsup ∈ N.
output: set F of frequent itemsets and their support counts.</p>
      <p>F := {(∅, |T |)}.</p>
      <p>C∅ := {(x, T ({x})) | x ∈ A}.</p>
      <p>C∅0 := freq(C∅) := {(x, Tx) | |(Txx, |T≥x) m∈inCs∅u,p}.</p>
      <p>F := {∅}.
addFrequentSupersets(∅, C0 ).</p>
      <p>∅
function addFrequentSupersets():
input: frequent itemset p ∈ P(A) called prefix,
incidence matrix C of frequent 1-item-extensions of p.
output: add all frequent extensions of p to global variable
F .
for (x, Tx) ∈ C do
q := p ∪ {x}.</p>
      <p>Cq := {(y, Tx ∩ Ty) | (y, Ty) ∈ C, y &gt; x}.</p>
      <p>Cq0 := freq(Cq) := {(y, Ty) | (y, Ty) ∈ Cq,
|Ty| ≥ minsup}.
if Cq0 6= ∅ then</p>
      <p>addFrequentSupersets(q, Cq0 ).
end if</p>
      <p>F := F ∪ {(q, |Tx|)}.</p>
      <p>end for</p>
    </sec>
    <sec id="sec-3">
      <title>3.1. Transaction Recoding</title>
      <p>
        Before the first incidence matrix C∅ is built, it is
usually beneficial 1) to remove infrequent items from the
transactions, 2) to recode the items in the transaction database
s.t. they are sorted in a specific order, and 3) to sort the
transaction in that order. As implementations usually use
the natural order on item codes, item recoding affects the
order in which candidates are checked. There are several
recodings used in the literature and in existing
implementations of Eclat and other algorithms as Apriori (see e.g.,
[
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]). The most common codings are coding by increasing
frequency and coding by decreasing frequency. For Eclat
in most cases recoding items by increasing frequency turns
out to give better performance. Increasing frequency means
that the length of the rows of the (initial) incidence matrix
C∅ grows with increasing index. Let there be f1 frequent
items. As a row at index i is used f1 − i times at left side
(x in the formulas above) and i − 1 times at right side (y
in the formulas above) of the intersection operator, the
order of rows is not important from the point of view of total
usage in intersections. But assume the data is gray, i.e., the
mining task does not contain any surprising associative
patterns, where surprisingness of an itemset X is defined in
terms of lift:
lift(X) :=
sup(X) / Y sup({x}) /
|T | |T |
x∈X
lift(X) = 1 means that X is found in the data exactly
as often as expected from the frequencies of its items,
lift(X) &gt; 1 or lift(X) &lt; 1 means that there is an
associative or dissociative effect, i.e., it is observed more often
or less often than expected. Now, if lift ≈ 1 for all or most
patterns, as it is typically for benchmark datasets, then the
best chances we have to identify a pattern X as infrequent
before we actually have counted its support, is to check its
subpattern made up from its least frequent items. And that
is exactly what recoding by increasing frequency does.
3.2. Types of Incidence Structures: Covers vs.
Diffsets
      </p>
      <p>
        One of the major early improvements of Eclat algorithms
has been the replacement of item covers in incidence
matrices by their relative complement in its superpattern, so
called diffsets, see [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]. Instead of keeping track of T (q)
for a pattern q, we keep track of T (p) \ T (q) for its
superpattern p, i.e., q := p ∪ {x} for an item x &gt; max(p).
T (p)\T (q) are those transactions we loose if we extend p to
q, i.e., its additional defect relative to p. From an incidence
matrix C of item covers and one of the 1-item-extensions
(x, Tx) ∈ C of its prefix we can derive the incidence matrix
D of item defects of this extension by
      </p>
      <p>Dx := {(y, Tx \ Ty) | (y, Ty) ∈ C, y &gt; x}
From an incidence matrix D of item defects and one of its
1-item-extensions (x, Tx) ∈ D of its prefix we can derive
the incidence matrix Dx of item defects of this extension by</p>
      <p>Dx := {(y, Ty \ Tx) | (y, Ty) ∈ D, y &gt; x}
If we expand first by x and then by y in the second step,
we loose transactions that not contain y unless we have lost
them before as they did not contain x.</p>
      <p>Defects computed from covers may have at most size
maxdefp := |T (p)| −
minsup,
those computed recursively from other defects at most size
maxdefp∪{x} := maxdefp −|T x|
1-item-extensions exceeding that maximal defect are
removed by a filter step:
freq(D) := {(x, Tx) | (x, Tx) ∈ C, |Tx| ≤
maxdef}.</p>
      <p>Computing intersections of covers or set differences
for defects are computationally equivalent complex tasks.
Thus, the usage of defects can improve performance only
by leading to smaller incidence matrices. For dense datasets
where covers overlap considerably, intersection reduces the
size of the incidence matrix only slowly, while defects cut
down considerably. On the other side, for sparse data using
defects may deteriorate the performance. – Common items
in covers also can be removed by omitting equisupport
extensions (see section 3.5).</p>
      <p>While there is an efficient transition from covers to
defects as given by the formula above, the reverse transition
from defects to covers seems hard to perform efficiently as
all defects on the path to the root of the search tree would
have to be accumulated.</p>
      <p>
        Regardless which type of incidence matrix is used, it can
be stored as sparse matrix (i.e., as list of lists as discussed
so far) or as dense (bit)matrix (used e.g, by [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]).
      </p>
      <p>
        A third alternative for keeping track of item-transaction
incidences is not to store item covers as a set of incident
transaction IDs per 1-item-extension, but to store all
transactions T (p) that contain a given prefix p in a trie (plus
some index structure, known as frequent pattern tree and
first used in fp-growth; see [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]). Due to time restrictions,
we will not pursue this alternative further here.
3.3. Incidence Matrix Derivation
      </p>
      <p>For both incidence matrices, covers and defects, two
different ways of computing the operator that derives an
incidence matrix from a given incidence matrix recursively, i.e.,
intersection and set difference, respectively, can be chosen.
The straightforward way is to implement both operators as
set operators operating on the sets of transaction IDs.</p>
      <p>
        Alternatively, intersection and difference of several sets
Ty, y &gt; x of transactions by another set Tx of transactions
also can be computed in parallel using the original
transaction database by counting in IDs of matching transactions
(called occurrence deliver in [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]). To compute Ty0 := Ty∩Tx
for several y &gt; x one computes
∀T ∈ Tx∀y ∈ T : Ty0 := Ty ∪ {T }.
      </p>
      <p>0
Similar, to compute Ty0 := Tx \ Ty for several y &gt; x one
computes
∀T ∈ Tx∀y 6∈ T : Ty0 := Ty ∪ {T }.</p>
      <p>0
3.4. Initial Incidence Matrix</p>
      <p>Basic Eclat first builds the incidence matrix C∅ of single
item covers as initial incidence matrix and then recursively
derives incidence matrices Cp of covers of increasing
prefixes p or Dp of defects.</p>
      <p>Obviously, one also can start with D∅, the matrix of item
cover complements. This seems only useful for very dense
datasets as it basically inverts the encoding of item
occurrence and non-occurrence (dualization).</p>
      <p>It seems more interesting to start already with incidence
matrices for 1-item-prefixes, i.e., not to use Eclat
computation schemes for the computation of frequent pairs, but
count them directly from the transaction data. For
Apriori this is a standard procedure. The cover incidence
matrix Cx = {(y, Ty)} for an frequent item x, i.e., Ty =
T ({x}) ∩ T ({y}), is computed as follows:</p>
      <p>∀T ∈ T : if x ∈ T : ∀y ∈ T, y &gt; x : Ty := Ty ∪ {T }.
The test for x ∈ T looks worse than it is in practice: if
transactions are sorted, items x are processed in increasing
order, and deleted from the transaction database after
computation of Cx, then if x is contained in a transaction T it
has to be its first item.</p>
      <p>Similarly, a defect incidence matrix Dx = {(y, Ty)} for
a frequent item x, i.e., Ty = T ({x}) \ T ({y}), can be
computed directly from the transaction database by
∀T ∈ T : if x ∈ T : ∀y 6∈ T, y &gt; x : Ty := Ty ∪ {T }.</p>
      <p>If Cx or Dx is computed directly from the transaction
database, then it has to be filtered afterwards to remove
infrequent extensions. An additional pass over T in advance
can count pair frequencies for all x, y in parallel, so that
unnecessary creation of covers or defects of infrequent
extensions can be avoided.
3.5. Omission of Equisupport Extensions</p>
      <p>Whenever an extension x has the same support as its
prefix p, it is contained in the closure T T (p) of the prefix.
That means that one can add any such equisupport extension
to any extension of p without changing its support; thus, one
can omit to explicitly check its extensions. Equisupport
extensions can be filtered out and kept in a separate list E for
the active branch: whenever an itemset X is output, all its
2|E| supersets X0 ⊆ X ∪ E are also output.</p>
      <p>Omission of equisupport extensions is extremely cheap
to implement as it can be included in the filtering step that
has to check support values anyway. For dense datasets with
many equisupport extensions, the number of candidates that
have to be checked and accordingly the runtime can be
reduced drastically.
3.6. Interleaving Incidence Matrix Computation
and Filtering</p>
      <p>When the intersection Tx ∩ Ty of two sets of transaction
IDs is computed, we are interested in the result of this
computation only if it is at least of size minsup, as otherwise it
is filtered out in the next step. As the sets of transactions are
sorted, intersections are computed by iterating over the lists
of transaction IDs and comparing items. Once one of the
tails of the lists to intersect is shorter than minsup minus
the length of the intersection so far, we can stop and drop
that candidate, as it never can become frequent. – For set
difference of maximal length maxdef a completely
analogous procedure can be used.
3.7. Omission of Final Incidence Matrix Derivation</p>
      <p>Finally, once the incidence matrix has only two rows,
the result of the next incidence matrix derivation will be an
incidence matrix with a single row. As this is only checked
for frequency, but its items are not used any further, we can
omit to generate the list of transaction IDs and just count its
length.
3.8. IO</p>
      <p>
        So far we have investigated features that are specific to
Eclat and the frequent itemset mining problem. Though
these specific algorithmic features are what should be of
primary interest, we noticed in our experiments, that
often different IO mechanism dominate runtime behavior. At
least three output schemes are implemented in several of
the algorithms available: IO using C++ streams, IO using
printf, and IO using handcrafted rendering of integer
itemsets to a char buffer and writing that buffer to files using
low-level fwrite (for the latter see e.g., the
implementation of lcm, [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]). Handcrafted rendering of itemsets to char
buffers is by far the fastest method; especially for low
support values, when huge numbers of patterns are output, the
runtime penalty from slower output mechanisms cannot be
compensated by better mining mechanisms whatsoever.
      </p>
    </sec>
    <sec id="sec-4">
      <title>4. Evaluation</title>
      <p>By evaluating different features of Eclat we wanted to
answer two questions:
1. What features will make Eclat run fastest? Especially,
what is its marginal runtime improvement of each
feature in a sophisticated Eclat implementation?
2. Is Eclat competitive compared with more complex
algorithms?</p>
      <p>To answer the question about the runtime improvement
of the different features, we implemented a modular
version of Eclat in C++ (basically mostly plain C) that allows
the flexible inclusion or exclusion of different algorithmic
features. At the time of writing the following features are
implemented: the incidence structure types covers and
diffsets (COV, DIFF), transaction recoding (none, decreasing,
increasing; NREC, RECDEC, RECINC), omission of
equisupport extensions (NEE), interleaving incidence matrix
computation and filtering (IFILT), and omission of final
incidence matrix (NFIN). As initial incidence matrix alway
covers of frequent 1-itemsets (C∅) was used.</p>
      <p>To measure the marginal runtime improvement of a
feature we configured a sophisticated Eclat algorithm with
all features turned on (SOPH:= DIFF, RECINC, NEE+,
IFILT+, NFIN+) and additionally for each feature an
Eclat algorithm derived from SOPH by omitting this
feature (SOPH-DIFF, SOPH-RECINC (decreasing encoding),
SOPH-REC (no recoding at all), SOPH-NEE+,
SOPHIFILT+, SOPH-NFIN+).</p>
      <p>
        We used several of the data sets and mining
tasks that have been used in the FIMI-03 workshop
([
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]): accidents, chess, connect, kosarak, mushroom,
pumsb, pumsbstar, retail, T10I5N1KP5KC0.25D200K,
T20I10N1KP5KC0.25D200K, and
T30I15N1KP5KC0.25D200K. All experiments are ran on a standard Linux box
(P4/2MHz, 1.5GB RAM, SuSE 9.0). Jobs were killed if
they run more than 1000 seconds and the corresponding
datapoint is missing in the charts.
      </p>
      <p>A sample from the results of these experiments can
be seen in fig. 1 (the remaining charts can be found
at
http://www.informatik.uni-freiburg.de/cgnm/papers/fimi04). One can see some common behavior across
datasets and mining tasks:
• For dense mining tasks like accidents, chess, etc.</p>
      <p>SOPH is the best configuration.
• For sparse mining tasks like retail,
T20I10N1KP5KC0-25D200K etc. SOPH-diff is
the best configuration, i.e., using defects harms
performance here – both effects are rather distinct.
• Recoding is important and shows a huge variety w.r.t.
runtime: compare e.g., decreasing and no encoding for
connect: the natural encoding is not much worse than
decreasing encoding, but the curve for increasing
encoding shows what harm the wrong encoding can do:
note that the natural encoding is close to optimal only
by mere chance and could be anywhere between
increasing and decreasing!
• Omitting equisupport extensions also shows a clear
benefit for most mining tasks, with exception for
mushroom.
• Compared with other features, the impact of the
features IFILT and NFIN is neglectible.</p>
      <p>
        To answer the second question about competitiveness of
Eclat compared with more advanced frequent pattern
mining algorithms we have chosen the four best-performing
algorithms from the FIMI-03 workshop: patricia, kdci, lcm,
and fpgrowth* (see [
        <xref ref-type="bibr" rid="ref6 ref7 ref8 ref9">7, 6, 9, 8</xref>
        ], for the implementations
and [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] for a performance evaluation of these algorithms,
respectively).
      </p>
      <p>Again, a sample from the results of these experiments
can be seen in fig. 2 (the remaining charts also can
be found at
http://www.informatik.uni-freiburg.de/cgnm/papers/fimi04). For several datasets (chess, connect,
mushroom, pumsb, and – not shown – pumsbstar),
Eclat-SOPH is faster than all other algorithms. For
some datasets it is faster for high minimum support
values, but beaten by fpgrowth* when support values
get smaller (accidents, T30I15N1KP5KC0-25D200K) and
for some datasets its performance is really poor (retail,
T20I10N1KP5KC0-25D200K, and – not shown – kosarak
and T10I5N1KP5KC0.25D200K). We can draw two
conclusions from this observations: 1) at least for dense
datasets, Eclat-SOPH is faster than all its competitors, 2)
for sparse datasets, Eclat-SOPH is not suitable. Recalling
our discussion on the potential of using defects instead of
covers and on starting with frequent 2-itemsets instead of
with frequent 1-itemsets, the latter conclusion is not very
surprising.</p>
    </sec>
    <sec id="sec-5">
      <title>5. Outlook</title>
      <p>There are at least four more features we do not have
investigated yet: using tries to store the transaction covers,
the method to compute the initial incidence matrix,
pruning, and memory management. Our further research will
try to address questions about the impact of these features.</p>
      <p>This update of optimization for dense datasets has to
be complemented with research in performance drivers for
sparse datasets. As can be seen from our results, Eclat
seems not suited well for that task. Though using covers
instead of defects improves performance, it still is not
competitive with other algorithms in the field.</p>
      <p>Furthermore, results for dense datasets will have to be
compared with that of the next generation of mining
algorithms we expect as outcome of FIMI’04 and
eventually new features of these algorithms have to be integrated
in Eclat. We expect both, that Eclat is clearly beaten at
FIMI’04 as well that it will be not too hard to identify the
relevant features and integrate them in Eclat.
eclat−SOPH
eclat−SOPH−diff
eclat−SOPH−nee
eclat−SOPH−rec
eclat−SOPH−recinc
eclat−SOPH−ifilt
eclat−SOPH−nfin
●
0.8
eclat−SOPH
eclat−SOPH−diff
eclat−SOPH−nee
eclat−SOPH−rec
eclat−SOPH−recinc
eclat−SOPH−ifilt
eclat−SOPH−nfin
0.4 0.6
minimum support
0.10 0.15
minimum support
10^0.5
10^0.0
10^−0.5
●
●</p>
      <p>●
●
●
●
●</p>
      <p>pumsb
●●
●●
●
●●
●●
●
●
●●
0.2
10^−1.0
10^1.5
]
s
[
e
m
it
n
u
r10^1.0
10^0.5
10^0.0
10^2.0
● ●
0.002
0.004 0.006
minimum support
0.008
0.010
0.01
0.04</p>
      <p>0.05
0.02 0.03
minimum support
chess
0.3
0.4
0.5</p>
      <p>0.6 0.7
minimum support
0.9
0.6
0.7</p>
      <p>0.8
minimum support
retail
●</p>
      <p>●●
●
●
eclat−SOPH
eclat−SOPH−diff
eclat−SOPH−nee
eclat−SOPH−rec
eclat−SOPH−recinc
eclat−SOPH−ifilt
eclat−SOPH−nfin
●
0.8
eclat−SOPH
eclat−SOPH−diff
eclat−SOPH−nee
eclat−SOPH−rec
eclat−SOPH−recinc
eclat−SOPH−ifilt
eclat−SOPH−nfin
●
●
●
●
●
0.9
10^0.5
chess
0.4 0.6
minimum support
pumsb
0.2
0.8
0.3
0.4
0.8
0.9
0.6
patricia
kdci
lcm
fpgrowthpp
eclat−lst
●
●
0.7</p>
      <p>0.8
minimum support</p>
      <p>0.9
retail
patricia
kdci
lcm
fpgrowthpp
eclat−lst
10^3
10^2
]
s
[
e
m
it
n
u
r
10^1
10^0
10^1.0
10^0.5
10^−0.5
10^−1.0
10^2.0
10^1.5
]
s
[
e
m
i
tn10^1.0
u
r
10^0.5
patricia
kdci
lcm
fpgrowthpp
eclat−lst
patricia
kdci
lcm
fpgrowthpp
eclat−lst
patricia
kdci
lcm
fpgrowthpp
eclat−lst
●
●
●
10^2
10^1
]
s
[
e
im10^0
t
n
u
r
10^−1
10^−2
10^2.0
10^1.5
10^1.0
]
s
[
e
m
it
run10^0.5
10^0.0
10^−0.5
10^2.0
10^1.5
10^1.0
]
s
[
e
m
it
n
ru10^0.5
10^0.0
10^−0.5
0.05
0.10 0.15
minimum support
0.20
0.6
0.7</p>
      <p>0.8
minimum support
0.9
0.0002
0.0004 0.0006
minimum support
0.0008
0.0010
10^0.5
10^0.0
patricia
kdci
lcm
fpgrowthpp
eclat−lst
●
10^1.5</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>R.</given-names>
            <surname>Agrawal</surname>
          </string-name>
          and
          <string-name>
            <given-names>R.</given-names>
            <surname>Srikant</surname>
          </string-name>
          .
          <article-title>Fast algorithms for mining association rules</article-title>
          . In J. Bocca,
          <string-name>
            <given-names>M.</given-names>
            <surname>Jarke</surname>
          </string-name>
          , and C. Zaniolo, editors,
          <source>Proceedings of the 20th International Conference on Very Large Data Bases (VLDB'94)</source>
          , Santiago de Chile,
          <source>September 12-15</source>
          , pages
          <fpage>487</fpage>
          -
          <lpage>499</lpage>
          . Morgan Kaufmann,
          <year>1994</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>C.</given-names>
            <surname>Borgelt</surname>
          </string-name>
          .
          <article-title>Efficient implementations of apriori and eclat</article-title>
          .
          <source>In Goethals and Zaki [4].</source>
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>B.</given-names>
            <surname>Goethals</surname>
          </string-name>
          and
          <string-name>
            <given-names>M. J.</given-names>
            <surname>Zaki</surname>
          </string-name>
          .
          <article-title>Advances in frequent itemset mining implementations: Introduction to fimi03</article-title>
          .
          <source>In Proceedings of the IEEE ICDM Workshop on Frequent Itemset Mining Implementations</source>
          , Melbourne, Florida, USA, November
          <volume>19</volume>
          [4].
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>B.</given-names>
            <surname>Goethals</surname>
          </string-name>
          and M. J. Zaki, editors.
          <source>Proceedings of the IEEE ICDM Workshop on Frequent Itemset Mining Implementations</source>
          , Melbourne, Florida, USA, November
          <volume>19</volume>
          ,
          <year>2003</year>
          .
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>J.</given-names>
            <surname>Han</surname>
          </string-name>
          ,
          <string-name>
            <surname>J</surname>
          </string-name>
          . Pei, and
          <string-name>
            <given-names>Y.</given-names>
            <surname>Yin</surname>
          </string-name>
          .
          <article-title>Mining frequent patterns without candidate generation</article-title>
          . In W. Chen,
          <string-name>
            <given-names>J. F.</given-names>
            <surname>Naughton</surname>
          </string-name>
          , and P. A. Bernstein, editors,
          <source>Proceedings of the 2000 ACM SIGMOD International Conference on Management of Data</source>
          , pages
          <fpage>1</fpage>
          -
          <lpage>12</lpage>
          . ACM Press,
          <year>2000</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>S.</given-names>
            <surname>Orlando</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Lucchese</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Palmerini</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Perego</surname>
          </string-name>
          , and
          <string-name>
            <given-names>F.</given-names>
            <surname>Silvestri</surname>
          </string-name>
          .
          <article-title>kdci: a multi-strategy algorithm for mining frequent sets</article-title>
          .
          <source>In Goethals and Zaki [4].</source>
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>A.</given-names>
            <surname>Pietracaprina</surname>
          </string-name>
          and
          <string-name>
            <given-names>D.</given-names>
            <surname>Zandolin</surname>
          </string-name>
          .
          <article-title>Mining frequent itemsets using patricia tries</article-title>
          .
          <source>In Goethals and Zaki [4].</source>
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <surname>G. sta Grahne</surname>
          </string-name>
          and
          <string-name>
            <given-names>J.</given-names>
            <surname>Zhu</surname>
          </string-name>
          .
          <article-title>Efficiently using prefix-trees in mining frequent itemsets</article-title>
          .
          <source>In Goethals and Zaki [4].</source>
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>T.</given-names>
            <surname>Uno</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Asai</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Uchida</surname>
          </string-name>
          , and
          <string-name>
            <given-names>H.</given-names>
            <surname>Arimura</surname>
          </string-name>
          . Lcm:
          <article-title>An efficient algorithm for enumerating frequent closed item sets</article-title>
          .
          <source>In Goethals and Zaki [4].</source>
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>M. J.</given-names>
            <surname>Zaki</surname>
          </string-name>
          .
          <article-title>Scalable algorithms for association mining</article-title>
          .
          <source>IEEE Transactions on Knowledge and Data Engineering</source>
          ,
          <volume>12</volume>
          (
          <issue>3</issue>
          ):
          <fpage>372</fpage>
          -
          <lpage>390</lpage>
          ,
          <year>2000</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>M. J.</given-names>
            <surname>Zaki</surname>
          </string-name>
          and
          <string-name>
            <given-names>K.</given-names>
            <surname>Gouda</surname>
          </string-name>
          .
          <article-title>Fast vertical mining using diffsets</article-title>
          .
          <source>Technical report, RPI</source>
          ,
          <year>2001</year>
          .
          <source>Tech. Report. 01-1.</source>
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>