Package moa.classifiers.oneclass
Class Autoencoder
- java.lang.Object
-
- moa.AbstractMOAObject
-
- moa.options.AbstractOptionHandler
-
- moa.classifiers.AbstractClassifier
-
- moa.classifiers.oneclass.Autoencoder
-
- All Implemented Interfaces:
Configurable
,Serializable
,CapabilitiesHandler
,Classifier
,MultiClassClassifier
,OneClassClassifier
,AWTRenderable
,Learner<Example<Instance>>
,MOAObject
,OptionHandler
public class Autoencoder extends AbstractClassifier implements Classifier, OneClassClassifier
Implements an autoencoder: a neural network that attempts to reconstruct the input. The autoencoder's structure is an input layer with one neuron for each non-class attribute, a hidden layer of two neurons and an output layer with one neuron for each non-class attribute. Partially modeled on Albert Bifet's Perceptron.java, also found in the MOA project. Backpropagation implementation based on Matt Mazur's excellent tutorial on this topic: https://mattmazur.com/2015/03/17/a-step-by-step-backpropagation-example/- Author:
- Richard Hugh Moulton
- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description IntOption
hiddenLayerOption
FloatOption
learningRateOption
FloatOption
thresholdOption
-
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 Autoencoder()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description double
getAnomalyScore(Instance inst)
Returns the squared error between the input value and the reconstructed value as the anomaly score for the argument instance.void
getModelDescription(StringBuilder out, int indent)
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 objectsdouble[]
getVotesForInstance(Instance inst)
Calculates the error between the autoencoder's reconstruction of the input and the argument instances.void
initialize(Collection<Instance> trainingPoints)
Initializes the Autoencoder classifier on the argument trainingPoints.boolean
isRandomizable()
Autoencoder is randomizable.void
resetLearningImpl()
Marks the autoencoder as needing to be reinitialized.void
trainOnInstanceImpl(Instance inst)
Uses backpropagation to update the weights in the autoencoder.-
Methods inherited from class moa.classifiers.AbstractClassifier
contextIsCompatible, copy, correctlyClassifies, defineImmutableCapabilities, getAttributeNameString, getAWTRenderer, getClassLabelString, getClassNameString, getDescription, getModel, getModelContext, getModelMeasurements, getNominalValueString, getPredictionForInstance, getPredictionForInstance, getSubClassifiers, getSublearners, 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.gui.AWTRenderable
getAWTRenderer
-
Methods inherited from interface moa.capabilities.CapabilitiesHandler
getCapabilities
-
Methods inherited from interface moa.classifiers.Classifier
copy, correctlyClassifies, getPredictionForInstance, getSubClassifiers, trainOnInstance
-
Methods inherited from interface moa.learners.Learner
getModel, getModelContext, getModelMeasurements, getPredictionForInstance, getSublearners, getVotesForInstance, resetLearning, setModelContext, setRandomSeed, trainingHasStarted, trainingWeightSeenByModel, trainOnInstance
-
Methods inherited from interface moa.MOAObject
getDescription, measureByteSize
-
Methods inherited from interface moa.options.OptionHandler
getCLICreationString, getOptions, prepareForUse, prepareForUse
-
-
-
-
Field Detail
-
hiddenLayerOption
public IntOption hiddenLayerOption
-
learningRateOption
public FloatOption learningRateOption
-
thresholdOption
public FloatOption thresholdOption
-
-
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()
Marks the autoencoder as needing to be reinitialized.- Specified by:
resetLearningImpl
in classAbstractClassifier
-
trainOnInstanceImpl
public void trainOnInstanceImpl(Instance inst)
Uses backpropagation to update the weights in the autoencoder.- Specified by:
trainOnInstanceImpl
in classAbstractClassifier
- Parameters:
inst
- the instance to be used for training
-
getVotesForInstance
public double[] getVotesForInstance(Instance inst)
Calculates the error between the autoencoder's reconstruction of the input and the argument instances. This error is converted to vote scores.- Specified by:
getVotesForInstance
in interfaceClassifier
- Specified by:
getVotesForInstance
in classAbstractClassifier
- Parameters:
inst
- the instance to get votes for- Returns:
- the votes for the instance's label [normal, outlier]
-
getAnomalyScore
public double getAnomalyScore(Instance inst)
Returns the squared error between the input value and the reconstructed value as the anomaly score for the argument instance.- Specified by:
getAnomalyScore
in interfaceOneClassClassifier
- Parameters:
inst
- the instance to score- Returns:
- the argument instance's anomaly score.
-
isRandomizable
public boolean isRandomizable()
Autoencoder is randomizable.- Specified by:
isRandomizable
in interfaceLearner<Example<Instance>>
- Returns:
- true if the learner needs a random seed.
-
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
-
getModelDescription
public void getModelDescription(StringBuilder out, int indent)
Description copied from class:AbstractClassifier
Returns a string representation of the model.- Specified by:
getModelDescription
in classAbstractClassifier
- Parameters:
out
- the stringbuilder to add the descriptionindent
- the number of characters to indent
-
initialize
public void initialize(Collection<Instance> trainingPoints)
Initializes the Autoencoder classifier on the argument trainingPoints.- Specified by:
initialize
in interfaceOneClassClassifier
- Parameters:
trainingPoints
- the Collection of instances on which to initialize the Autoencoder classifier.
-
-