#include <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. |
void itpp::MOG_diag::cleanup | ( | ) | [inline, virtual, inherited] |
Release memory used by the model. The model will be empty.
Reimplemented from itpp::MOG_generic.
References itpp::MOG_diag::free_all_ptrs().
Referenced by ml(), itpp::MOG_diag_kmeans_sup::run(), and itpp::MOG_diag::~MOG_diag().
void itpp::MOG_generic::convert_to_diag | ( | ) | [virtual, inherited] |
Convert the model to use diagonal covariances.
References itpp::MOG_generic::convert_to_diag_internal(), and itpp::MOG_generic::valid.
Referenced by itpp::MOG_diag::load(), and itpp::MOG_diag::MOG_diag().
void itpp::MOG_generic::init | ( | Array< vec > & | means_in, | |
Array< mat > & | full_covs_in, | |||
vec & | weights_in | |||
) | [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 |
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.
void itpp::MOG_generic::init | ( | Array< vec > & | means_in, | |
Array< vec > & | diag_covs_in, | |||
vec & | weights_in | |||
) | [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 |
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.
void itpp::MOG_generic::init | ( | Array< vec > & | means_in, | |
bool | full_in = false | |||
) | [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. |
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.
void itpp::MOG_generic::init | ( | const int & | K_in, | |
const int & | D_in, | |||
bool | full_in = false | |||
) | [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. |
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.
void itpp::MOG_generic::init | ( | ) | [inherited] |
Initialise the model to be empty.
References itpp::MOG_generic::cleanup().
Referenced by itpp::MOG_generic::join(), itpp::MOG_generic::load(), ml(), itpp::MOG_diag::MOG_diag(), itpp::MOG_generic::MOG_generic(), and itpp::MOG_diag_kmeans_sup::run().
void itpp::MOG_generic::join | ( | const MOG_generic & | B_in | ) | [virtual, inherited] |
Mathematically join the model with a user supplied model.
B_in | user supplied model |
References 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.
void itpp::MOG_diag::load | ( | const std::string & | name_in | ) | [virtual, inherited] |
Initialise the model by loading the parameters from a model file.
name_in | The model's filename |
Reimplemented from itpp::MOG_generic.
References itpp::MOG_generic::convert_to_diag(), and itpp::MOG_generic::full.
Referenced by itpp::MOG_diag::MOG_diag().
double itpp::MOG_diag_EM_sup::ml_update_params | ( | ) | [protected] |
ADD DOCUMENTATION HERE.
update parameters using the Maximum Likelihood version of the EM algorithm
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().
void itpp::MOG_diag_EM_sup::sanitise_params | ( | ) | [inline, protected] |
ADD DOCUMENTATION HERE.
for helping to avoid numerical instability
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().
void itpp::MOG_generic::save | ( | const std::string & | name_in | ) | const [virtual, inherited] |
Save the model's parameters to a model file.
name_in | The model's filename |
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.
void itpp::MOG_generic::set_checks | ( | bool | do_checks_in | ) | [inline, inherited] |
Enable/disable internal checks for likelihood functions.
do_checks_in | If true, checks are enabled; if false, checks are disabled |
References itpp::MOG_generic::do_checks.
void itpp::MOG_generic::set_diag_covs | ( | Array< vec > & | diag_covs_in | ) | [inherited] |
Set the diagonal covariance vectors of the model.
References itpp::MOG_generic::set_diag_covs_internal(), and itpp::MOG_generic::valid.
void itpp::MOG_generic::set_full_covs | ( | Array< mat > & | full_covs_in | ) | [inherited] |
Set the full covariance matrices of the model.
References itpp::MOG_generic::set_full_covs_internal(), and itpp::MOG_generic::valid.
void itpp::MOG_generic::set_means | ( | Array< vec > & | means_in | ) | [inherited] |
Set the means of the model.
References itpp::MOG_generic::set_means_internal(), and itpp::MOG_generic::valid.
Referenced by itpp::MOG_generic::init().
void itpp::MOG_generic::set_paranoid | ( | bool | paranoid_in | ) | [inline, inherited] |
Enable/disable paranoia about numerical stability.
paranoid_in | If true, calculate likelihoods using a safer, but slower method. |
References itpp::MOG_generic::paranoid.
void itpp::MOG_generic::set_weights | ( | vec & | weights_in | ) | [inherited] |
Set the weight vector of the model.
References itpp::MOG_generic::set_weights_internal(), and itpp::MOG_generic::valid.
void itpp::MOG_diag_EM_sup::update_internals | ( | ) | [inline, protected] |
ADD DOCUMENTATION HERE.
update log versions of parameters and any necessary constants
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, and itpp::log().
Referenced by ml_iterate().
vec itpp::MOG_generic::log_det_etc [protected, inherited] |
Gaussian specific pre-calcualted constants.
Referenced by itpp::MOG_generic::cleanup(), itpp::MOG_generic::log_lhood_single_gaus_internal(), itpp::MOG_generic::setup_covs(), and itpp::MOG_diag::setup_covs().