SHOGUN  v1.1.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
List of all members | Public Member Functions | Protected Attributes
CGMM Class Reference

Detailed Description

Gaussian Mixture Model interface.

Takes input of number of Gaussians to fit and a covariance type to use. Parameter estimation is done using either the Expectation-Maximization or Split-Merge Expectation-Maximization algorithms. To estimate the GMM parameters, the train(...) method has to be run to set the training data and then either train_em(...) or train_smem(...) to do the actual estimation. The EM algorithm is described here: http://en.wikipedia.org/wiki/Expectation-maximization_algorithm The SMEM algorithm is described here: http://mlg.eng.cam.ac.uk/zoubin/papers/uedanc.pdf

Definition at line 36 of file GMM.h.

Inheritance diagram for CGMM:
Inheritance graph
[legend]

Public Member Functions

 CGMM ()
 CGMM (int32_t n, ECovType cov_type=FULL)
 CGMM (SGVector< CGaussian * > components, SGVector< float64_t > coefficients, bool copy=false)
virtual ~CGMM ()
void cleanup ()
virtual bool train (CFeatures *data=NULL)
float64_t train_em (float64_t min_cov=1e-9, int32_t max_iter=1000, float64_t min_change=1e-9)
float64_t train_smem (int32_t max_iter=100, int32_t max_cand=5, float64_t min_cov=1e-9, int32_t max_em_iter=1000, float64_t min_change=1e-9)
void max_likelihood (SGMatrix< float64_t > alpha, float64_t min_cov)
virtual int32_t get_num_model_parameters ()
virtual float64_t get_log_model_parameter (int32_t num_param)
virtual float64_t get_log_derivative (int32_t num_param, int32_t num_example)
virtual float64_t get_log_likelihood_example (int32_t num_example)
virtual float64_t get_likelihood_example (int32_t num_example)
virtual SGVector< float64_tget_nth_mean (int32_t num)
virtual void set_nth_mean (SGVector< float64_t > mean, int32_t num)
virtual SGMatrix< float64_tget_nth_cov (int32_t num)
virtual void set_nth_cov (SGMatrix< float64_t > cov, int32_t num)
virtual SGVector< float64_tget_coef ()
virtual void set_coef (SGVector< float64_t > coefficients)
virtual SGVector< CGaussian * > get_comp ()
virtual void set_comp (SGVector< CGaussian * > components)
SGVector< float64_tsample ()
SGVector< float64_tcluster (SGVector< float64_t > point)
virtual const char * get_name () const
- Public Member Functions inherited from CDistribution
 CDistribution ()
virtual ~CDistribution ()
virtual int32_t get_num_relevant_model_parameters ()
virtual float64_t get_log_likelihood_sample ()
virtual SGVector< float64_tget_log_likelihood ()
virtual float64_t get_model_parameter (int32_t num_param)
virtual float64_t get_derivative (int32_t num_param, int32_t num_example)
virtual void set_features (CFeatures *f)
virtual CFeaturesget_features ()
virtual void set_pseudo_count (float64_t pseudo)
virtual float64_t get_pseudo_count ()
- Public Member Functions inherited from CSGObject
 CSGObject ()
 CSGObject (const CSGObject &orig)
virtual ~CSGObject ()
virtual bool is_generic (EPrimitiveType *generic) const
template<class T >
void set_generic ()
void unset_generic ()
virtual void print_serializable (const char *prefix="")
virtual bool save_serializable (CSerializableFile *file, const char *prefix="")
virtual bool load_serializable (CSerializableFile *file, const char *prefix="")
void set_global_io (SGIO *io)
SGIOget_global_io ()
void set_global_parallel (Parallel *parallel)
Parallelget_global_parallel ()
void set_global_version (Version *version)
Versionget_global_version ()
SGVector< char * > get_modelsel_names ()
char * get_modsel_param_descr (const char *param_name)
index_t get_modsel_param_index (const char *param_name)

Protected Attributes

SGVector< CGaussian * > m_components
SGVector< float64_tm_coefficients
- Protected Attributes inherited from CDistribution
CFeaturesfeatures
float64_t pseudo_count

Additional Inherited Members

- Public Attributes inherited from CSGObject
SGIOio
Parallelparallel
Versionversion
Parameterm_parameters
Parameterm_model_selection_parameters
- Protected Member Functions inherited from CSGObject
virtual void load_serializable_pre () throw (ShogunException)
virtual void load_serializable_post () throw (ShogunException)
virtual void save_serializable_pre () throw (ShogunException)
virtual void save_serializable_post () throw (ShogunException)

Constructor & Destructor Documentation

CGMM ( )

default constructor

Definition at line 25 of file GMM.cpp.

CGMM ( int32_t  n,
ECovType  cov_type = FULL 
)

constructor

Parameters
nnumber of Gaussians
cov_typecovariance type

Definition at line 30 of file GMM.cpp.

CGMM ( SGVector< CGaussian * >  components,
SGVector< float64_t coefficients,
bool  copy = false 
)

constructor

Parameters
componentsGMM components
coefficientsmixing coefficients
copytrue if should be copied

Definition at line 47 of file GMM.cpp.

~CGMM ( )
virtual

Definition at line 98 of file GMM.cpp.

Member Function Documentation

void cleanup ( )

cleanup

Definition at line 104 of file GMM.cpp.

SGVector< float64_t > cluster ( SGVector< float64_t point)

cluster point

Returns
log likelihood of belonging to clusters and the log likelihood of being generated by this GMM The length of the returned vector is number of components + 1

Definition at line 774 of file GMM.cpp.

SGVector< float64_t > get_coef ( )
virtual

get coefficients

Returns
coeffiecients

Definition at line 703 of file GMM.cpp.

SGVector< CGaussian * > get_comp ( )
virtual

get components

Returns
components

Definition at line 714 of file GMM.cpp.

float64_t get_likelihood_example ( int32_t  num_example)
virtual

compute likelihood for example

abstract base method

Parameters
num_examplewhich example
Returns
likelihood for example

Reimplemented from CDistribution.

Definition at line 674 of file GMM.cpp.

float64_t get_log_derivative ( int32_t  num_param,
int32_t  num_example 
)
virtual

get partial derivative of likelihood function (logarithmic)

Parameters
num_paramderivative against which param
num_examplewhich example
Returns
derivative of likelihood (logarithmic)

Implements CDistribution.

Definition at line 662 of file GMM.cpp.

float64_t get_log_likelihood_example ( int32_t  num_example)
virtual

compute log likelihood for example

abstract base method

Parameters
num_examplewhich example
Returns
log likelihood for example

Implements CDistribution.

Definition at line 668 of file GMM.cpp.

float64_t get_log_model_parameter ( int32_t  num_param)
virtual

get model parameter (logarithmic)

Returns
model parameter (logarithmic) if num_param < m_dim returns an element from the mean, else return an element from the covariance

Implements CDistribution.

Definition at line 655 of file GMM.cpp.

virtual const char* get_name ( ) const
virtual
Returns
object name

Implements CSGObject.

Definition at line 208 of file GMM.h.

SGMatrix< float64_t > get_nth_cov ( int32_t  num)
virtual

get nth covariance

Parameters
numindex of covariance to retrieve
Returns
covariance

Definition at line 691 of file GMM.cpp.

SGVector< float64_t > get_nth_mean ( int32_t  num)
virtual

get nth mean

Parameters
numindex of mean to retrieve
Returns
mean

Definition at line 679 of file GMM.cpp.

int32_t get_num_model_parameters ( )
virtual

get number of parameters in model

Returns
number of parameters in model

Implements CDistribution.

Definition at line 650 of file GMM.cpp.

void max_likelihood ( SGMatrix< float64_t alpha,
float64_t  min_cov 
)

maximum likelihood estimation

Parameters
alphapoint assignment
min_covminimum covariance

Definition at line 531 of file GMM.cpp.

SGVector< float64_t > sample ( )

sample from model

Returns
sample

Definition at line 760 of file GMM.cpp.

void set_coef ( SGVector< float64_t coefficients)
virtual

set coefficients

Parameters
coefficientsmixing coefficients

Definition at line 708 of file GMM.cpp.

void set_comp ( SGVector< CGaussian * >  components)
virtual

set components

Parameters
componentsGaussian components

Definition at line 719 of file GMM.cpp.

void set_nth_cov ( SGMatrix< float64_t cov,
int32_t  num 
)
virtual

set nth covariance

Parameters
covnew covariance
numindex of covariance to set

Definition at line 697 of file GMM.cpp.

void set_nth_mean ( SGVector< float64_t mean,
int32_t  num 
)
virtual

set nth mean

Parameters
meannew mean
numindex mean to set

Definition at line 685 of file GMM.cpp.

bool train ( CFeatures data = NULL)
virtual

set training data for use with EM or SMEM

Parameters
datatraining data
Returns
true

init features with data if necessary and assure type is correct

Implements CDistribution.

Definition at line 113 of file GMM.cpp.

float64_t train_em ( float64_t  min_cov = 1e-9,
int32_t  max_iter = 1000,
float64_t  min_change = 1e-9 
)

learn model using EM

Parameters
min_covminimum covariance
max_itermaximum iterations
min_changeminimum change in log likelihood
Returns
log likelihood of training data

Definition at line 128 of file GMM.cpp.

float64_t train_smem ( int32_t  max_iter = 100,
int32_t  max_cand = 5,
float64_t  min_cov = 1e-9,
int32_t  max_em_iter = 1000,
float64_t  min_change = 1e-9 
)

learn model using SMEM

Parameters
max_itermaximum SMEM iterations
max_candmaximum split-merge candidates
min_covminimum covariance
max_em_itermaximum iterations for EM
min_changeminimum change in log likelihood
Returns
log likelihood of training data

Definition at line 206 of file GMM.cpp.

Member Data Documentation

SGVector<float64_t> m_coefficients
protected

Mixture coefficients

Definition at line 238 of file GMM.h.

SGVector<CGaussian*> m_components
protected

Mixture components

Definition at line 236 of file GMM.h.


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

SHOGUN Machine Learning Toolbox - Documentation