mlpack
Public Member Functions | List of all members
mlpack::gmm::DiagonalGMM Class Reference

A Diagonal Gaussian Mixture Model. More...

#include <diagonal_gmm.hpp>

Public Member Functions

 DiagonalGMM ()
 Create an empty Diagonal Gaussian Mixture Model, with zero gaussians.
 
 DiagonalGMM (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...
 
 DiagonalGMM (const std::vector< distribution::DiagonalGaussianDistribution > &dists, const arma::vec &weights)
 Create a DiagonalGMM with the given dists and weights. More...
 
 DiagonalGMM (const DiagonalGMM &other)
 Copy constructor for DiagonalGMMs.
 
DiagonalGMMoperator= (const DiagonalGMM &other)
 Copy operator for DiagonalGMMs.
 
size_t Gaussians () const
 Return the number of Gaussians in the model.
 
size_t Dimensionality () const
 Return the dimensionality of the model.
 
const distribution::DiagonalGaussianDistributionComponent (size_t i) const
 Return a const reference to a component distribution. More...
 
distribution::DiagonalGaussianDistributionComponent (size_t i)
 Return a reference to a component distribution. More...
 
const arma::vec & Weights () const
 Return a const reference to the a priori weights of each Gaussian.
 
arma::vec & Weights ()
 Return a reference to the a priori weights of each Gaussian.
 
double Probability (const arma::vec &observation) const
 Return the probability that the given observation came from this distribution. More...
 
void Probability (const arma::mat &observation, arma::vec &probs) const
 Return the probability that the given observation matrix. More...
 
double LogProbability (const arma::vec &observation) const
 Return the log probability that the given observation came from this distribution. More...
 
void LogProbability (const arma::mat &observation, arma::vec &logProbs) const
 Return the log probability that the given observation matrix. 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...
 
double LogProbability (const arma::vec &observation, const size_t component) const
 Return the log 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 FittingType = EMFit<kmeans::KMeans<>, DiagonalConstraint, distribution::DiagonalGaussianDistribution>>
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<kmeans::KMeans<>, DiagonalConstraint, distribution::DiagonalGaussianDistribution>>
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...
 
void Classify (const arma::mat &observations, arma::Row< size_t > &labels) const
 Classify the given observations as being from an individual component in this DiagonalGMM. More...
 
template<typename Archive >
void serialize (Archive &ar, const uint32_t)
 Serialize the DiagonalGMM. More...
 

Detailed Description

A Diagonal Gaussian Mixture Model.

This class uses maximum likelihood loss functions to estimate the parameters of the DiagonalGMM on a given dataset via the given fitting mechanism, defined by the FittingType template parameter. The DiagonalGMM can be trained using normal data, or data with probabilities of being from this GMM (see DiagonalGMM::Train() for more information). The DiagonalGMM is the same as GMM except for wrapping gmm_diag class.

The Train() method uses a template type 'FittingType'. The FittingType template class must provide a way for the DiagonalGMM to train on data. It must provide the following two functions:

void Estimate(
const arma::mat& observations,
std::vector<distribution::DiagonalGaussianDistribution>& dists,
arma::vec& weights);
void Estimate(
const arma::mat& observations,
const arma::vec& probabilities,
std::vector<distribution::DiagonalGaussianDistribution>& dists,
arma::vec& weights);

Example use:

// Set up a mixture of 5 gaussians in a 4-dimensional space.
DiagonalGMM g(5, 4);
// Train the DiagonalGMM given the data observations, using the default
// EM fitting mechanism.
g.Train(data);
// Get the probability of 'observation' being observed from this
// DiagoanlGMM.
double probability = g.Probability(observation);
// Get a random observation from the DiagonalGMM.
arma::vec observation = g.Random();

Constructor & Destructor Documentation

◆ DiagonalGMM() [1/2]

mlpack::gmm::DiagonalGMM::DiagonalGMM ( const size_t  gaussians,
const size_t  dimensionality 
)

Create a GMM with the given number of Gaussians, each of which have the specified dimensionality.

Create a DiagonalGMM with the given number of Gaussians, each of which have the specified dimensionality.

The means and covariances will be set to 0.

Parameters
gaussiansNumber of Gaussians in this DiagonalGMM.
dimensionalityDimensionality of each Gaussian.

The means and covariances will be set to 0.

Parameters
gaussiansNumber of Gaussians in this GMM.
dimensionalityDimensionality of each Gaussian.

◆ DiagonalGMM() [2/2]

mlpack::gmm::DiagonalGMM::DiagonalGMM ( const std::vector< distribution::DiagonalGaussianDistribution > &  dists,
const arma::vec &  weights 
)
inline

Create a DiagonalGMM with the given dists and weights.

Parameters
distsDistributions of the model.
weightsWeights of the model.

Member Function Documentation

◆ Classify()

void mlpack::gmm::DiagonalGMM::Classify ( const arma::mat &  observations,
arma::Row< size_t > &  labels 
) const

Classify the given observations as being from an individual component in this DiagonalGMM.

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 DiagonalGMM object was called 'dgmm', one could access the relevant Gaussian distribution as follows:

arma::vec mean = dgmm.Means()[2];
arma::mat covariance = dgmm.Covariances()[2];
double priorWeight = dgmm.Weights()[2];
Parameters
observationsMatrix of observations to classify.
labelsObject which will be filled with labels.

◆ Component() [1/2]

const distribution::DiagonalGaussianDistribution& mlpack::gmm::DiagonalGMM::Component ( size_t  i) const
inline

Return a const reference to a component distribution.

Parameters
iIndex of component.

◆ Component() [2/2]

distribution::DiagonalGaussianDistribution& mlpack::gmm::DiagonalGMM::Component ( size_t  i)
inline

Return a reference to a component distribution.

Parameters
iIndex of component.

◆ LogProbability() [1/3]

double mlpack::gmm::DiagonalGMM::LogProbability ( const arma::vec &  observation) const

Return the log probability that the given observation came from this distribution.

Return the log probability of the given observation being from this GMM.

Parameters
observationObservation to evaluate the log-probability of.

◆ LogProbability() [2/3]

void mlpack::gmm::DiagonalGMM::LogProbability ( const arma::mat &  observation,
arma::vec &  logProbs 
) const

Return the log probability that the given observation matrix.

Return the log probability of the given observation GMM matrix.

Parameters
observationObservation to evaluate the log-probability of.
logProbsStores the value of log-probability for observation.
observationObservation matrix to compute log-probabilty.
logProbsStores the value of log-probability for input.

◆ LogProbability() [3/3]

double mlpack::gmm::DiagonalGMM::LogProbability ( const arma::vec &  observation,
const size_t  component 
) const

Return the log probability that the given observation came from the given Gaussian component in this distribution.

Return the log probability of the given observation being from the given component in the mixture.

Parameters
observationObservation to evaluate the probability of.
componentIndex of the component of the DiagonalGMM.

◆ Probability() [1/3]

double mlpack::gmm::DiagonalGMM::Probability ( const arma::vec &  observation) const

Return the probability that the given observation came from this distribution.

Return the probability of the given observation being from this GMM.

Parameters
observationObservation to evaluate the probability of.

◆ Probability() [2/3]

void mlpack::gmm::DiagonalGMM::Probability ( const arma::mat &  observation,
arma::vec &  probs 
) const

Return the probability that the given observation matrix.

Return the probability of the given observation GMM matrix.

Parameters
observationObservation to evaluate the probability of.
probsStores the value of probability for observation.
observationObservation matrix to compute probabilty.
probsStores the value of probability for observation.

◆ Probability() [3/3]

double mlpack::gmm::DiagonalGMM::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.

Return the probability of the given observation being from the given component in the mixture.

Parameters
observationObservation to evaluate the probability of.
componentIndex of the component of the DiagonalGMM.

◆ Random()

arma::vec mlpack::gmm::DiagonalGMM::Random ( ) const

Return a randomly generated observation according to the probability distribution defined by this object.

Returns
Random observation from this DiagonalGMM.

◆ serialize()

template<typename Archive >
void mlpack::gmm::DiagonalGMM::serialize ( Archive &  ar,
const uint32_t   
)

Serialize the DiagonalGMM.

Serialize the object.

◆ Train() [1/2]

template<typename FittingType >
double mlpack::gmm::DiagonalGMM::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.

Fit the DiagonalGMM to the given observations.

The fitting will be performed 'trials' times; from these trials, the model with the greatest log-likelihood will be selected. By default, only one trial is performed. The log-likelihood 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
observationsObservations of the model.
trialsNumber of trials to perform; the model in these trials with the greatest log-likelihood will be selected.
useExistingModelIf true, the existing model is used as an initial model for the estimation.
fitterFitting type that estimates observations.
Returns
The log-likelihood of the best fit.

◆ Train() [2/2]

template<typename FittingType >
double mlpack::gmm::DiagonalGMM::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.

Fit the DiagonalGMM to the given observations, each of which has a certain probability of being from this distribution.

The fitting will be performed 'trials' times; from these trials, the model with the greatest log-likelihood will be selected. By default, only one trial is performed. The log-likelihood 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
observationsObservations of the model.
probabilitiesProbability of each observation being from this distribution.
trialsNumber of trials to perform; the model in these trials with the greatest log-likelihood will be selected.
useExistingModelIf true, the existing model is used as an initial model for the estimation.
fitterFitting type that estimates observations.
Returns
The log-likelihood of the best fit.

The documentation for this class was generated from the following files: