|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectweka.classifiers.Classifier
weka.classifiers.DistributionClassifier
weka.classifiers.meta.Fable
FABLE is a version of DECORATE that allows for active feature acquisition. DECORATE is a meta-learner for building diverse ensembles of classifiers by adding specially constructed artificial training examples. Comprehensive experiments have demonstrated that this technique is consistently more accurate than bagging and more accurate that boosting when training data is limited. For more details see
Prem Melville and Raymond J. Mooney. Constructing diverse
classifier ensembles using artificial training examples.
Proceedings of the Seventeeth International Joint Conference on
Artificial Intelligence 2003.
Valid options are:
-D
Turn on debugging output.
-W classname
Specify the full class name of a weak classifier as the basis for
Decorate (default weka.classifiers.trees.j48.J48()).
-I num
Specify the desired size of the committee (default 15).
-M iterations
Set the maximum number of Decorate iterations (default 50).
-S seed
Seed for random number generator. (default 0).
-R factor
Factor that determines number of artificial examples to generate.
Options after -- are passed to the designated classifier.
Field Summary | |
protected double |
m_ArtSize
Amount of artificial/random instances to use - specified as a fraction of the training data size. |
protected java.util.Vector |
m_AttributeStats
Attribute statistics - used for generating artificial examples. |
protected Classifier |
m_Classifier
The model base classifier to use. |
protected java.util.Vector |
m_Committee
Vector of classifiers that make up the committee/ensemble. |
protected boolean |
m_Debug
Set to true to get debugging output. |
protected int |
m_DesiredSize
The desired ensemble size. |
protected double |
m_Epsilon
Smoothing parameter for 0-values in distributions |
protected int |
m_NumIterations
The maximum number of Decorate iterations to run. |
protected java.util.Random |
m_Random
The random number generator. |
protected int |
m_Seed
The seed for random number generation. |
protected DistributionClassifier |
m_SelectionCommittee
|
protected int |
m_SelectionScheme
The selective sampling scheme to use. |
Constructor Summary | |
Fable()
|
Method Summary | |
protected void |
addInstances(Instances data,
Instances newData)
Add new instances to the given set of instances. |
void |
buildClassifier(Instances data)
Build Decorate classifier |
protected double |
calcEuclideanDis(Instance instance)
Calculate the disagreement in the ensemble over the label of given examples. |
protected double |
calcJSDivergence(Instance instance)
Calculate the disagreement in the ensemble over the label of given examples. |
protected double |
calcKLdivergence(double[] p1,
double[] p2)
Calculate the KL divergence between two probability distributions. |
protected double |
calcMajorityDis(Instance instance)
Calculate the disagreement in the ensemble over the label of given examples. |
protected double |
calculateDisagreement(Instance instance)
Calculate the disagreement in the ensemble over the label of given examples depending on the chosen selection scheme. |
protected double |
calculateScore(Instance instance)
Calculate the feature acquisition score for given examples depending on the chosen selection scheme. |
protected double |
computeError(Instances data)
Computes the error in classification on the given data. |
protected void |
computeStats(Instances data)
Compute and store statistics required for generating artificial data. |
double[] |
distributionForInstance(Instance instance)
Calculates the class membership probabilities for the given test instance. |
protected Instances |
generateArtificialData(int artSize,
Instances data)
Generate artificial training examples. |
double |
getArtificialSize()
Factor that determines number of artificial examples to generate. |
Classifier |
getClassifier()
Get the classifier used as the base classifier |
boolean |
getDebug()
Get whether debugging is turned on |
int |
getDesiredSize()
Gets the desired size of the committee. |
int |
getNumIterations()
Gets the max number of Decorate iterations to run. |
java.lang.String[] |
getOptions()
Gets the current settings of the Classifier. |
int |
getSeed()
Gets the seed for the random number generator. |
int |
getSelectionScheme()
Get the value of m_SelectionScheme. |
protected int |
inverseLabel(double[] probs)
Select class label such that the probability of selection is inversely proportional to the ensemble's predictions. |
protected void |
labelData(Instances artData)
Labels the artificially generated data. |
java.util.Enumeration |
listOptions()
Returns an enumeration describing the available options |
static void |
main(java.lang.String[] argv)
Main method for testing this class. |
protected void |
removeInstances(Instances data,
int numRemove)
Removes a specified number of instances from the given set of instances. |
protected int |
selectIndexProbabilistically(double[] cdf)
Given cumulative probabilities select a nominal attribute value index |
int[] |
selectInstances(Instances unlabeledActivePool,
int num)
Given a set of unlabeled examples, select a specified number of examples to be labeled. |
int[] |
selectInstancesForFeatures(Instances activePool,
int num)
Given a set of unlabeled examples, select a specified number of examples to be labeled. |
void |
setArtificialSize(double newArtSize)
Sets factor that determines number of artificial examples to generate. |
void |
setClassifier(Classifier newClassifier)
Set the base classifier for Decorate. |
void |
setDebug(boolean debug)
Set debugging mode |
void |
setDesiredSize(int newDesiredSize)
Sets the desired size of the committee. |
void |
setNumIterations(int numIterations)
Sets the max number of Decorate iterations to run. |
void |
setOptions(java.lang.String[] options)
Parses a given list of options. |
void |
setSeed(int seed)
Set the seed for random number generator. |
void |
setSelectionScheme(int v)
Set the value of m_SelectionScheme. |
protected void |
smoothDistribution(double[] probs)
|
java.lang.String |
toString()
Returns description of the Decorate classifier. |
protected void |
trainSelectionCommittee(Instances data)
|
Methods inherited from class weka.classifiers.DistributionClassifier |
calculateEntropy, calculateLabeledInstanceMargin, calculateMargin, classifyInstance |
Methods inherited from class weka.classifiers.Classifier |
forName, makeCopies |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
protected DistributionClassifier m_SelectionCommittee
protected double m_Epsilon
protected boolean m_Debug
protected Classifier m_Classifier
protected java.util.Vector m_Committee
protected int m_DesiredSize
protected int m_NumIterations
protected int m_Seed
protected double m_ArtSize
protected java.util.Random m_Random
protected java.util.Vector m_AttributeStats
protected int m_SelectionScheme
Constructor Detail |
public Fable()
Method Detail |
public java.util.Enumeration listOptions()
listOptions
in interface OptionHandler
public void setOptions(java.lang.String[] options) throws java.lang.Exception
-D
Turn on debugging output.
-W classname
Specify the full class name of a weak classifier as the basis for
Decorate (required).
-I num
Specify the desired size of the committee (default 15).
-M iterations
Set the maximum number of Decorate iterations (default 50).
-S seed
Seed for random number generator. (default 0).
-R factor
Factor that determines number of artificial examples to generate.
Options after -- are passed to the designated classifier.
setOptions
in interface OptionHandler
options
- the list of options as an array of strings
java.lang.Exception
- if an option is not supportedpublic java.lang.String[] getOptions()
getOptions
in interface OptionHandler
public int getSelectionScheme()
public void setSelectionScheme(int v)
v
- Value to assign to m_SelectionScheme.public void setDebug(boolean debug)
debug
- true if debug output should be printedpublic boolean getDebug()
public void setClassifier(Classifier newClassifier)
newClassifier
- the Classifier to use.public Classifier getClassifier()
public double getArtificialSize()
public void setArtificialSize(double newArtSize)
public int getDesiredSize()
public void setDesiredSize(int newDesiredSize)
newDesiredSize
- the desired size of the committeepublic void setNumIterations(int numIterations)
numIterations
- max number of Decorate iterations to runpublic int getNumIterations()
public void setSeed(int seed)
seed
- the random number seedpublic int getSeed()
public void buildClassifier(Instances data) throws java.lang.Exception
buildClassifier
in class Classifier
data
- the training data to be used for generating the classifier
java.lang.Exception
- if the classifier could not be built successfullyprotected void trainSelectionCommittee(Instances data) throws java.lang.Exception
java.lang.Exception
protected void computeStats(Instances data) throws java.lang.Exception
data
- training instances
java.lang.Exception
- if statistics could not be calculated successfullyprotected Instances generateArtificialData(int artSize, Instances data)
artSize
- size of examples set to createdata
- training data
protected void labelData(Instances artData) throws java.lang.Exception
artData
- the artificially generated instances
java.lang.Exception
- if instances cannot be labeled successfullyprotected int inverseLabel(double[] probs) throws java.lang.Exception
probs
- class membership probabilities of instance
java.lang.Exception
- if instances cannot be labeled successfullyprotected int selectIndexProbabilistically(double[] cdf)
cdf
- array of cumulative probabilities
protected void removeInstances(Instances data, int numRemove)
data
- given instancesnumRemove
- number of instances to delete from the given instancesprotected void addInstances(Instances data, Instances newData)
data
- given instancesnewData
- set of instances to add to given instancesprotected double computeError(Instances data) throws java.lang.Exception
data
- the instances to be classified
java.lang.Exception
- if error can not be computed successfullypublic double[] distributionForInstance(Instance instance) throws java.lang.Exception
distributionForInstance
in class DistributionClassifier
instance
- the instance to be classified
java.lang.Exception
- if distribution can't be computed successfullypublic int[] selectInstancesForFeatures(Instances activePool, int num) throws java.lang.Exception
selectInstancesForFeatures
in interface ActiveFeatureAcquirer
activePool
- pool of unlabeled examplesnum
- number of examples to selcted for labeling
java.lang.Exception
- if selective sampling failsprotected double calculateScore(Instance instance) throws java.lang.Exception
instance
- local instances from the current pool
java.lang.Exception
- if score could not be calculated properlypublic int[] selectInstances(Instances unlabeledActivePool, int num) throws java.lang.Exception
selectInstances
in interface ActiveLearner
unlabeledActivePool
- pool of unlabeled examplesnum
- number of examples to selcted for labeling
java.lang.Exception
- if selective sampling failsprotected double calculateDisagreement(Instance instance) throws java.lang.Exception
instance
- unlabeled instance from the current pool
java.lang.Exception
- if disagreement could not be calculated properlyprotected double calcJSDivergence(Instance instance) throws java.lang.Exception
instance
- unlabeled instance from the current pool
java.lang.Exception
- if disagreement could not be calculated properlyprotected void smoothDistribution(double[] probs)
protected double calcKLdivergence(double[] p1, double[] p2)
p1
- first probability disttribution
protected double calcEuclideanDis(Instance instance) throws java.lang.Exception
instance
- unlabeled instance from the current pool
java.lang.Exception
- if disagreement could not be calculated properlyprotected double calcMajorityDis(Instance instance) throws java.lang.Exception
instance
- unlabeled instance from the current pool
java.lang.Exception
- if disagreement could not be calculated properlypublic java.lang.String toString()
public static void main(java.lang.String[] argv)
argv
- the options
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |