Class AdaptiveRandomForest
- java.lang.Object
-
- moa.AbstractMOAObject
-
- moa.options.AbstractOptionHandler
-
- moa.classifiers.AbstractClassifier
-
- moa.classifiers.meta.AdaptiveRandomForest
-
- All Implemented Interfaces:
Configurable
,Serializable
,CapabilitiesHandler
,Classifier
,MultiClassClassifier
,AWTRenderable
,Learner<Example<Instance>>
,MOAObject
,OptionHandler
public class AdaptiveRandomForest extends AbstractClassifier implements MultiClassClassifier, CapabilitiesHandler
Adaptive Random ForestAdaptive Random Forest (ARF). The 3 most important aspects of this ensemble classifier are: (1) inducing diversity through resampling; (2) inducing diversity through randomly selecting subsets of features for node splits (See moa.classifiers.trees.ARFHoeffdingTree.java); (3) drift detectors per base tree, which cause selective resets in response to drifts. It also allows training background trees, which start training if a warning is detected and replace the active tree if the warning escalates to a drift.
See details in:
Heitor Murilo Gomes, Albert Bifet, Jesse Read, Jean Paul Barddal, Fabricio Enembreck, Bernhard Pfharinger, Geoff Holmes, Talel Abdessalem. Adaptive random forests for evolving data stream classification. In Machine Learning, DOI: 10.1007/s10994-017-5642-8, Springer, 2017.Parameters:
- -l : Classifier to train. Must be set to ARFHoeffdingTree
- -s : The number of trees in the ensemble
- -o : How the number of features is interpreted (4 options): "Specified m (integer value)", "sqrt(M)+1", "M-(sqrt(M)+1)"
- -m : Number of features allowed considered for each split. Negative values corresponds to M - m
- -a : The lambda value for bagging (lambda=6 corresponds to levBag)
- -j : Number of threads to be used for training
- -x : Change detector for drifts and its parameters
- -p : Change detector for warnings (start training bkg learner)
- -w : Should use weighted voting?
- -u : Should use drift detection? If disabled then bkg learner is also disabled
- -q : Should use bkg learner? If disabled then reset tree immediately
- Version:
- $Revision: 1 $
- Author:
- Heitor Murilo Gomes (heitor_murilo_gomes at yahoo dot com dot br)
- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected class
AdaptiveRandomForest.ARFBaseLearner
Inner class that represents a single tree member of the forest.protected class
AdaptiveRandomForest.TrainingRunnable
Inner class to assist with the multi-thread execution.
-
Field Summary
Fields Modifier and Type Field Description FlagOption
disableBackgroundLearnerOption
FlagOption
disableDriftDetectionOption
FlagOption
disableWeightedVote
ClassOption
driftDetectionMethodOption
protected AdaptiveRandomForest.ARFBaseLearner[]
ensemble
IntOption
ensembleSizeOption
protected BasicClassificationPerformanceEvaluator
evaluator
protected static int
FEATURES_M
protected static int
FEATURES_PERCENT
protected static int
FEATURES_SQRT
protected static int
FEATURES_SQRT_INV
protected long
instancesSeen
FloatOption
lambdaOption
MultiChoiceOption
mFeaturesModeOption
IntOption
mFeaturesPerTreeSizeOption
IntOption
numberOfJobsOption
protected static int
SINGLE_THREAD
protected int
subspaceSize
ClassOption
treeLearnerOption
ClassOption
warningDetectionMethodOption
-
Fields inherited from class moa.classifiers.AbstractClassifier
classifierRandom, modelContext, randomSeed, randomSeedOption, trainingWeightSeenByModel
-
Fields inherited from class moa.options.AbstractOptionHandler
config
-
-
Constructor Summary
Constructors Constructor Description AdaptiveRandomForest()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description ImmutableCapabilities
defineImmutableCapabilities()
Defines the set of capabilities the object has.void
getModelDescription(StringBuilder arg0, int arg1)
Returns a string representation of the model.protected Measurement[]
getModelMeasurementsImpl()
Gets the current measurements of this classifier.
The reason for ...Impl methods: ease programmer burden by not requiring them to remember calls to super in overridden methods.String
getPurposeString()
Dictionary with option texts and objectsClassifier[]
getSublearners()
Gets the learners of this ensemble.double[]
getVotesForInstance(Instance instance)
Predicts the class memberships for a given instance.protected void
initEnsemble(Instance instance)
boolean
isRandomizable()
Gets whether this learner needs a random seed.void
resetLearningImpl()
Resets this classifier.void
trainOnInstanceImpl(Instance instance)
Trains this classifier incrementally using the given instance.
The reason for ...Impl methods: ease programmer burden by not requiring them to remember calls to super in overridden methods.-
Methods inherited from class moa.classifiers.AbstractClassifier
contextIsCompatible, copy, correctlyClassifies, getAttributeNameString, getAWTRenderer, getClassLabelString, getClassNameString, getDescription, getModel, getModelContext, getModelMeasurements, getNominalValueString, getPredictionForInstance, getPredictionForInstance, getSubClassifiers, getVotesForInstance, modelAttIndexToInstanceAttIndex, modelAttIndexToInstanceAttIndex, prepareForUseImpl, resetLearning, setModelContext, setRandomSeed, trainingHasStarted, trainingWeightSeenByModel, trainOnInstance, trainOnInstance
-
Methods inherited from class moa.options.AbstractOptionHandler
getCLICreationString, getOptions, getPreparedClassOption, prepareClassOptions, prepareForUse, prepareForUse
-
Methods inherited from class moa.AbstractMOAObject
copy, measureByteSize, measureByteSize, toString
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface moa.capabilities.CapabilitiesHandler
getCapabilities
-
Methods inherited from interface moa.MOAObject
measureByteSize
-
Methods inherited from interface moa.options.OptionHandler
getCLICreationString, getOptions, prepareForUse, prepareForUse
-
-
-
-
Field Detail
-
treeLearnerOption
public ClassOption treeLearnerOption
-
ensembleSizeOption
public IntOption ensembleSizeOption
-
mFeaturesModeOption
public MultiChoiceOption mFeaturesModeOption
-
mFeaturesPerTreeSizeOption
public IntOption mFeaturesPerTreeSizeOption
-
lambdaOption
public FloatOption lambdaOption
-
numberOfJobsOption
public IntOption numberOfJobsOption
-
driftDetectionMethodOption
public ClassOption driftDetectionMethodOption
-
warningDetectionMethodOption
public ClassOption warningDetectionMethodOption
-
disableWeightedVote
public FlagOption disableWeightedVote
-
disableDriftDetectionOption
public FlagOption disableDriftDetectionOption
-
disableBackgroundLearnerOption
public FlagOption disableBackgroundLearnerOption
-
FEATURES_M
protected static final int FEATURES_M
- See Also:
- Constant Field Values
-
FEATURES_SQRT
protected static final int FEATURES_SQRT
- See Also:
- Constant Field Values
-
FEATURES_SQRT_INV
protected static final int FEATURES_SQRT_INV
- See Also:
- Constant Field Values
-
FEATURES_PERCENT
protected static final int FEATURES_PERCENT
- See Also:
- Constant Field Values
-
SINGLE_THREAD
protected static final int SINGLE_THREAD
- See Also:
- Constant Field Values
-
ensemble
protected AdaptiveRandomForest.ARFBaseLearner[] ensemble
-
instancesSeen
protected long instancesSeen
-
subspaceSize
protected int subspaceSize
-
evaluator
protected BasicClassificationPerformanceEvaluator evaluator
-
-
Method Detail
-
getPurposeString
public String getPurposeString()
Description copied from class:AbstractOptionHandler
Dictionary with option texts and objects- Specified by:
getPurposeString
in interfaceOptionHandler
- Overrides:
getPurposeString
in classAbstractClassifier
- Returns:
- the string with the purpose of this object
-
resetLearningImpl
public void resetLearningImpl()
Description copied from class:AbstractClassifier
Resets this classifier. It must be similar to starting a new classifier from scratch.
The reason for ...Impl methods: ease programmer burden by not requiring them to remember calls to super in overridden methods. Note that this will produce compiler errors if not overridden.- Specified by:
resetLearningImpl
in classAbstractClassifier
-
trainOnInstanceImpl
public void trainOnInstanceImpl(Instance instance)
Description copied from class:AbstractClassifier
Trains this classifier incrementally using the given instance.
The reason for ...Impl methods: ease programmer burden by not requiring them to remember calls to super in overridden methods. Note that this will produce compiler errors if not overridden.- Specified by:
trainOnInstanceImpl
in classAbstractClassifier
- Parameters:
instance
- the instance to be used for training
-
getVotesForInstance
public double[] getVotesForInstance(Instance instance)
Description copied from interface:Classifier
Predicts the class memberships for a given instance. If an instance is unclassified, the returned array elements must be all zero.- Specified by:
getVotesForInstance
in interfaceClassifier
- Specified by:
getVotesForInstance
in classAbstractClassifier
- Parameters:
instance
- the instance to be classified- Returns:
- an array containing the estimated membership probabilities of the test instance in each class
-
isRandomizable
public boolean isRandomizable()
Description copied from interface:Learner
Gets whether this learner needs a random seed. Examples of methods that needs a random seed are bagging and boosting.- Specified by:
isRandomizable
in interfaceLearner<Example<Instance>>
- Returns:
- true if the learner needs a random seed.
-
getModelDescription
public void getModelDescription(StringBuilder arg0, int arg1)
Description copied from class:AbstractClassifier
Returns a string representation of the model.- Specified by:
getModelDescription
in classAbstractClassifier
- Parameters:
arg0
- the stringbuilder to add the descriptionarg1
- the number of characters to indent
-
getModelMeasurementsImpl
protected Measurement[] getModelMeasurementsImpl()
Description copied from class:AbstractClassifier
Gets the current measurements of this classifier.
The reason for ...Impl methods: ease programmer burden by not requiring them to remember calls to super in overridden methods. Note that this will produce compiler errors if not overridden.- Specified by:
getModelMeasurementsImpl
in classAbstractClassifier
- Returns:
- an array of measurements to be used in evaluation tasks
-
initEnsemble
protected void initEnsemble(Instance instance)
-
defineImmutableCapabilities
public ImmutableCapabilities defineImmutableCapabilities()
Description copied from interface:CapabilitiesHandler
Defines the set of capabilities the object has. Should be overridden if the object's capabilities do not change.- Specified by:
defineImmutableCapabilities
in interfaceCapabilitiesHandler
- Overrides:
defineImmutableCapabilities
in classAbstractClassifier
- Returns:
- The capabilities of the object.
-
getSublearners
public Classifier[] getSublearners()
Description copied from interface:Learner
Gets the learners of this ensemble. Returns null if this learner is a single learner.- Specified by:
getSublearners
in interfaceLearner<Example<Instance>>
- Overrides:
getSublearners
in classAbstractClassifier
- Returns:
- an array of the learners of the ensemble
-
-