support class for MOG_diag_ML() and MOG_diag_MAP() More...
#include <itpp/stat/mog_diag_em.h>
Public Member Functions | |
MOG_diag_EM_sup () | |
Default constructor. | |
~MOG_diag_EM_sup () | |
Default destructor. | |
void | ml (MOG_diag &model_in, Array< vec > &X_in, int max_iter_in=10, double var_floor_in=0.0, double weight_floor_in=0.0, bool verbose_in=false) |
ADD DOCUMENTATION HERE. | |
void | map (MOG_diag &model_in, MOG_diag &prior_model, Array< vec > &X_in, int max_iter_in=10, double alpha_in=0.5, double var_floor_in=0.0, double weight_floor_in=0.0, bool verbose_in=false) |
ADD DOCUMENTATION HERE. | |
void | cleanup () |
Release memory used by the model. The model will be empty. | |
void | load (const std::string &name_in) |
Initialise the model by loading the parameters from a model file. | |
void | convert_to_full () |
Do nothing. Present for compatability with the MOG_generic class. | |
double | log_lhood_single_gaus (const double *c_x_in, const int k) const |
calculate the log likelihood of C vector c_x_in using only Gaussian k | |
double | log_lhood_single_gaus (const vec &x_in, const int k) const |
calculate the log likelihood of IT++ vector x_in using only Gaussian k | |
virtual double | log_lhood_single_gaus (const vec &x_in, const int k) |
calculate the log likelihood of vector x_in using only Gaussian k | |
double | log_lhood (const double *c_x_in) |
calculate the log likelihood of C vector c_x_in | |
double | log_lhood (const vec &x_in) |
calculate the log likelihood of IT++ vector x_in | |
double | lhood (const double *c_x_in) |
calculate the likelihood of C vector c_x_in | |
double | lhood (const vec &x_in) |
calculate the likelihood of IT++ vector x_in | |
double | avg_log_lhood (const double **c_x_in, int N) |
calculate the average log likelihood of an array of C vectors ( c_x_in ) | |
double | avg_log_lhood (const Array< vec > &X_in) |
calculate the average log likelihood of an array of IT++ vectors ( X_in ) | |
void | init () |
Initialise the model to be empty. | |
void | init (const int &K_in, const int &D_in, bool full_in=false) |
initialise the model so that all Gaussians have zero mean and unit variance for all dimensions | |
void | init (Array< vec > &means_in, bool full_in=false) |
Initialise the model using user supplied mean vectors. | |
void | init (Array< vec > &means_in, Array< vec > &diag_covs_in, vec &weights_in) |
Initialise the model using user supplied parameters (diagonal covariance version) | |
void | init (Array< vec > &means_in, Array< mat > &full_covs_in, vec &weights_in) |
Initialise the model using user supplied parameters (full covariance version) | |
bool | is_valid () const |
Returns true if the model's parameters are valid. | |
bool | is_full () const |
Returns true if the model has full covariance matrices. | |
int | get_K () const |
Return the number of Gaussians. | |
int | get_D () const |
Return the dimensionality. | |
vec | get_weights () const |
Obtain a copy of the weight vector. | |
Array< vec > | get_means () const |
Obtain a copy of the array of mean vectors. | |
Array< vec > | get_diag_covs () const |
Obtain a copy of the array of diagonal covariance vectors. | |
Array< mat > | get_full_covs () const |
Obtain a copy of the array of full covariance matrices. | |
void | set_means (Array< vec > &means_in) |
Set the means of the model. | |
void | set_diag_covs (Array< vec > &diag_covs_in) |
Set the diagonal covariance vectors of the model. | |
void | set_full_covs (Array< mat > &full_covs_in) |
Set the full covariance matrices of the model. | |
void | set_weights (vec &weights_in) |
Set the weight vector of the model. | |
void | set_means_zero () |
Set the means in the model to be zero. | |
void | set_diag_covs_unity () |
Set the diagonal covariance vectors to be unity. | |
void | set_full_covs_unity () |
Set the full covariance matrices to be unity. | |
void | set_weights_uniform () |
Set all the weights to 1/K, where K is the number of Gaussians. | |
void | set_checks (bool do_checks_in) |
Enable/disable internal checks for likelihood functions. | |
void | set_paranoid (bool paranoid_in) |
Enable/disable paranoia about numerical stability. | |
virtual void | save (const std::string &name_in) const |
Save the model's parameters to a model file. | |
virtual void | join (const MOG_generic &B_in) |
Mathematically join the model with a user supplied model. | |
virtual void | convert_to_diag () |
Convert the model to use diagonal covariances. | |
Protected Member Functions | |
void | update_internals () |
ADD DOCUMENTATION HERE. | |
void | sanitise_params () |
ADD DOCUMENTATION HERE. | |
double | ml_update_params () |
ADD DOCUMENTATION HERE. | |
void | ml_iterate () |
ADD DOCUMENTATION HERE. | |
void | setup_means () |
additional processing of mean vectors, done as the last step of mean initialisation | |
void | setup_covs () |
additional processing of covariance vectors/matrices, done as the last step of covariance initialisation | |
void | setup_weights () |
additional processing of the weight vector, done as the last step of weight initialisation | |
void | setup_misc () |
additional processing of miscellaneous parameters, done as the last step of overall initialisation | |
double | log_lhood_single_gaus_internal (const double *c_x_in, const int k) const |
ADD DOCUMENTATION HERE. | |
double | log_lhood_single_gaus_internal (const vec &x_in, const int k) const |
ADD DOCUMENTATION HERE. | |
virtual double | log_lhood_single_gaus_internal (const vec &x_in, const int k) |
ADD DOCUMENTATION HERE. | |
double | log_lhood_internal (const double *c_x_in) |
ADD DOCUMENTATION HERE. | |
double | log_lhood_internal (const vec &x_in) |
ADD DOCUMENTATION HERE. | |
double | lhood_internal (const double *c_x_in) |
ADD DOCUMENTATION HERE. | |
double | lhood_internal (const vec &x_in) |
ADD DOCUMENTATION HERE. | |
double ** | enable_c_access (Array< vec > &A_in) |
Enable C style access to an Array of vectors (vec) | |
int ** | enable_c_access (Array< ivec > &A_in) |
Enable C style access to an Array of vectors (ivec) | |
double * | enable_c_access (vec &v_in) |
Enable C style access to a vector (vec) | |
int * | enable_c_access (ivec &v_in) |
Enable C style access to a vector (ivec) | |
double ** | disable_c_access (double **A_in) |
Disable C style access to an Array of vectors (vec) | |
int ** | disable_c_access (int **A_in) |
Disable C style access to an Array of vectors (ivec) | |
double * | disable_c_access (double *v_in) |
Disable C style access to a vector (vec) | |
int * | disable_c_access (int *v_in) |
Disable C style access to a vector (ivec) | |
void | zero_all_ptrs () |
ADD DOCUMENTATION HERE. | |
void | free_all_ptrs () |
ADD DOCUMENTATION HERE. | |
bool | check_size (const vec &x_in) const |
Check if vector x_in has the same dimensionality as the model. | |
bool | check_size (const Array< vec > &X_in) const |
Check if all vectors in Array X_in have the same dimensionality as the model. | |
bool | check_array_uniformity (const Array< vec > &A) const |
Check if all vectors in Array X_in have the same dimensionality. | |
void | set_means_internal (Array< vec > &means_in) |
ADD DOCUMENTATION HERE. | |
void | set_diag_covs_internal (Array< vec > &diag_covs_in) |
ADD DOCUMENTATION HERE. | |
void | set_full_covs_internal (Array< mat > &full_covs_in) |
ADD DOCUMENTATION HERE. | |
void | set_weights_internal (vec &_weigths) |
ADD DOCUMENTATION HERE. | |
void | set_means_zero_internal () |
ADD DOCUMENTATION HERE. | |
void | set_diag_covs_unity_internal () |
ADD DOCUMENTATION HERE. | |
void | set_full_covs_unity_internal () |
ADD DOCUMENTATION HERE. | |
void | set_weights_uniform_internal () |
ADD DOCUMENTATION HERE. | |
void | convert_to_diag_internal () |
ADD DOCUMENTATION HERE. | |
void | convert_to_full_internal () |
ADD DOCUMENTATION HERE. | |
Protected Attributes | |
bool | verbose |
Whether we print the progress. | |
int | N |
number of training vectors | |
int | max_iter |
Maximum number of iterations. | |
double ** | c_X |
'C' pointers to training vectors | |
double | var_floor |
ADD DOCUMENTATION HERE. | |
double | weight_floor |
ADD DOCUMENTATION HERE. | |
double ** | c_means |
pointers to the mean vectors | |
double ** | c_diag_covs |
pointers to the covariance vectors | |
double ** | c_diag_covs_inv_etc |
pointers to the inverted covariance vectors | |
double * | c_weights |
pointer to the weight vector | |
double * | c_log_weights |
pointer to the log version of the weight vector | |
double * | c_log_det_etc |
pointer to the log_det_etc vector | |
bool | do_checks |
indicates whether checks on input data are done | |
bool | valid |
indicates whether the parameters are valid | |
bool | full |
indicates whether we are using full or diagonal covariance matrices | |
bool | paranoid |
indicates whether we are paranoid about numerical stability | |
int | K |
number of gaussians | |
int | D |
dimensionality | |
Array< vec > | means |
means | |
Array< vec > | diag_covs |
diagonal covariance matrices, stored as vectors | |
Array< mat > | full_covs |
full covariance matrices | |
vec | weights |
weights | |
double | log_max_K |
Pre-calcualted std::log(std::numeric_limits<double>::max() / K), where K is the number of Gaussians. | |
vec | log_det_etc |
Gaussian specific pre-calcualted constants. | |
vec | log_weights |
Pre-calculated log versions of the weights. | |
Array< mat > | full_covs_inv |
Pre-calcuated inverted version of each full covariance matrix. | |
Array< vec > | diag_covs_inv_etc |
Pre-calcuated inverted version of each diagonal covariance vector, where the covariance elements are first multiplied by two. | |
support class for MOG_diag_ML() and MOG_diag_MAP()
Definition at line 43 of file mog_diag_em.h.
|
inlineprotected |
ADD DOCUMENTATION HERE.
update log versions of parameters and any necessary constants
Definition at line 41 of file mog_diag_em.cpp.
References itpp::MOG_diag::c_diag_covs, itpp::MOG_diag::c_diag_covs_inv_etc, itpp::MOG_diag::c_log_det_etc, itpp::MOG_diag::c_log_weights, itpp::MOG_diag::c_weights, itpp::MOG_generic::D, itpp::MOG_generic::K, itpp::log(), and itpp::m_2pi.
Referenced by ml_iterate().
|
inlineprotected |
ADD DOCUMENTATION HERE.
for helping to avoid numerical instability
Definition at line 66 of file mog_diag_em.cpp.
References itpp::MOG_diag::c_diag_covs, itpp::MOG_diag::c_weights, itpp::MOG_generic::D, itpp::MOG_generic::K, var_floor, and weight_floor.
Referenced by ml_iterate().
|
protected |
ADD DOCUMENTATION HERE.
update parameters using the Maximum Likelihood version of the EM algorithm
Definition at line 84 of file mog_diag_em.cpp.
References itpp::MOG_diag::c_diag_covs, itpp::MOG_diag::c_log_weights, itpp::MOG_diag::c_means, itpp::MOG_diag::c_weights, c_X, itpp::MOG_generic::D, itpp::exp(), itpp::MOG_generic::K, itpp::log(), itpp::log_add(), itpp::MOG_diag::log_lhood_single_gaus_internal(), itpp::MOG_generic::log_max_K, N, itpp::MOG_generic::paranoid, itpp::sum(), and itpp::trunc_exp().
Referenced by ml_iterate().
|
inlinevirtualinherited |
Release memory used by the model. The model will be empty.
Reimplemented from itpp::MOG_generic.
Definition at line 111 of file mog_diag.h.
References itpp::MOG_generic::cleanup().
Referenced by ml(), and itpp::MOG_diag_kmeans_sup::run().
|
virtualinherited |
Initialise the model by loading the parameters from a model file.
name_in | The model's filename |
Reimplemented from itpp::MOG_generic.
Definition at line 277 of file mog_diag.cpp.
References itpp::MOG_generic::convert_to_diag(), itpp::MOG_generic::full, and itpp::MOG_generic::load().
|
inherited |
Initialise the model to be empty.
Definition at line 43 of file mog_generic.cpp.
References itpp::MOG_generic::cleanup().
Referenced by itpp::MOG_generic::join(), itpp::MOG_generic::load(), ml(), and itpp::MOG_diag_kmeans_sup::run().
|
inherited |
initialise the model so that all Gaussians have zero mean and unit variance for all dimensions
K_in | Number of Gaussians |
D_in | Dimensionality |
full_in | If true, use full covariance matrices; if false, use diagonal covariance matrices. Default = false. |
Definition at line 46 of file mog_generic.cpp.
References itpp::MOG_generic::D, itpp::MOG_generic::do_checks, itpp::MOG_generic::full, it_assert, itpp::MOG_generic::K, itpp::MOG_generic::paranoid, itpp::MOG_generic::set_diag_covs_unity_internal(), itpp::MOG_generic::set_full_covs_unity_internal(), itpp::MOG_generic::set_means_zero_internal(), itpp::MOG_generic::set_weights_uniform_internal(), itpp::MOG_generic::setup_misc(), and itpp::MOG_generic::valid.
|
inherited |
Initialise the model using user supplied mean vectors.
means_in | Array of mean vectors |
full_in | If true, use full covariance matrices; if false, use diagonal covariance matrices. Default = false. |
Definition at line 69 of file mog_generic.cpp.
References itpp::MOG_generic::check_array_uniformity(), itpp::MOG_generic::D, itpp::MOG_generic::do_checks, itpp::MOG_generic::full, it_assert, itpp::MOG_generic::K, itpp::MOG_generic::paranoid, itpp::MOG_generic::set_diag_covs_unity_internal(), itpp::MOG_generic::set_full_covs_unity_internal(), itpp::MOG_generic::set_means(), itpp::MOG_generic::set_weights_uniform_internal(), itpp::MOG_generic::setup_misc(), itpp::Array< T >::size(), and itpp::MOG_generic::valid.
|
inherited |
Initialise the model using user supplied parameters (diagonal covariance version)
means_in | Array of mean vectors |
diag_covs_in | Array of vectors representing diagonal covariances |
weights_in | vector of weights |
Definition at line 89 of file mog_generic.cpp.
References itpp::MOG_generic::check_array_uniformity(), itpp::MOG_generic::D, itpp::MOG_generic::do_checks, itpp::MOG_generic::full, it_assert, itpp::MOG_generic::K, itpp::MOG_generic::paranoid, itpp::MOG_generic::set_diag_covs_internal(), itpp::MOG_generic::set_means_internal(), itpp::MOG_generic::set_weights_internal(), itpp::MOG_generic::setup_misc(), itpp::Array< T >::size(), and itpp::MOG_generic::valid.
|
inherited |
Initialise the model using user supplied parameters (full covariance version)
means_in | Array of mean vectors |
full_covs_in | Array of covariance matrices |
weights_in | vector of weights |
Definition at line 110 of file mog_generic.cpp.
References itpp::MOG_generic::check_array_uniformity(), itpp::MOG_generic::D, itpp::MOG_generic::do_checks, itpp::MOG_generic::full, it_assert, itpp::MOG_generic::K, itpp::MOG_generic::paranoid, itpp::MOG_generic::set_full_covs_internal(), itpp::MOG_generic::set_means_internal(), itpp::MOG_generic::set_weights_internal(), itpp::MOG_generic::setup_misc(), itpp::Array< T >::size(), and itpp::MOG_generic::valid.
|
inherited |
Set the means of the model.
Definition at line 351 of file mog_generic.cpp.
References itpp::MOG_generic::set_means_internal(), and itpp::MOG_generic::valid.
Referenced by itpp::MOG_generic::init().
|
inherited |
Set the diagonal covariance vectors of the model.
Definition at line 365 of file mog_generic.cpp.
References itpp::MOG_generic::set_diag_covs_internal(), and itpp::MOG_generic::valid.
|
inherited |
Set the full covariance matrices of the model.
Definition at line 372 of file mog_generic.cpp.
References itpp::MOG_generic::set_full_covs_internal(), and itpp::MOG_generic::valid.
|
inherited |
Set the weight vector of the model.
Definition at line 379 of file mog_generic.cpp.
References itpp::MOG_generic::set_weights_internal(), and itpp::MOG_generic::valid.
|
inlineinherited |
Enable/disable internal checks for likelihood functions.
do_checks_in | If true, checks are enabled; if false, checks are disabled |
Definition at line 214 of file mog_generic.h.
|
inlineinherited |
Enable/disable paranoia about numerical stability.
paranoid_in | If true, calculate likelihoods using a safer, but slower method. |
Definition at line 219 of file mog_generic.h.
|
virtualinherited |
Save the model's parameters to a model file.
name_in | The model's filename |
Definition at line 438 of file mog_generic.cpp.
References itpp::it_file::close(), itpp::MOG_generic::diag_covs, itpp::MOG_generic::full, itpp::MOG_generic::full_covs, itpp::MOG_generic::means, itpp::MOG_generic::valid, and itpp::MOG_generic::weights.
|
virtualinherited |
Mathematically join the model with a user supplied model.
\param B_in user supplied model \note The Arrays of mean vectors and covariance vectors/matrices from the two models are simply concatenated, while the weights of the resultant model are a function of the original weights and numbers of Gaussians from both models. Specifically,
, where is the new weight vector, and are the weight vectors from model A and B, while and . In turn, and are the numbers of Gaussians in model A and B, respectively.
See On transforming statistical models... for more information.
Definition at line 453 of file mog_generic.cpp.
References itpp::concat(), itpp::MOG_generic::D, itpp::MOG_generic::diag_covs, itpp::MOG_generic::full, itpp::MOG_generic::full_covs, itpp::MOG_generic::get_D(), itpp::MOG_generic::get_diag_covs(), itpp::MOG_generic::get_full_covs(), itpp::MOG_generic::get_K(), itpp::MOG_generic::get_means(), itpp::MOG_generic::get_weights(), itpp::MOG_generic::init(), itpp::MOG_generic::is_full(), itpp::MOG_generic::is_valid(), it_assert, itpp::MOG_generic::K, itpp::MOG_generic::means, itpp::MOG_generic::valid, and itpp::MOG_generic::weights.
|
virtualinherited |
Convert the model to use diagonal covariances.
Definition at line 499 of file mog_generic.cpp.
References itpp::MOG_generic::convert_to_diag_internal(), and itpp::MOG_generic::valid.
Referenced by itpp::MOG_diag::load().
|
protectedinherited |
Gaussian specific pre-calcualted constants.
Definition at line 317 of file mog_generic.h.
Referenced by itpp::MOG_generic::cleanup(), itpp::MOG_generic::log_lhood_single_gaus_internal(), itpp::MOG_diag::setup_covs(), and itpp::MOG_generic::setup_covs().
Generated on Sat Jul 6 2013 10:54:35 for IT++ by Doxygen 1.8.2