Free Split and Merge Expectation Maximization for MultiVaria

FSMEM can estimate MVGM parameters and number of conpounds via split/merge cluster moves
4.9K 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 (2026). 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
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