Environment for
DeveLoping
KDD-Applications
Supported by Index-Structures

de.lmu.ifi.dbs.elki.algorithm
Class APRIORI

java.lang.Object
  extended by de.lmu.ifi.dbs.elki.logging.AbstractLoggable
      extended by de.lmu.ifi.dbs.elki.algorithm.AbstractAlgorithm<BitVector,AprioriResult>
          extended by de.lmu.ifi.dbs.elki.algorithm.APRIORI
All Implemented Interfaces:
Algorithm<BitVector,AprioriResult>, Parameterizable

@Title(value="APRIORI: Algorithm for Mining Association Rules")
@Description(value="Searches for frequent itemsets")
@Reference(authors="R. Agrawal, R. Srikant",
           title="Fast Algorithms for Mining Association Rules in Large Databases",
           booktitle="Proc. 20th Int. Conf. on Very Large Data Bases (VLDB \'94), Santiago de Chile, Chile 1994",
           url="http://www.acm.org/sigmod/vldb/conf/1994/P487.PDF")
public class APRIORI
extends AbstractAlgorithm<BitVector,AprioriResult>

Provides the APRIORI algorithm for Mining Association Rules.

Reference:
R. Agrawal, R. Srikant: Fast Algorithms for Mining Association Rules in Large Databases.
In Proc. 20th Int. Conf. on Very Large Data Bases (VLDB '94), Santiago de Chile, Chile 1994.

Author:
Arthur Zimek

Field Summary
private  double minfreq
          Holds the value of MINFREQ_PARAM.
static OptionID MINFREQ_ID
          OptionID for MINFREQ_PARAM
private  DoubleParameter MINFREQ_PARAM
          Optional parameter to specify the threshold for minimum frequency, must be a double greater than or equal to 0 and less than or equal to 1.
private  int minsupp
          Holds the value of MINSUPP_PARAM.
static OptionID MINSUPP_ID
          OptionID for MINSUPP_PARAM
private  IntParameter MINSUPP_PARAM
          Parameter to specify the threshold for minimum support as minimally required number of transactions, must be an integer equal to or greater than 0.
 
Fields inherited from class de.lmu.ifi.dbs.elki.logging.AbstractLoggable
debug, logger
 
Constructor Summary
APRIORI(Parameterization config)
          Constructor, adhering to Parameterizable
 
Method Summary
protected  BitSet[] frequentItemsets(Map<BitSet,Integer> support, BitSet[] candidates, Database<BitVector> database)
          Returns the frequent BitSets out of the given BitSets with respect to the given database.
protected  BitSet[] join(BitSet[] frequentItemsets)
          Returns a set of BitSets generated by joining pairs of given BitSets (relying on the given BitSets being sorted), increasing the length by 1.
protected  BitSet[] prune(Map<BitSet,Integer> support, BitSet[] candidates, int size)
          Prunes a given set of candidates to keep only those BitSets where all subsets of bits flipping one bit are frequent already.
protected  AprioriResult runInTime(Database<BitVector> database)
          Performs the APRIORI algorithm on the given database.
 
Methods inherited from class de.lmu.ifi.dbs.elki.algorithm.AbstractAlgorithm
isTime, isVerbose, run, setTime, setVerbose
 
Methods inherited from class de.lmu.ifi.dbs.elki.logging.AbstractLoggable
debugFine, debugFiner, debugFinest, exception, progress, verbose, warning
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

MINFREQ_ID

public static final OptionID MINFREQ_ID
OptionID for MINFREQ_PARAM


MINFREQ_PARAM

private final DoubleParameter MINFREQ_PARAM
Optional parameter to specify the threshold for minimum frequency, must be a double greater than or equal to 0 and less than or equal to 1. Alternatively to parameter MINSUPP_PARAM).

Key: -apriori.minfreq


minfreq

private double minfreq
Holds the value of MINFREQ_PARAM.


MINSUPP_ID

public static final OptionID MINSUPP_ID
OptionID for MINSUPP_PARAM


MINSUPP_PARAM

private final IntParameter MINSUPP_PARAM
Parameter to specify the threshold for minimum support as minimally required number of transactions, must be an integer equal to or greater than 0. Alternatively to parameter MINFREQ_PARAM - setting MINSUPP_PARAM is slightly preferable over setting MINFREQ_PARAM in terms of efficiency.

Key: -apriori.minsupp


minsupp

private int minsupp
Holds the value of MINSUPP_PARAM.

Constructor Detail

APRIORI

public APRIORI(Parameterization config)
Constructor, adhering to Parameterizable

Parameters:
config - Parameterization
Method Detail

runInTime

protected AprioriResult runInTime(Database<BitVector> database)
                           throws IllegalStateException
Performs the APRIORI algorithm on the given database.

Specified by:
runInTime in class AbstractAlgorithm<BitVector,AprioriResult>
Parameters:
database - the Database to run APRIORI on
Returns:
the AprioriResult learned by this APRIORI
Throws:
IllegalStateException - if the algorithm has not been initialized properly (e.g. the setParameters(String[]) method has been failed to be called).

prune

protected BitSet[] prune(Map<BitSet,Integer> support,
                         BitSet[] candidates,
                         int size)
Prunes a given set of candidates to keep only those BitSets where all subsets of bits flipping one bit are frequent already.

Parameters:
support - Support map
candidates - the candidates to be pruned
size - size of the database
Returns:
a set of BitSets where all subsets of bits flipping one bit are frequent already

join

protected BitSet[] join(BitSet[] frequentItemsets)
Returns a set of BitSets generated by joining pairs of given BitSets (relying on the given BitSets being sorted), increasing the length by 1.

Parameters:
frequentItemsets - the BitSets to be joined
Returns:
a set of BitSets generated by joining pairs of given BitSets, increasing the length by 1

frequentItemsets

protected BitSet[] frequentItemsets(Map<BitSet,Integer> support,
                                    BitSet[] candidates,
                                    Database<BitVector> database)
Returns the frequent BitSets out of the given BitSets with respect to the given database.

Parameters:
support - Support map.
candidates - the candidates to be evaluated
database - the database to evaluate the candidates on
Returns:
the frequent BitSets out of the given BitSets with respect to the given database

Release 0.3 (2010-03-31_1612)