Free Split and Merge Expectation Maximization for MultiVaria

FSMEM can estimate MVGM parameters and number of conpounds via split/merge cluster moves
4.8K Downloads
Updated 24 Jan 2020

View License

Free Split and Merge Expectation-Maximization algorithm for Multivariate Gaussian Mixtures. This algorithm is suitable to estimate mixture parameters and the number of conpounds

Usage
------

[M , S , P ,logl] = fsmem_mvgm(Z , [option] , [M0] , [S0] , [P0]);

Inputs
------

Z Measurements (d x N)
M0 Initial mean vector. M0 can be (d x 1 x K) (default [Kini random elements from Z])
S0 Initial covariance matrix. S0 can be (d x d x K) (default [cov(Z)/40])
P0 Initial mixture probablities (1 x 1 x K) : (default [1/Kini])
options
Kini Initial number of compounds (default [5])
Kmax Maximum number of compounds (default [15])
maxite_fsmem Number of maximum iteration for the main loop of the fsmem (default [100])
maxite_fullem Number of maximum iteration for the full EM inside the main loop (default [100])
maxite_partialem Number of maximum iteration for the partial EM inside the main loop (default [100])
epsi_fullem Tolerance in loglikelihood improuvement of the Full EM (default [1e-6])
epsi_partialem Tolerance in loglikelihood improuvement of the Partial EM (default [1e-6])
lambda Covariance regularization parameter (default [0.01])
maxcands_split Maximum number of split candidate (default [5])
splitinit_epsi Split Initialisation parameter for the mean of splitted cluster (default [1])
maxcands_merge Maximum number of merge candidate (default [5])
covtype Covariance type : 0 = full , 1 = elliptical , 2 = spherical (default [0])
fail_exit Number of tentatives of split/merge operations before exit. If fail_exit = 0, then FSMEM = EM

Ouputs
-------

M Estimated mean vector (d x 1 x Kest), where Kest is the number of estimated coupounds
S Estimated covariance vector (d x d x Kest)
P Estimated initial probabilities (1 x 1 x Kest)
logl Final loglikelihood

Please run mexme_fsmem_mvgm.m in order to compile mex-files on your own plateform (Be sure than "mex -setup" have been previously)

Please run test_fsmem_mvgm for the demo

Cite As

Sebastien PARIS (2024). Free Split and Merge Expectation Maximization for MultiVaria (https://www.mathworks.com/matlabcentral/fileexchange/22711-free-split-and-merge-expectation-maximization-for-multivaria), MATLAB Central File Exchange. Retrieved .

MATLAB Release Compatibility
Created with R2016b
Compatible with any release
Platform Compatibility
Windows macOS Linux

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!
Version Published Release Notes
2.1

Fixed for modern Matlab & OS64

2.0

Bug fixes in description/online help

1.13.0.0

-Correct typo in the header of fsmem_mvgm.c

1.12.0.0

-Fix a bug when true number of conpounds is unity, thanks to Jonathan.

1.11.0.0

-change input/output parsing
-add seed random generator option

1.10.0.0

-Minor changes

1.9.0.0

- Fix a bug in parsing inputs

1.8.0.0

-Minor changes

1.7.0.0

-Fixed bug for Linux64 and GCC

1.6.0.0

- Improve description and mexme_fsmem_mvgm
- Should compile on Linux

1.5.0.0

Minor code cleaning and should compile on non-C99 compiler

1.4.0.0

- add options.Kmin
- Update qsindex with an inproved algorithm

1.2.0.0

Correct a bug in likelihood_mvgm.c when d=1

1.1.0.0

-Add HTML file report

1.0.0.0