mlpack
master

A Gaussian Mixture Model (GMM). More...
Public Member Functions  
GMM ()  
Create an empty Gaussian Mixture Model, with zero gaussians. More...  
GMM (const size_t gaussians, const size_t dimensionality)  
Create a GMM with the given number of Gaussians, each of which have the specified dimensionality. More...  
GMM (const std::vector< distribution::GaussianDistribution > &dists, const arma::vec &weights)  
Create a GMM with the given dists and weights. More...  
GMM (const GMM &other)  
Copy constructor for GMMs. More...  
void  Classify (const arma::mat &observations, arma::Row< size_t > &labels) const 
Classify the given observations as being from an individual component in this GMM. More...  
const distribution::GaussianDistribution &  Component (size_t i) const 
Return a const reference to a component distribution. More...  
distribution::GaussianDistribution &  Component (size_t i) 
Return a reference to a component distribution. More...  
size_t  Dimensionality () const 
Return the dimensionality of the model. More...  
size_t  Gaussians () const 
Return the number of gaussians in the model. More...  
GMM &  operator= (const GMM &other) 
Copy operator for GMMs. More...  
double  Probability (const arma::vec &observation) const 
Return the probability that the given observation came from this distribution. More...  
double  Probability (const arma::vec &observation, const size_t component) const 
Return the probability that the given observation came from the given Gaussian component in this distribution. More...  
arma::vec  Random () const 
Return a randomly generated observation according to the probability distribution defined by this object. More...  
template < typename Archive >  
void  serialize (Archive &ar, const unsigned int) 
Serialize the GMM. More...  
template<typename FittingType = EMFit<>>  
double  Train (const arma::mat &observations, const size_t trials=1, const bool useExistingModel=false, FittingType fitter=FittingType()) 
Estimate the probability distribution directly from the given observations, using the given algorithm in the FittingType class to fit the data. More...  
template<typename FittingType = EMFit<>>  
double  Train (const arma::mat &observations, const arma::vec &probabilities, const size_t trials=1, const bool useExistingModel=false, FittingType fitter=FittingType()) 
Estimate the probability distribution directly from the given observations, taking into account the probability of each observation actually being from this distribution, and using the given algorithm in the FittingType class to fit the data. More...  
const arma::vec &  Weights () const 
Return a const reference to the a priori weights of each Gaussian. More...  
arma::vec &  Weights () 
Return a reference to the a priori weights of each Gaussian. More...  
Detailed Description
A Gaussian Mixture Model (GMM).
This class uses maximum likelihood loss functions to estimate the parameters of the GMM on a given dataset via the given fitting mechanism, defined by the FittingType template parameter. The GMM can be trained using normal data, or data with probabilities of being from this GMM (see GMM::Train() for more information).
The Train() method uses a template type 'FittingType'. The FittingType template class must provide a way for the GMM to train on data. It must provide the following two functions:
These functions should produce a trained GMM from the given observations and probabilities. These may modify the size of the model (by increasing the size of the mean and covariance vectors as well as the weight vectors), but the method should expect that these vectors are already set to the size of the GMM as specified in the constructor.
For a sample implementation, see the EMFit class; this class uses the EM algorithm to train a GMM, and is the default fitting type for the Train() method.
The GMM, once trained, can be used to generate random points from the distribution and estimate the probability of points being from the distribution. The parameters of the GMM can be obtained through the accessors and mutators.
Example use:
Constructor & Destructor Documentation
◆ GMM() [1/4]

inline 
Create an empty Gaussian Mixture Model, with zero gaussians.
Definition at line 97 of file gmm.hpp.
References Log::Debug.
Referenced by GMM::GMM().
◆ GMM() [2/4]
GMM  (  const size_t  gaussians, 
const size_t  dimensionality  
) 
◆ GMM() [3/4]

inline 
Create a GMM with the given dists and weights.
 Parameters

