com.rapidminer.operator.performance
Class SimpleCriterion

java.lang.Object
  extended by com.rapidminer.operator.AbstractIOObject
      extended by com.rapidminer.operator.ResultObjectAdapter
          extended by com.rapidminer.tools.math.Averagable
              extended by com.rapidminer.operator.performance.PerformanceCriterion
                  extended by com.rapidminer.operator.performance.MeasuredPerformance
                      extended by com.rapidminer.operator.performance.SimpleCriterion
All Implemented Interfaces:
IOObject, ResultObject, Readable, Reportable, LoggingHandler, java.io.Serializable, java.lang.Cloneable, java.lang.Comparable<PerformanceCriterion>
Direct Known Subclasses:
AbsoluteError, LenientRelativeError, RelativeError, RootMeanSquaredError, SimpleClassificationError, SquaredError, StrictRelativeError

public abstract class SimpleCriterion
extends MeasuredPerformance

Simple criteria are those which error can be counted for each example and can be averaged by the number of examples. Since errors should be minimized, the fitness is calculated as -1 multiplied by the the error. Subclasses might also want to implement the method transform(double) which applies a transformation on the value sum divided by the number of counted examples. This is for example usefull in case of root_means_squared error. All subclasses can be used for both regression and classification problems. In case of classification the confidence value for the desired true label is used as prediction.

Author:
Ingo Mierswa, Simon Fischer
See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class com.rapidminer.operator.AbstractIOObject
AbstractIOObject.InputStreamProvider
 
Constructor Summary
SimpleCriterion()
           
SimpleCriterion(SimpleCriterion sc)
           
 
Method Summary
 void buildSingleAverage(Averagable performance)
          This method should build the average of this and another averagable of the same type.
protected abstract  double countExample(double label, double predictedLabel)
          Subclasses must count the example and return the value to sum up.
 void countExample(Example example)
          Invokes countExample(double, double) and counts the deviation.
protected  void countExampleWithWeight(double deviation, double weight)
           
 double getExampleCount()
          Returns the number of data points which was used to determine the criterion value.
 double getFitness()
          Returns the fitness depending on the value.
 double getMaxFitness()
          Returns 0.0.
 double getMikroAverage()
          Returns the (current) value of the averagable (the average itself).
 double getMikroVariance()
          Returns the variance of the averagable.
 void startCounting(ExampleSet eset, boolean useExampleWeights)
          Initializes the criterion.
protected  double transform(double value)
          Simply returns the given value.
 
Methods inherited from class com.rapidminer.operator.performance.MeasuredPerformance
startCounting
 
Methods inherited from class com.rapidminer.operator.performance.PerformanceCriterion
compareTo, getDescription
 
Methods inherited from class com.rapidminer.tools.math.Averagable
buildAverage, clone, cloneAveragable, formatPercent, getAverage, getAverageCount, getExtension, getFileDescription, getMakroAverage, getMakroStandardDeviation, getMakroVariance, getMikroStandardDeviation, getName, getStandardDeviation, getVariance, isInTargetEncoding, setAverageCount, toString
 
Methods inherited from class com.rapidminer.operator.ResultObjectAdapter
addAction, getActions, getAnnotations, getResultIcon, log, log, logError, logNote, logWarning, toHTML, toResultString
 
Methods inherited from class com.rapidminer.operator.AbstractIOObject
appendOperatorToHistory, copy, getLog, getProcessingHistory, getSource, initWriting, read, read, read, read, setLoggingHandler, setSource, write
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface com.rapidminer.operator.IOObject
appendOperatorToHistory, copy, getLog, getProcessingHistory, getSource, setLoggingHandler, setSource, write
 

Constructor Detail

SimpleCriterion

public SimpleCriterion()

SimpleCriterion

public SimpleCriterion(SimpleCriterion sc)
Method Detail

getExampleCount

public double getExampleCount()
Description copied from class: PerformanceCriterion
Returns the number of data points which was used to determine the criterion value. If the criterion does not use example weights (or no weight was given) then the returned value will be an integer. Otherwise, the returned value is the sum of all example weights.

Specified by:
getExampleCount in class PerformanceCriterion

countExample

public void countExample(Example example)
Invokes countExample(double, double) and counts the deviation. In case of a nominal label the confidence of the desired true label is used as prediction. For regression problems the usual predicted label is used.

Specified by:
countExample in class MeasuredPerformance

countExample

protected abstract double countExample(double label,
                                       double predictedLabel)
Subclasses must count the example and return the value to sum up.


transform

protected double transform(double value)
Simply returns the given value. Subclasses might apply a transformation on the error sum divided by the number of examples.


countExampleWithWeight

protected void countExampleWithWeight(double deviation,
                                      double weight)

getMikroAverage

public double getMikroAverage()
Description copied from class: Averagable
Returns the (current) value of the averagable (the average itself). If the method Averagable.buildSingleAverage(Averagable) was used, this method must return the micro average from both (or more) criteria. This is usually achieved by correctly implementing Averagable.buildSingleAverage(Averagable).

Specified by:
getMikroAverage in class Averagable

getMikroVariance

public double getMikroVariance()
Description copied from class: Averagable
Returns the variance of the averagable. The returned value must not be negative. If the averagable does not define a variance this method should return Double.NaN.

Specified by:
getMikroVariance in class Averagable

startCounting

public void startCounting(ExampleSet eset,
                          boolean useExampleWeights)
                   throws OperatorException
Description copied from class: MeasuredPerformance
Initializes the criterion. The default implementation does nothing.

Overrides:
startCounting in class MeasuredPerformance
Throws:
OperatorException

getFitness

public double getFitness()
Description copied from class: PerformanceCriterion

Returns the fitness depending on the value. The fitness values will be used for all optimization purposes (feature space transformations, parameter optimizations...) and must always be maximized. Hence, if your criterion is better the smaller the value is you should return something like (-1 * value) or (1 / value).

Subclasses should use Averagable.getAverage() instead of Averagable.getMikroAverage() in this method since usually the makro average (if available) should be optmized instead of the mikro average. The mikro average should only be used in the (rare) cases where no makro average is available but this is automatically done returned by Averagable.getAverage() in these cases.

Specified by:
getFitness in class PerformanceCriterion

getMaxFitness

public double getMaxFitness()
Returns 0.0.

Overrides:
getMaxFitness in class PerformanceCriterion

buildSingleAverage

public void buildSingleAverage(Averagable performance)
Description copied from class: Averagable
This method should build the average of this and another averagable of the same type. The next invocation of Averagable.getMikroAverage() should return the average of this and the given averagable. Hence, this method is used to build the actual micro average value of two criteria. Please refer to SimpleCriterion for a simple implementation example.

Specified by:
buildSingleAverage in class Averagable


Copyright © 2001-2009 by Rapid-I