@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<AprioriResult>
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.
Modifier and Type | Class and Description |
---|---|
static class |
APRIORI.Parameterizer
Parameterization class.
|
Modifier and Type | Field and Description |
---|---|
private static Logging |
logger
The logger for this class.
|
private double |
minfreq
Holds the value of
MINFREQ_ID . |
static OptionID |
MINFREQ_ID
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_ID . |
static OptionID |
MINSUPP_ID
Parameter to specify the threshold for minimum support as minimally
required number of transactions, must be an integer equal to or greater
than 0.
|
Constructor and Description |
---|
APRIORI(double minfreq)
Constructor with minimum frequency.
|
APRIORI(int minsupp)
Constructor with minimum support.
|
Modifier and Type | Method and Description |
---|---|
protected BitSet[] |
frequentItemsets(Map<BitSet,Integer> support,
BitSet[] candidates,
Relation<BitVector> database)
Returns the frequent BitSets out of the given BitSets with respect to the
given database.
|
TypeInformation[] |
getInputTypeRestriction()
Get the input type restriction used for negotiating the data query.
|
protected Logging |
getLogger()
Get the (STATIC) logger for this class.
|
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.
|
AprioriResult |
run(Database database,
Relation<BitVector> relation)
Performs the APRIORI algorithm on the given database.
|
makeParameterDistanceFunction, run
private static final Logging logger
public static final OptionID MINFREQ_ID
MINSUPP_ID
).public static final OptionID MINSUPP_ID
MINFREQ_ID
- setting
MINSUPP_ID
is slightly preferable over setting MINFREQ_ID
in terms of efficiency.private double minfreq
MINFREQ_ID
.private int minsupp
MINSUPP_ID
.public APRIORI(double minfreq)
minfreq
- Minimum frequencypublic APRIORI(int minsupp)
minsupp
- Minimum supportpublic AprioriResult run(Database database, Relation<BitVector> relation) throws IllegalStateException
database
- the Database to run APRIORI onrelation
- the Relation to processIllegalStateException
protected BitSet[] prune(Map<BitSet,Integer> support, BitSet[] candidates, int size)
support
- Support mapcandidates
- the candidates to be prunedsize
- size of the databaseprotected BitSet[] join(BitSet[] frequentItemsets)
frequentItemsets
- the BitSets to be joinedprotected BitSet[] frequentItemsets(Map<BitSet,Integer> support, BitSet[] candidates, Relation<BitVector> database)
support
- Support map.candidates
- the candidates to be evaluateddatabase
- the database to evaluate the candidates onpublic TypeInformation[] getInputTypeRestriction()
AbstractAlgorithm
getInputTypeRestriction
in interface Algorithm
getInputTypeRestriction
in class AbstractAlgorithm<AprioriResult>
protected Logging getLogger()
AbstractAlgorithm
getLogger
in class AbstractAlgorithm<AprioriResult>