dists Distributions of the model. weights Weights of the model.
Definition at line 123 of file gmm.hpp.
References GMM::GMM(), and GMM::operator=().
◆ GMM() [4/4]
Member Function Documentation
◆ Classify()
void Classify  (  const arma::mat &  observations, 
arma::Row< size_t > &  labels  
)  const 
Classify the given observations as being from an individual component in this GMM.
The resultant classifications are stored in the 'labels' object, and each label will be between 0 and (Gaussians()  1). Supposing that a point was classified with label 2, and that our GMM object was called 'gmm', one could access the relevant Gaussian distribution as follows:
 Parameters

observations List of observations to classify. labels Object which will be filled with labels.
Referenced by GMM::Weights().
◆ Component() [1/2]

inline 
◆ Component() [2/2]

inline 
◆ Dimensionality()

inline 
◆ Gaussians()

inline 
◆ operator=()
Copy operator for GMMs.
Referenced by GMM::GMM().
◆ Probability() [1/2]
double Probability  (  const arma::vec &  observation  )  const 
Return the probability that the given observation came from this distribution.
 Parameters

observation Observation to evaluate the probability of.
Referenced by GMM::Weights().
◆ Probability() [2/2]
double Probability  (  const arma::vec &  observation, 
const size_t  component  
)  const 
Return the probability that the given observation came from the given Gaussian component in this distribution.
 Parameters

observation Observation to evaluate the probability of. component Index of the component of the GMM to be considered.
◆ Random()
arma::vec Random  (  )  const 
Return a randomly generated observation according to the probability distribution defined by this object.
 Returns
 Random observation from this GMM.
Referenced by GMM::Weights().
◆ serialize()
void serialize  (  Archive &  ar, 
const unsigned  int  
) 
Serialize the GMM.
Referenced by GMM::Weights().
◆ Train() [1/2]
double Train  (  const arma::mat &  observations, 
const size_t  trials = 1 , 

const bool  useExistingModel = false , 

FittingType  fitter = FittingType() 

) 
Estimate the probability distribution directly from the given observations, using the given algorithm in the FittingType class to fit the data.
The fitting will be performed 'trials' times; from these trials, the model with the greatest loglikelihood will be selected. By default, only one trial is performed. The loglikelihood of the best fitting is returned.
Optionally, the existing model can be used as an initial model for the estimation by setting 'useExistingModel' to true. If the fitting procedure is deterministic after the initial position is given, then 'trials' should be set to 1.
 Template Parameters

FittingType The type of fitting method which should be used (EMFit<> is suggested).
 Parameters

observations Observations of the model. trials Number of trials to perform; the model in these trials with the greatest loglikelihood will be selected. useExistingModel If true, the existing model is used as an initial model for the estimation.
 Returns
 The loglikelihood of the best fit.
Referenced by GMM::Weights().
◆ Train() [2/2]
double Train  (  const arma::mat &  observations, 
const arma::vec &  probabilities,  
const size_t  trials = 1 , 

const bool  useExistingModel = false , 

FittingType  fitter = FittingType() 

) 
Estimate the probability distribution directly from the given observations, taking into account the probability of each observation actually being from this distribution, and using the given algorithm in the FittingType class to fit the data.
The fitting will be performed 'trials' times; from these trials, the model with the greatest loglikelihood will be selected. By default, only one trial is performed. The loglikelihood of the best fitting is returned.
Optionally, the existing model can be used as an initial model for the estimation by setting 'useExistingModel' to true. If the fitting procedure is deterministic after the initial position is given, then 'trials' should be set to 1.
 Parameters

observations Observations of the model. probabilities Probability of each observation being from this distribution. trials Number of trials to perform; the model in these trials with the greatest loglikelihood will be selected. useExistingModel If true, the existing model is used as an initial model for the estimation.
 Returns
 The loglikelihood of the best fit.
◆ Weights() [1/2]

inline 
◆ Weights() [2/2]

inline 
Return a reference to the a priori weights of each Gaussian.
Definition at line 158 of file gmm.hpp.
References GMM::Classify(), GMM::Probability(), GMM::Random(), GMM::serialize(), and GMM::Train().
The documentation for this class was generated from the following file:
 src/mlpack/methods/gmm/gmm.hpp
Generated by 1.8.13