weka.classifiers.trees
Class FT

java.lang.Object
  extended by weka.classifiers.Classifier
      extended by weka.classifiers.trees.FT
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, AdditionalMeasureProducer, CapabilitiesHandler, Drawable, OptionHandler, RevisionHandler, TechnicalInformationHandler

public class FT
extends Classifier
implements OptionHandler, AdditionalMeasureProducer, Drawable, TechnicalInformationHandler

Classifier for building 'Functional trees', which are classification trees that could have logistic regression functions at the inner nodes and/or leaves. The algorithm can deal with binary and multi-class target variables, numeric and nominal attributes and missing values.

For more information see:

Joao Gama (2004). Functional Trees.

Niels Landwehr, Mark Hall, Eibe Frank (2005). Logistic Model Trees.

BibTeX:

 @article{Gama2004,
    author = {Joao Gama},
    booktitle = {Machine Learning},
    number = {3},
    pages = {219-250},
    title = {Functional Trees},
    volume = {55},
    year = {2004}
 }
 
 @article{Landwehr2005,
    author = {Niels Landwehr and Mark Hall and Eibe Frank},
    booktitle = {Machine Learning},
    number = {1-2},
    pages = {161-205},
    title = {Logistic Model Trees},
    volume = {95},
    year = {2005}
 }
 

Valid options are:

 -B
  Binary splits (convert nominal attributes to binary ones) 
 -P
  Use error on probabilities instead of misclassification error for stopping criterion of LogitBoost.
 -I <numIterations>
  Set fixed number of iterations for LogitBoost (instead of using cross-validation)
 -F <modelType>
  Set Funtional Tree type to be generate:  0 for FT, 1 for FTLeaves and 2 for FTInner
 -M <numInstances>
  Set minimum number of instances at which a node can be split (default 15)
 -W <beta>
  Set beta for weight trimming for LogitBoost. Set to 0 (default) for no weight trimming.
 -A
  The AIC is used to choose the best iteration.

Version:
$Revision: 1.6 $
Author:
Jo\~{a}o Gama, Carlos Ferreira
See Also:
Serialized Form

Field Summary
static int MODEL_FT
          model types
static int MODEL_FTInner
           
static int MODEL_FTLeaves
           
static Tag[] TAGS_MODEL
          possible model types.
 
Fields inherited from interface weka.core.Drawable
BayesNet, NOT_DRAWABLE, TREE
 
Constructor Summary
FT()
          Creates an instance of FT with standard options
 
Method Summary
 java.lang.String binSplitTipText()
          Returns the tip text for this property
 void buildClassifier(Instances data)
          Builds the classifier.
 double classifyInstance(Instance instance)
          Classifies an instance.
 double[] distributionForInstance(Instance instance)
          Returns class probabilities for an instance.
 java.util.Enumeration enumerateMeasures()
          Returns an enumeration of the additional measure names
 java.lang.String errorOnProbabilitiesTipText()
          Returns the tip text for this property
 boolean getBinSplit()
          Get the value of binarySplits.
 Capabilities getCapabilities()
          Returns default capabilities of the classifier.
 boolean getErrorOnProbabilities()
          Get the value of errorOnProbabilities.
 double getMeasure(java.lang.String additionalMeasureName)
          Returns the value of the named measure
 int getMinNumInstances()
          Get the value of minNumInstances.
 SelectedTag getModelType()
          Get the type of functional tree model being used.
 int getNumBoostingIterations()
          Get the value of numBoostingIterations.
 java.lang.String[] getOptions()
          Gets the current settings of the Classifier.
 java.lang.String getRevision()
          Returns the revision string.
 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.
 boolean getUseAIC()
          Get the value of useAIC.
 double getWeightTrimBeta()
          Get the value of weightTrimBeta.
 java.lang.String globalInfo()
          Returns a string describing classifier
 java.lang.String graph()
          Returns graph describing the tree.
 int graphType()
          Returns the type of graph this classifier represents.
 java.util.Enumeration listOptions()
          Returns an enumeration describing the available options.
static void main(java.lang.String[] argv)
          Main method for testing this class
 int measureNumLeaves()
          Returns the number of leaves in the tree
 int measureTreeSize()
          Returns the size of the tree
 java.lang.String minNumInstancesTipText()
          Returns the tip text for this property
 java.lang.String modelTypeTipText()
          Returns the tip text for this property
 java.lang.String numBoostingIterationsTipText()
          Returns the tip text for this property
 void setBinSplit(boolean c)
          Set the value of binarySplits.
 void setErrorOnProbabilities(boolean c)
          Set the value of errorOnProbabilities.
 void setMinNumInstances(int c)
          Set the value of minNumInstances.
 void setModelType(SelectedTag newMethod)
          Set the Functional Tree type.
 void setNumBoostingIterations(int c)
          Set the value of numBoostingIterations.
 void setOptions(java.lang.String[] options)
          Parses a given list of options.
 void setUseAIC(boolean c)
          Set the value of useAIC.
 void setWeightTrimBeta(double n)
          Set the value of weightTrimBeta.
 java.lang.String toString()
          Returns a description of the classifier.
 java.lang.String useAICTipText()
          Returns the tip text for this property
 java.lang.String weightTrimBetaTipText()
          Returns the tip text for this property
 
Methods inherited from class weka.classifiers.Classifier
debugTipText, forName, getDebug, makeCopies, makeCopy, setDebug
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

MODEL_FT

public static final int MODEL_FT
model types

See Also:
Constant Field Values

MODEL_FTLeaves

public static final int MODEL_FTLeaves
See Also:
Constant Field Values

MODEL_FTInner

public static final int MODEL_FTInner
See Also:
Constant Field Values

TAGS_MODEL

public static final Tag[] TAGS_MODEL
possible model types.

Constructor Detail

FT

public FT()
Creates an instance of FT with standard options

Method Detail

getCapabilities

public Capabilities getCapabilities()
Returns default capabilities of the classifier.

Specified by:
getCapabilities in interface CapabilitiesHandler
Overrides:
getCapabilities in class Classifier
Returns:
the capabilities of this classifier
See Also:
Capabilities

buildClassifier

public void buildClassifier(Instances data)
                     throws java.lang.Exception
Builds the classifier.

Specified by:
buildClassifier in class Classifier
Parameters:
data - the data to train with
Throws:
java.lang.Exception - if classifier can't be built successfully

distributionForInstance

public double[] distributionForInstance(Instance instance)
                                 throws java.lang.Exception
Returns class probabilities for an instance.

Overrides:
distributionForInstance in class Classifier
Parameters:
instance - the instance to compute the distribution for
Returns:
the class probabilities
Throws:
java.lang.Exception - if distribution can't be computed successfully

classifyInstance

public double classifyInstance(Instance instance)
                        throws java.lang.Exception
Classifies an instance.

Overrides:
classifyInstance in class Classifier
Parameters:
instance - the instance to classify
Returns:
the classification
Throws:
java.lang.Exception - if instance can't be classified successfully

toString

public java.lang.String toString()
Returns a description of the classifier.

Overrides:
toString in class java.lang.Object
Returns:
a string representation of the classifier

listOptions

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

Specified by:
listOptions in interface OptionHandler
Overrides:
listOptions in class Classifier
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:

 -B
  Binary splits (convert nominal attributes to binary ones) 
 -P
  Use error on probabilities instead of misclassification error for stopping criterion of LogitBoost.
 -I <numIterations>
  Set fixed number of iterations for LogitBoost (instead of using cross-validation)
 -F <modelType>
  Set Funtional Tree type to be generate:  0 for FT, 1 for FTLeaves and 2 for FTInner
 -M <numInstances>
  Set minimum number of instances at which a node can be split (default 15)
 -W <beta>
  Set beta for weight trimming for LogitBoost. Set to 0 (default) for no weight trimming.
 -A
  The AIC is used to choose the best iteration.

Specified by:
setOptions in interface OptionHandler
Overrides:
setOptions in class Classifier
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 Classifier.

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

getWeightTrimBeta

public double getWeightTrimBeta()
Get the value of weightTrimBeta.


getUseAIC

public boolean getUseAIC()
Get the value of useAIC.

Returns:
Value of useAIC.

setWeightTrimBeta

public void setWeightTrimBeta(double n)
Set the value of weightTrimBeta.


