gov.sandia.cognition.learning.algorithm
Interface IncrementalLearner<DataType,ResultType>

Type Parameters:
DataType - Data used to train the ResultType.
ResultType - The type of object created and modified by the learning algorithm. For example, a FeedforwardNeuralNetwork.
All Superinterfaces:
Cloneable, CloneableSerializable, Serializable
All Known Subinterfaces:
BatchAndIncrementalLearner<DataType,ResultType>, ConjugatePriorBayesianEstimator<ObservationType,ParameterType,ConditionalType,BeliefType>, ConjugatePriorBayesianEstimatorPredictor<ObservationType,ParameterType,ConditionalType,BeliefType>, IncrementalEstimator<DataType,DistributionType,SufficientStatisticsType>, KernelizableBinaryCategorizerOnlineLearner, LinearizableBinaryCategorizerOnlineLearner<InputType>, ParticleFilter<ObservationType,ParameterType>, RecursiveBayesianEstimator<ObservationType,ParameterType,BeliefType>, SupervisedBatchAndIncrementalLearner<InputType,OutputType,ResultType>, SupervisedIncrementalLearner<InputType,OutputType,ResultType>
All Known Implementing Classes:
AbstractBatchAndIncrementalLearner, AbstractConjugatePriorBayesianEstimator, AbstractIncrementalEstimator, AbstractKalmanFilter, AbstractKernelizableBinaryCategorizerOnlineLearner, AbstractLinearCombinationOnlineLearner, AbstractOnlineBudgetedKernelBinaryCategorizerLearner, AbstractOnlineKernelBinaryCategorizerLearner, AbstractOnlineLinearBinaryCategorizerLearner, AbstractParticleFilter, AbstractSupervisedBatchAndIncrementalLearner, AdaptiveRegularizationOfWeights, AggressiveRelaxedOnlineMaximumMarginAlgorithm, Ballseptron, BayesianLinearRegression.IncrementalEstimator, BayesianRobustLinearRegression.IncrementalEstimator, BernoulliBayesianEstimator, BinomialBayesianEstimator, ConfidenceWeightedDiagonalDeviation, ConfidenceWeightedDiagonalDeviationProject, ConfidenceWeightedDiagonalVariance, ConfidenceWeightedDiagonalVarianceProject, DefaultDataDistribution.Estimator, DefaultDataDistribution.WeightedEstimator, ExponentialBayesianEstimator, ExtendedKalmanFilter, Forgetron, Forgetron.Basic, Forgetron.Greedy, GammaInverseScaleBayesianEstimator, KalmanFilter, KernelBinaryCategorizerOnlineLearnerAdapter, MultinomialBayesianEstimator, MultivariateGaussian.IncrementalEstimator, MultivariateGaussian.IncrementalEstimatorCovarianceInverse, MultivariateGaussianMeanBayesianEstimator, MultivariateGaussianMeanCovarianceBayesianEstimator, OnlineBaggingCategorizerLearner, OnlineBinaryMarginInfusedRelaxedAlgorithm, OnlineKernelPerceptron, OnlineKernelRandomizedBudgetPerceptron, OnlineMultiPerceptron, OnlineMultiPerceptron.ProportionalUpdate, OnlineMultiPerceptron.UniformUpdate, OnlinePassiveAggressivePerceptron, OnlinePassiveAggressivePerceptron.AbstractSoftMargin, OnlinePassiveAggressivePerceptron.LinearSoftMargin, OnlinePassiveAggressivePerceptron.QuadraticSoftMargin, OnlinePerceptron, OnlineRampPassiveAggressivePerceptron, OnlineShiftingPerceptron, OnlineVotedPerceptron, PoissonBayesianEstimator, Projectron, Projectron.LinearSoftMargin, RelaxedOnlineMaximumMarginAlgorithm, RemoveOldestKernelPerceptron, SamplingImportanceResamplingParticleFilter, ScalarDataDistribution.Estimator, SimpleStatisticalSpellingCorrector.Learner, Stoptron, UniformDistributionBayesianEstimator, UnivariateGaussian.IncrementalEstimator, UnivariateGaussianMeanBayesianEstimator, UnivariateGaussianMeanVarianceBayesianEstimator, VectorNaiveBayesCategorizer.OnlineLearner, Winnow

@CodeReview(reviewer="Kevin R. Dixon",
            date="2008-07-22",
            changesNeeded=false,
            comments={"Fixed a couple of javadoc typos.","Interface looks fine."})
public interface IncrementalLearner<DataType,ResultType>
extends CloneableSerializable

The IncrementalLearner interface defines the general functionality of an object that is the implementation of a data-driven, incremental machine learning algorithm. It is the analog of the BatchLearner interface but for incremental learning.

The design pattern for machine learning algorithms is to have all the parameters and configuration of the algorithm set on the IncrementalLearner object (usually as a Java Bean) and then the data is passed in using the learn method to create the result object of the learning algorithm.

The interface is for an "incremental" machine learning algorithm because the learn method is expected to update a given object of the ResultType using the new given data.

Generally, algorithms that implement the IncrementalLearner interface should also implement the BatchLearner interface because an IncrementalLearner can always be used in a batch situation. However, this is not currently enforced by the interface definition because an algorithm may expect different data when it is operating in "batch" versus "incremental" modes.

If you implement this without really using a learning algorithm you will make the authors very sad (especially Justin).

Since:
3.0.4
Author:
Justin Basilico, Kevin R. Dixon
See Also:
BatchLearner

Method Summary
 ResultType createInitialLearnedObject()
          Creates a new initial learned object, before any data is given.
 void update(ResultType target, DataType data)
          The update method updates an object of ResultType using the given new data of type DataType, using some form of "learning" algorithm.
 void update(ResultType target, Iterable<? extends DataType> data)
          The update method updates an object of ResultType using the given new Iterable containing some number of type DataType, using some form of "learning" algorithm.
 
Methods inherited from interface gov.sandia.cognition.util.CloneableSerializable
clone
 

Method Detail

createInitialLearnedObject

ResultType createInitialLearnedObject()
Creates a new initial learned object, before any data is given.

Returns:
The initial learned object.

update

void update(ResultType target,
            DataType data)
The update method updates an object of ResultType using the given new data of type DataType, using some form of "learning" algorithm.

Parameters:
target - The object to update.
data - The new data for the learning algorithm to use to update the object.

update

void update(ResultType target,
            Iterable<? extends DataType> data)
The update method updates an object of ResultType using the given new Iterable containing some number of type DataType, using some form of "learning" algorithm.

Parameters:
target - The object to update.
data - The Iterable containing data for the learning algorithm to use to update the object.