gov.sandia.cognition.statistics.bayesian
Interface MarkovChainMonteCarlo<ObservationType,ParameterType>

Type Parameters:
ObservationType - Type of observations handled by the MCMC algorithm.
ParameterType - Type of parameters to infer.
All Superinterfaces:
AnytimeAlgorithm<DataDistribution<ParameterType>>, BatchLearner<Collection<? extends ObservationType>,DataDistribution<ParameterType>>, BayesianEstimator<ObservationType,ParameterType,DataDistribution<ParameterType>>, Cloneable, CloneableSerializable, IterativeAlgorithm, Randomized, Serializable, StoppableAlgorithm
All Known Implementing Classes:
AbstractMarkovChainMonteCarlo, DirichletProcessMixtureModel, MetropolisHastingsAlgorithm, ParallelDirichletProcessMixtureModel

@PublicationReferences(references={@PublicationReference(author={"Christian P. Robert","George Casella"},title="Monte Carlo Statistical Methods, Second Edition",type=Book,year=2004,pages={267,320}),@PublicationReference(author="Wikipedia",title="Markov chain Monte Carlo",type=WebPage,year=2010,url="http://en.wikipedia.org/wiki/Markov_chain_Monte_Carlo")})
public interface MarkovChainMonteCarlo<ObservationType,ParameterType>
extends BayesianEstimator<ObservationType,ParameterType,DataDistribution<ParameterType>>, AnytimeAlgorithm<DataDistribution<ParameterType>>, Randomized

Defines the functionality of a Markov chain Monte Carlo algorithm. Technically, this algorithm allows for the sampling of a function where it's difficult to sample directly from the distribution. In machine learning it's primarily used as to estimate the distribution of parameters of data. As opposed to asking, "What is the most likely parameter that generated the data?" MCMC techniques can answer the question of "What does the distribution of parameters look like that generated the data?" The algorithm works a lot like simulated annealing as follows. The algorithm starts taking probability-directed steps in a target function from some user-defined initial condition. The first several steps (1% of the total typically) are thrown out until the random steps have time to "burn in" to the true probability space. Then, the algorithm starts recording the Collection of steps that it takes until it hits some pre-defined number of samples. It has been shown by Metropolis in the 1950s that this Collection of samples necessarily follows the same distribution as the target distribution, if the steps are taken in a clever manner.

Since:
3.0
Author:
Kevin R. Dixon

Method Summary
 int getBurnInIterations()
          Gets the number of iterations that must transpire before the algorithm begins collection the samples.
 ParameterType getCurrentParameter()
          Gets the current parameters in the random walk.
 int getIterationsPerSample()
          Gets the number of iterations that must transpire between capturing samples from the distribution.
 void setBurnInIterations(int burnInIterations)
          Sets the number of iterations that must transpire before the algorithm begins collection the samples.
 void setIterationsPerSample(int iterationsPerSample)
          Sets the number of iterations that must transpire between capturing samples from the distribution.
 
Methods inherited from interface gov.sandia.cognition.learning.algorithm.BatchLearner
learn
 
Methods inherited from interface gov.sandia.cognition.util.CloneableSerializable
clone
 
Methods inherited from interface gov.sandia.cognition.algorithm.AnytimeAlgorithm
getMaxIterations, getResult, setMaxIterations
 
Methods inherited from interface gov.sandia.cognition.algorithm.IterativeAlgorithm
addIterativeAlgorithmListener, getIteration, removeIterativeAlgorithmListener
 
Methods inherited from interface gov.sandia.cognition.algorithm.StoppableAlgorithm
isResultValid, stop
 
Methods inherited from interface gov.sandia.cognition.util.Randomized
getRandom, setRandom
 

Method Detail

getBurnInIterations

int getBurnInIterations()
Gets the number of iterations that must transpire before the algorithm begins collection the samples.

Returns:
The number of iterations that must transpire before the algorithm begins collection the samples.

setBurnInIterations

void setBurnInIterations(int burnInIterations)
Sets the number of iterations that must transpire before the algorithm begins collection the samples.

Parameters:
burnInIterations - The number of iterations that must transpire before the algorithm begins collection the samples.

getIterationsPerSample

int getIterationsPerSample()
Gets the number of iterations that must transpire between capturing samples from the distribution.

Returns:
The number of iterations that must transpire between capturing samples from the distribution.

setIterationsPerSample

void setIterationsPerSample(int iterationsPerSample)
Sets the number of iterations that must transpire between capturing samples from the distribution.

Parameters:
iterationsPerSample - The number of iterations that must transpire between capturing samples from the distribution.

getCurrentParameter

ParameterType getCurrentParameter()
Gets the current parameters in the random walk.

Returns:
The current parameters in the random walk.