setUseAIC

public void setUseAIC(boolean c)
Set the value of useAIC.

Parameters:
c - Value to assign to useAIC.

getBinSplit

public boolean getBinSplit()
Get the value of binarySplits.

Returns:
Value of binarySplits.

getErrorOnProbabilities

public boolean getErrorOnProbabilities()
Get the value of errorOnProbabilities.

Returns:
Value of errorOnProbabilities.

getNumBoostingIterations

public int getNumBoostingIterations()
Get the value of numBoostingIterations.

Returns:
Value of numBoostingIterations.

getModelType

public SelectedTag getModelType()
Get the type of functional tree model being used.

Returns:
the type of functional tree model.

setModelType

public void setModelType(SelectedTag newMethod)
Set the Functional Tree type.

Parameters:
c - Value corresponding to tree type.

getMinNumInstances

public int getMinNumInstances()
Get the value of minNumInstances.

Returns:
Value of minNumInstances.

setBinSplit

public void setBinSplit(boolean c)
Set the value of binarySplits.

Parameters:
c - Value to assign to binarySplits.

setErrorOnProbabilities

public void setErrorOnProbabilities(boolean c)
Set the value of errorOnProbabilities.

Parameters:
c - Value to assign to errorOnProbabilities.

setNumBoostingIterations

public void setNumBoostingIterations(int c)
Set the value of numBoostingIterations.

Parameters:
c - Value to assign to numBoostingIterations.

setMinNumInstances

public void setMinNumInstances(int c)
Set the value of minNumInstances.

Parameters:
c - Value to assign to minNumInstances.

graphType

public int graphType()
Returns the type of graph this classifier represents.

Specified by:
graphType in interface Drawable
Returns:
Drawable.TREE

graph

public java.lang.String graph()
                       throws java.lang.Exception
Returns graph describing the tree.

Specified by:
graph in interface Drawable
Returns:
the graph describing the tree
Throws:
java.lang.Exception - if graph can't be computed

measureTreeSize

public int measureTreeSize()
Returns the size of the tree

Returns:
the size of the tree

measureNumLeaves

public int measureNumLeaves()
Returns the number of leaves in the tree

Returns:
the number of leaves in the tree

enumerateMeasures

public java.util.Enumeration enumerateMeasures()
Returns an enumeration of the additional measure names

Specified by:
enumerateMeasures in interface AdditionalMeasureProducer
Returns:
an enumeration of the measure names

getMeasure

public double getMeasure(java.lang.String additionalMeasureName)
Returns the value of the named measure

Specified by:
getMeasure in interface AdditionalMeasureProducer
Parameters:
additionalMeasureName - the name of the measure to query for its value
Returns:
the value of the named measure
Throws:
java.lang.IllegalArgumentException - if the named measure is not supported

globalInfo

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

Returns:
a description 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

modelTypeTipText

public java.lang.String modelTypeTipText()
Returns the tip text for this property

Returns:
tip text for this property suitable for displaying in the explorer/experimenter gui

binSplitTipText

public java.lang.String binSplitTipText()
Returns the tip text for this property

Returns:
tip text for this property suitable for displaying in the explorer/experimenter gui

errorOnProbabilitiesTipText

public java.lang.String errorOnProbabilitiesTipText()
Returns the tip text for this property

Returns:
tip text for this property suitable for displaying in the explorer/experimenter gui

numBoostingIterationsTipText

public java.lang.String numBoostingIterationsTipText()
Returns the tip text for this property

Returns:
tip text for this property suitable for displaying in the explorer/experimenter gui

minNumInstancesTipText

public java.lang.String minNumInstancesTipText()
Returns the tip text for this property

Returns:
tip text for this property suitable for displaying in the explorer/experimenter gui

weightTrimBetaTipText

public java.lang.String weightTrimBetaTipText()
Returns the tip text for this property

Returns:
tip text for this property suitable for displaying in the explorer/experimenter gui

useAICTipText

public java.lang.String useAICTipText()
Returns the tip text for this property

Returns:
tip text for this property suitable for displaying in the explorer/experimenter gui

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[] argv)
Main method for testing this class

Parameters:
argv - the commandline options