Package weka.classifiers.trees
Class ADTree
java.lang.Object
weka.classifiers.Classifier
weka.classifiers.trees.ADTree
- All Implemented Interfaces:
Serializable,Cloneable,IterativeClassifier,AdditionalMeasureProducer,CapabilitiesHandler,Drawable,OptionHandler,RevisionHandler,TechnicalInformationHandler,WeightedInstancesHandler
public class ADTree
extends Classifier
implements OptionHandler, Drawable, AdditionalMeasureProducer, WeightedInstancesHandler, IterativeClassifier, TechnicalInformationHandler
Class for generating an alternating decision tree. The basic algorithm is based on:
Freund, Y., Mason, L.: The alternating decision tree learning algorithm. In: Proceeding of the Sixteenth International Conference on Machine Learning, Bled, Slovenia, 124-133, 1999.
This version currently only supports two-class problems. The number of boosting iterations needs to be manually tuned to suit the dataset and the desired complexity/accuracy tradeoff. Induction of the trees has been optimized, and heuristic search methods have been introduced to speed learning. BibTeX:
Freund, Y., Mason, L.: The alternating decision tree learning algorithm. In: Proceeding of the Sixteenth International Conference on Machine Learning, Bled, Slovenia, 124-133, 1999.
This version currently only supports two-class problems. The number of boosting iterations needs to be manually tuned to suit the dataset and the desired complexity/accuracy tradeoff. Induction of the trees has been optimized, and heuristic search methods have been introduced to speed learning. BibTeX:
@inproceedings{Freund1999,
address = {Bled, Slovenia},
author = {Freund, Y. and Mason, L.},
booktitle = {Proceeding of the Sixteenth International Conference on Machine Learning},
pages = {124-133},
title = {The alternating decision tree learning algorithm},
year = {1999}
}
Valid options are:
-B <number of boosting iterations> Number of boosting iterations. (Default = 10)
-E <-3|-2|-1|>=0> Expand nodes: -3(all), -2(weight), -1(z_pure), >=0 seed for random walk (Default = -3)
-D Save the instance data with the model
- Version:
- $Revision: 10290 $
- Author:
- Richard Kirkby (rkirkby@cs.waikato.ac.nz), Bernhard Pfahringer (bernhard@cs.waikato.ac.nz)
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final intsearch mode: Expand all pathsstatic final intsearch mode: Expand the heaviest pathstatic final intsearch mode: Expand a random pathstatic final intsearch mode: Expand the best z-pure pathstatic final Tag[]The search modesFields inherited from interface weka.core.Drawable
BayesNet, Newick, NOT_DRAWABLE, TREE -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidboost()Performs a single boosting iteration, using two-class optimized method.voidbuildClassifier(Instances instances) Builds a classifier for a set of instances.clone()Creates a clone that is identical to the current tree, but is independent.double[]distributionForInstance(Instance instance) Returns the class probability distribution for an instance.voiddone()Frees memory that is no longer needed for a final model - will no longer be able to increment the classifier after calling this.Returns an enumeration of the additional measure names.Returns default capabilities of the classifier.doublegetMeasure(String additionalMeasureName) Returns the value of the named measure.intGets the number of boosting iterations.String[]Gets the current settings of ADTree.intGets random seed for a random walk.Returns the revision string.booleanGets whether the tree is to save instance data.Gets the method of searching the tree for a new insertion.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.Returns a string describing classifiergraph()Returns graph describing the tree.intReturns the type of graph this classifier represents.voidinitClassifier(Instances instances) Sets up the tree ready to be trained, using two-class optimized method.legend()Returns the legend of the tree, describing how results are to be interpreted.Returns an enumeration describing the available options..static voidMain method for testing this class.doubleReturns the number of examples "counted".doubleReturns the number of nodes expanded.doubleCalls measure function for leaf size - the number of prediction nodes.doubleCalls measure function for prediction leaf size - the number of prediction nodes without children.doubleCalls measure function for tree size - the total number of nodes.voidMerges two trees together.voidnext(int iteration) Performs one iteration.intReturns the next number in the order that splitter nodes have been added to the tree, and records that a new splitter has been added.voidsetNumOfBoostingIterations(int b) Sets the number of boosting iterations.voidsetOptions(String[] options) Parses a given list of options.voidsetRandomSeed(int seed) Sets random seed for a random walk.voidsetSaveInstanceData(boolean v) Sets whether the tree is to save instance data.voidsetSearchPath(SelectedTag newMethod) Sets the method of searching the tree for a new insertion.toString()Returns a description of the classifier.Methods inherited from class weka.classifiers.Classifier
classifyInstance, debugTipText, forName, getDebug, makeCopies, makeCopy, setDebug
-
Field Details
-
SEARCHPATH_ALL
public static final int SEARCHPATH_ALLsearch mode: Expand all paths- See Also:
-
SEARCHPATH_HEAVIEST
public static final int SEARCHPATH_HEAVIESTsearch mode: Expand the heaviest path- See Also:
-
SEARCHPATH_ZPURE
public static final int SEARCHPATH_ZPUREsearch mode: Expand the best z-pure path- See Also:
-
SEARCHPATH_RANDOM
public static final int SEARCHPATH_RANDOMsearch mode: Expand a random path- See Also:
-
TAGS_SEARCHPATH
The search modes
-
-
Constructor Details
-
ADTree
public ADTree()
-
-
Method Details
-
globalInfo
Returns a string describing classifier- Returns:
- a description suitable for displaying in the explorer/experimenter gui
-
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:
getTechnicalInformationin interfaceTechnicalInformationHandler- Returns:
- the technical information about this class
-
initClassifier
Sets up the tree ready to be trained, using two-class optimized method.- Specified by:
initClassifierin interfaceIterativeClassifier- Parameters:
instances- the instances to train the tree with- Throws:
Exception- if training data is unsuitable
-
next
Performs one iteration.- Specified by:
nextin interfaceIterativeClassifier- Parameters:
iteration- the index of the current iteration (0-based)- Throws:
Exception- if this iteration fails
-
boost
Performs a single boosting iteration, using two-class optimized method. Will add a new splitter node and two prediction nodes to the tree (unless merging takes place).- Throws:
Exception- if try to boost without setting up tree first or there are no instances to train with
-
distributionForInstance
Returns the class probability distribution for an instance.- Overrides:
distributionForInstancein classClassifier- Parameters:
instance- the instance to be classified- Returns:
- the distribution the tree generates for the instance
-
toString
Returns a description of the classifier. -
graphType
public int graphType()Returns the type of graph this classifier represents. -
graph
Returns graph describing the tree. -
legend
Returns the legend of the tree, describing how results are to be interpreted.- Returns:
- a string containing the legend of the classifier
-
numOfBoostingIterationsTipText
- Returns:
- tip text for this property suitable for displaying in the explorer/experimenter gui
-
getNumOfBoostingIterations
public int getNumOfBoostingIterations()Gets the number of boosting iterations.- Returns:
- the number of boosting iterations
-
setNumOfBoostingIterations
public void setNumOfBoostingIterations(int b) Sets the number of boosting iterations.- Parameters:
b- the number of boosting iterations to use
-
searchPathTipText
- Returns:
- tip text for this property suitable for displaying in the explorer/experimenter gui
-
getSearchPath
Gets the method of searching the tree for a new insertion. Will be one of SEARCHPATH_ALL, SEARCHPATH_HEAVIEST, SEARCHPATH_ZPURE, SEARCHPATH_RANDOM.- Returns:
- the tree searching mode
-
setSearchPath
Sets the method of searching the tree for a new insertion. Will be one of SEARCHPATH_ALL, SEARCHPATH_HEAVIEST, SEARCHPATH_ZPURE, SEARCHPATH_RANDOM.- Parameters:
newMethod- the new tree searching mode
-
randomSeedTipText
- Returns:
- tip text for this property suitable for displaying in the explorer/experimenter gui
-
getRandomSeed
public int getRandomSeed()Gets random seed for a random walk.- Returns:
- the random seed
-
setRandomSeed
public void setRandomSeed(int seed) Sets random seed for a random walk.- Parameters:
seed- the random seed
-
saveInstanceDataTipText
- Returns:
- tip text for this property suitable for displaying in the explorer/experimenter gui
-
getSaveInstanceData
public boolean getSaveInstanceData()Gets whether the tree is to save instance data.- Returns:
- the random seed
-
setSaveInstanceData
public void setSaveInstanceData(boolean v) Sets whether the tree is to save instance data.- Parameters:
v- true then the tree saves instance data
-
listOptions
Returns an enumeration describing the available options..- Specified by:
listOptionsin interfaceOptionHandler- Overrides:
listOptionsin classClassifier- Returns:
- an enumeration of all the available options.
-
setOptions
Parses a given list of options. Valid options are:-B num
Set the number of boosting iterations (default 10)-E num
Set the nodes to expand: -3(all), -2(weight), -1(z_pure), >=0 seed for random walk (default -3)-D
Save the instance data with the model- Specified by:
setOptionsin interfaceOptionHandler- Overrides:
setOptionsin classClassifier- Parameters:
options- the list of options as an array of strings- Throws:
Exception- if an option is not supported
-
getOptions
Gets the current settings of ADTree.- Specified by:
getOptionsin interfaceOptionHandler- Overrides:
getOptionsin classClassifier- Returns:
- an array of strings suitable for passing to setOptions()
-
measureTreeSize
public double measureTreeSize()Calls measure function for tree size - the total number of nodes.- Returns:
- the tree size
-
measureNumLeaves
public double measureNumLeaves()Calls measure function for leaf size - the number of prediction nodes.- Returns:
- the leaf size
-
measureNumPredictionLeaves
public double measureNumPredictionLeaves()Calls measure function for prediction leaf size - the number of prediction nodes without children.- Returns:
- the leaf size
-
measureNodesExpanded
public double measureNodesExpanded()Returns the number of nodes expanded.- Returns:
- the number of nodes expanded during search
-
measureExamplesProcessed
public double measureExamplesProcessed()Returns the number of examples "counted".- Returns:
- the number of nodes processed during search
-
enumerateMeasures
Returns an enumeration of the additional measure names.- Specified by:
enumerateMeasuresin interfaceAdditionalMeasureProducer- Returns:
- an enumeration of the measure names
-
getMeasure
Returns the value of the named measure.- Specified by:
getMeasurein interfaceAdditionalMeasureProducer- Parameters:
additionalMeasureName- the name of the measure to query for its value- Returns:
- the value of the named measure
- Throws:
IllegalArgumentException- if the named measure is not supported
-
nextSplitAddedOrder
public int nextSplitAddedOrder()Returns the next number in the order that splitter nodes have been added to the tree, and records that a new splitter has been added.- Returns:
- the next number in the order
-
getCapabilities
Returns default capabilities of the classifier.- Specified by:
getCapabilitiesin interfaceCapabilitiesHandler- Overrides:
getCapabilitiesin classClassifier- Returns:
- the capabilities of this classifier
- See Also:
-
buildClassifier
Builds a classifier for a set of instances.- Specified by:
buildClassifierin classClassifier- Parameters:
instances- the instances to train the classifier with- Throws:
Exception- if something goes wrong
-
done
public void done()Frees memory that is no longer needed for a final model - will no longer be able to increment the classifier after calling this.- Specified by:
donein interfaceIterativeClassifier
-
clone
Creates a clone that is identical to the current tree, but is independent. Deep copies the essential elements such as the tree nodes, and the instances (because the weights change.) Reference copies several elements such as the potential splitter sets, assuming that such elements should never differ between clones.- Specified by:
clonein interfaceIterativeClassifier- Returns:
- the clone
-
merge
Merges two trees together. Modifies the tree being acted on, leaving tree passed as a parameter untouched (cloned). Does not check to see whether training instances are compatible - strange things could occur if they are not.- Parameters:
mergeWith- the tree to merge with- Throws:
Exception- if merge could not be performed
-
getRevision
Returns the revision string.- Specified by:
getRevisionin interfaceRevisionHandler- Overrides:
getRevisionin classClassifier- Returns:
- the revision
-
main
Main method for testing this class.- Parameters:
argv- the options
-