1 package org.thegalactic.rule; 2 3 /* 4 * AssociationRule.java 5 * 6 * Copyright: 2010-2015 Karell Bertet, France 7 * Copyright: 2015-2016 The Galactic Organization, France 8 * 9 * License: http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html CeCILL-B license 10 * 11 * This file is part of java-lattices. 12 * You can redistribute it and/or modify it under the terms of the CeCILL-B license. 13 */ 14 import java.util.SortedSet; 15 16 /** 17 * This class gives a representation for an association rule. 18 * 19 * A rule is composed of a premise and a conclusion that are comparable sets, 20 * i.e. sets of elements that can be sorted by the lectic order defined by class 21 * `ComparableSet`. An association rule extends regular rule with the notion of 22 * support and confidence. The confidence represents the number of observations 23 * for which the rule is true. The support represents the minimum number of 24 * observations for the rule to be relevant. 25 * 26 * @todo do we use composition over inheritance? 27 */ 28 public class AssociationRule extends Rule { 29 30 /* ------------- FIELDS ------------------ */ 31 /** 32 * The confidence of the rule. 33 */ 34 private double confidence; 35 36 /** 37 * The support of the rule. 38 */ 39 private double support; 40 41 /* ------------- CONSTRUCTORS ------------------ */ 42 /** 43 * Constructs a new empty Rule with a empty premise and an empty conclusion. 44 */ 45 public AssociationRule() { 46 super(); 47 } 48 49 /** 50 * Constructs a new Rule with the premise and the conclusion given in 51 * parameters. 52 * 53 * @param premise a set of indexed elements 54 * @param conclusion a set of indexed elements 55 */ 56 public AssociationRule(final SortedSet<Comparable> premise, final SortedSet<Comparable> conclusion) { 57 super(premise, conclusion); 58 } 59 60 /** 61 * Constructs a new Rule with the premise, the conclusion, the confidence 62 * and the support given in parameters. 63 * 64 * @param premise a set of indexed elements 65 * @param conclusion a set of indexed elements 66 * @param support a support value 67 * @param confidence a confidence value 68 */ 69 public AssociationRule( 70 final SortedSet<Comparable> premise, 71 final SortedSet<Comparable> conclusion, 72 final double support, 73 final double confidence 74 ) { 75 super(premise, conclusion); 76 this.support = support; 77 this.confidence = confidence; 78 } 79 80 /* ------------- ACCESSORS METHODS ------------------ */ 81 /** 82 * Returns the confidence value of the rule. 83 * 84 * @return confidence value 85 */ 86 public final double getConfidence() { 87 return this.confidence; 88 } 89 90 /** 91 * Returns the support value of the rule. 92 * 93 * @return support value 94 */ 95 public final double getSupport() { 96 return this.support; 97 } 98 99 /* ------------- MODIFICATION METHODS ------------------ */ 100 /** 101 * Set the confidence value of the rule. 102 * 103 * @param confidence the confidence value 104 */ 105 public final void setConfidence(final double confidence) { 106 this.confidence = confidence; 107 } 108 109 /** 110 * Set the support value of the rule. 111 * 112 * @param support the support value 113 */ 114 public final void setSupport(final double support) { 115 this.support = support; 116 } 117 118 /* ------------- OVERRIDEN METHODS ------------------ */ 119 /** 120 * Returns a String representation of this component. 121 * 122 * The following format is used: 123 * 124 * ~~~ 125 * [premise] -> [conclusion] : s:support/c:confidence 126 * ~~~ 127 * 128 * @return a string made of premises followed by -> and the conclusions. 129 */ 130 @Override 131 public String toString() { 132 final StringBuilder builder = new StringBuilder(); 133 builder.append(super.toString()).append(" : s:").append(this.support).append("/c:").append(this.confidence); 134 return builder.toString(); 135 } 136 }