AssociationRule.java
package org.thegalactic.rule;
/*
* AssociationRule.java
*
* Copyright: 2010-2015 Karell Bertet, France
* Copyright: 2015-2016 The Galactic Organization, France
*
* License: http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html CeCILL-B license
*
* This file is part of java-lattices.
* You can redistribute it and/or modify it under the terms of the CeCILL-B license.
*/
import java.util.SortedSet;
/**
* This class gives a representation for an association rule.
*
* A rule is composed of a premise and a conclusion that are comparable sets,
* i.e. sets of elements that can be sorted by the lectic order defined by class
* `ComparableSet`. An association rule extends regular rule with the notion of
* support and confidence. The confidence represents the number of observations
* for which the rule is true. The support represents the minimum number of
* observations for the rule to be relevant.
*
* @todo do we use composition over inheritance?
*/
public class AssociationRule extends Rule {
/* ------------- FIELDS ------------------ */
/**
* The confidence of the rule.
*/
private double confidence;
/**
* The support of the rule.
*/
private double support;
/* ------------- CONSTRUCTORS ------------------ */
/**
* Constructs a new empty Rule with a empty premise and an empty conclusion.
*/
public AssociationRule() {
super();
}
/**
* Constructs a new Rule with the premise and the conclusion given in
* parameters.
*
* @param premise a set of indexed elements
* @param conclusion a set of indexed elements
*/
public AssociationRule(final SortedSet<Comparable> premise, final SortedSet<Comparable> conclusion) {
super(premise, conclusion);
}
/**
* Constructs a new Rule with the premise, the conclusion, the confidence
* and the support given in parameters.
*
* @param premise a set of indexed elements
* @param conclusion a set of indexed elements
* @param support a support value
* @param confidence a confidence value
*/
public AssociationRule(
final SortedSet<Comparable> premise,
final SortedSet<Comparable> conclusion,
final double support,
final double confidence
) {
super(premise, conclusion);
this.support = support;
this.confidence = confidence;
}
/* ------------- ACCESSORS METHODS ------------------ */
/**
* Returns the confidence value of the rule.
*
* @return confidence value
*/
public final double getConfidence() {
return this.confidence;
}
/**
* Returns the support value of the rule.
*
* @return support value
*/
public final double getSupport() {
return this.support;
}
/* ------------- MODIFICATION METHODS ------------------ */
/**
* Set the confidence value of the rule.
*
* @param confidence the confidence value
*/
public final void setConfidence(final double confidence) {
this.confidence = confidence;
}
/**
* Set the support value of the rule.
*
* @param support the support value
*/
public final void setSupport(final double support) {
this.support = support;
}
/* ------------- OVERRIDEN METHODS ------------------ */
/**
* Returns a String representation of this component.
*
* The following format is used:
*
* ~~~
* [premise] -> [conclusion] : s:support/c:confidence
* ~~~
*
* @return a string made of premises followed by -> and the conclusions.
*/
@Override
public String toString() {
final StringBuilder builder = new StringBuilder();
builder.append(super.toString()).append(" : s:").append(this.support).append("/c:").append(this.confidence);
return builder.toString();
}
}