Updated on July 1. Updated on Jun 24.
Here is the task check-list.
- Completes derivation report.
- Adds new classes. One abstract class
_BasesMixture
. Three derived classesGaussianMixture
,BayesianGaussianMixture
,DirichletProcessGaussianMixture
- Removes numerical stability fixes for HMM. It seems that whenever there is a numerical issue, the code always adds 10*EPS in the computation. I think in some cases there is a better way to address the problem, such as normalization the extremely small variables earlier, or we just simply remove
10*EPS
which is only for HMM. - Writes updating functions for
BayesianGaussianMixtureModel
andDirichletProcessGaussianMixtureModel
according to the report. - Provides methods that allow users to initialize the model with user-provided data
- Corrects kmeans initialization. It is weird when using kmeans initialization, only means is initialized. The weights and covariances are initialized by averaging.
- Writes several checking functions for the initialization data
- Adjusts the verbose messages. When
verbose>1
, it display log-likelihood and time used in the same line of the messageIteration x
- Simplify
fit_predict
- Adds warning for
params!='wmc'
- Studies and contrasts the convergence of classical MLE / EM GMM with Bayesian GMM against the number of samples and the number of components
- Friendly warning and error messages, or automatically addressing if possible (e.g. random re-init of singular components)
- Examples that shows how models can over-fit by comparing likelihood on training and validation sets (normalized by the number of samples). For instance extend the BIC score example with a cross-validated likelihood plot
- Testing on 1-D dimensions
- Testing on Degenerating cases
- AIC, BIC for VBGMM DPGMM
- Old faithful geyser data set
- Rename score_samples
- Add integrating test
- [optional] add a partial_fit function for incremental / out-of-core fitting of (classical) GMM, for instance http://arxiv.org/abs/0712.4273
- [optional] ledoit_wolf covariance estimation
The most important progress I have done is the derivation report which include the updating functions, log-probability, and predictive distribution for all three models, and the implementation of the base class. Compared with the current scikit-learn math derivation documents, my report is consistent to PRML. It clearly depicts the updating functions of three models share a lot of patterns. We could abstract common functions into the abstract base class _MixtureBase
. The three models could inherit it and override the updating methods.
Next week I will finish the GaussianMixture
model with necessary testing functions.