weka.classifiers
Class BVDecompose

java.lang.Object
  extended by weka.classifiers.BVDecompose
All Implemented Interfaces:
OptionHandler, RevisionHandler, TechnicalInformationHandler

public class BVDecompose
extends java.lang.Object
implements OptionHandler, TechnicalInformationHandler, RevisionHandler

Class for performing a Bias-Variance decomposition on any classifier using the method specified in:

Ron Kohavi, David H. Wolpert: Bias Plus Variance Decomposition for Zero-One Loss Functions. In: Machine Learning: Proceedings of the Thirteenth International Conference, 275-283, 1996.

BibTeX:

 @inproceedings{Kohavi1996,
    author = {Ron Kohavi and David H. Wolpert},
    booktitle = {Machine Learning: Proceedings of the Thirteenth International Conference},
    editor = {Lorenza Saitta},
    pages = {275-283},
    publisher = {Morgan Kaufmann},
    title = {Bias Plus Variance Decomposition for Zero-One Loss Functions},
    year = {1996},
    PS = {http://robotics.stanford.edu/\~ronnyk/biasVar.ps}
 }
 

Valid options are:

 -c <class index>
  The index of the class attribute.
  (default last)
 -t <name of arff file>
  The name of the arff file used for the decomposition.
 -T <training pool size>
  The number of instances placed in the training pool.
  The remainder will be used for testing. (default 100)
 -s <seed>
  The random number seed used.
 -x <num>
  The number of training repetitions used.
  (default 50)
 -D
  Turn on debugging output.
 -W <classifier class name>
  Full class name of the learner used in the decomposition.
  eg: weka.classifiers.bayes.NaiveBayes
 Options specific to learner weka.classifiers.rules.ZeroR:
 
 -D
  If set, classifier is run in debug mode and
  may output additional info to the console
Options after -- are passed to the designated sub-learner.

Version:
$Revision: 6041 $
Author:
Len Trigg ([email protected])

Constructor Summary
BVDecompose()
           
 
Method Summary
 void decompose()
          Carry out the bias-variance decomposition
 double getBias()
          Get the calculated bias squared
 Classifier getClassifier()
          Gets the name of the classifier being analysed
 int getClassIndex()
          Get the index (starting from 1) of the attribute used as the class.
 java.lang.String getDataFileName()
          Get the name of the data file used for the decomposition
 boolean getDebug()
          Gets whether debugging is turned on
 double getError()
          Get the calculated error rate
 java.lang.String[] getOptions()
          Gets the current settings of the CheckClassifier.
 java.lang.String getRevision()
          Returns the revision string.
 int getSeed()
          Gets the random number seed
 double getSigma()
          Get the calculated sigma squared
 TechnicalInformation getTechnicalInformation()
          Returns an instance of a TechnicalInformation object, containing detailed information about the technical background of this class, e.g., paper reference or book this class is based on.
 int getTrainIterations()
          Gets the maximum number of boost iterations
 int getTrainPoolSize()
          Get the number of instances in the training pool.
 double getVariance()
          Get the calculated variance
 java.lang.String globalInfo()
          Returns a string describing this object
 java.util.Enumeration listOptions()
          Returns an enumeration describing the available options.
static void main(java.lang.String[] args)
          Test method for this class
 void setClassifier(Classifier newClassifier)
          Set the classifiers being analysed
 void setClassIndex(int classIndex)
          Sets index of attribute to discretize on
 void setDataFileName(java.lang.String dataFileName)
          Sets the name of the data file used for the decomposition
 void setDebug(boolean debug)
          Sets debugging mode
 void setOptions(java.lang.String[] options)
          Parses a given list of options.
 void setSeed(int seed)
          Sets the random number seed
 void setTrainIterations(int trainIterations)
          Sets the maximum number of boost iterations
 void setTrainPoolSize(int numTrain)
          Set the number of instances in the training pool.
 java.lang.String toString()
          Returns description of the bias-variance decomposition results.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

BVDecompose

public BVDecompose()
Method Detail

globalInfo

public java.lang.String globalInfo()
Returns a string describing this object

Returns:
a description of the classifier suitable for displaying in the explorer/experimenter gui

getTechnicalInformation

public TechnicalInformation getTechnicalInformation()
Returns an instance of a TechnicalInformation object, containing detailed information about the technical background of this class, e.g., paper reference or book this class is based on.

Specified by:
getTechnicalInformation in interface TechnicalInformationHandler
Returns:
the technical information about this class

listOptions

public java.util.Enumeration listOptions()
Returns an enumeration describing the available options.

Specified by:
listOptions in interface OptionHandler
Returns:
an enumeration of all the available options.

setOptions

public void setOptions(java.lang.String[] options)
                throws java.lang.Exception
Parses a given list of options.

Valid options are:

 -c <class index>
  The index of the class attribute.
  (default last)
 -t <name of arff file>
  The name of the arff file used for the decomposition.
 -T <training pool size>
  The number of instances placed in the training pool.
  The remainder will be used for testing. (default 100)
 -s <seed>
  The random number seed used.
 -x <num>
  The number of training repetitions used.
  (default 50)
 -D
  Turn on debugging output.
 -W <classifier class name>
  Full class name of the learner used in the decomposition.
  eg: weka.classifiers.bayes.NaiveBayes
 Options specific to learner weka.classifiers.rules.ZeroR:
 
 -D
  If set, classifier is run in debug mode and
  may output additional info to the console
Options after -- are passed to the designated sub-learner.

Specified by:
setOptions in interface OptionHandler
Parameters:
options - the list of options as an array of strings
Throws:
java.lang.Exception - if an option is not supported

getOptions

public java.lang.String[] getOptions()
Gets the current settings of the CheckClassifier.

Specified by:
getOptions in interface OptionHandler
Returns:
an array of strings suitable for passing to setOptions

getTrainPoolSize

public int getTrainPoolSize()
Get the number of instances in the training pool.

Returns:
number of instances in the training pool.

setTrainPoolSize

public void setTrainPoolSize(int numTrain)
Set the number of instances in the training pool.

Parameters:
numTrain - number of instances in the training pool.

setClassifier

public void setClassifier(Classifier newClassifier)
Set the classifiers being analysed

Parameters:
newClassifier - the Classifier to use.

getClassifier

public Classifier getClassifier()
Gets the name of the classifier being analysed

Returns:
the classifier being analysed.

setDebug

public void setDebug(boolean debug)
Sets debugging mode

Parameters:
debug - true if debug output should be printed

getDebug

public boolean getDebug()
Gets whether debugging is turned on

Returns:
true if debugging output is on

setSeed

public void setSeed(int seed)
Sets the random number seed

Parameters:
seed - the random number seed

getSeed

public int getSeed()
Gets the random number seed

Returns:
the random number seed

setTrainIterations

public void setTrainIterations(int trainIterations)
Sets the maximum number of boost iterations

Parameters:
trainIterations - the number of boost iterations

getTrainIterations

public int getTrainIterations()
Gets the maximum number of boost iterations

Returns:
the maximum number of boost iterations

setDataFileName

public void setDataFileName(java.lang.String dataFileName)
Sets the name of the data file used for the decomposition

Parameters:
dataFileName - the data file to use

getDataFileName

public java.lang.String getDataFileName()
Get the name of the data file used for the decomposition

Returns:
the name of the data file

getClassIndex

public int getClassIndex()
Get the index (starting from 1) of the attribute used as the class.

Returns:
the index of the class attribute

setClassIndex

public void setClassIndex(int classIndex)
Sets index of attribute to discretize on

Parameters:
classIndex - the index (starting from 1) of the class attribute

getBias

public double getBias()
Get the calculated bias squared

Returns:
the bias squared

getVariance

public double getVariance()
Get the calculated variance

Returns:
the variance

getSigma

public double getSigma()
Get the calculated sigma squared

Returns:
the sigma squared

getError

public double getError()
Get the calculated error rate

Returns:
the error rate

decompose

public void decompose()
               throws java.lang.Exception
Carry out the bias-variance decomposition

Throws:
java.lang.Exception - if the decomposition couldn't be carried out

toString

public java.lang.String toString()
Returns description of the bias-variance decomposition results.

Overrides:
toString in class java.lang.Object
Returns:
the bias-variance decomposition results as a string

getRevision

public java.lang.String getRevision()
Returns the revision string.

Specified by:
getRevision in interface RevisionHandler
Returns:
the revision

main

public static void main(java.lang.String[] args)
Test method for this class

Parameters:
args - the command line arguments