这是高斯混合模型的变分贝叶斯推理方法。与EM算法(最大似然估计)不同,它可以自动确定混合成分k的数量。请尝试以下代码进行演示:
关闭所有;清晰;
D = 2;
K = 3;
N = 2000;
[X,z] = mixGaussRnd(d,k,n);
plotClass (X, z);
M = floor(n/2);
X1 = X(:,1:m);
X2 = X(:,(m+1):end);
% VB拟合
[y1,模型,L] = mixGaussVb(X1,10);
图;
plotClass (X1, y1);
图;
情节(左)
预测测试数据
[y2, R] = mixGaussVbPred(模型,X2);
图;
plotClass (X2, y2);
数据集由3个集群组成。您只需要设置一个比集群的固有数量大的数字(比如10)。算法会自动找到合适的k。
算法的详细描述可以在参考文献中找到。
模式识别与机器学习Christopher M. Bishop著(P.474)
根据要求,我提供了样本外推理的预测函数。
此函数现在是PRML工具箱的一部分(//www.tianjin-qmedu.com/matlabcentral/fileexchange/55826-pattern-recognition-and-machine-learning-toolbox).
引用作为
莫陈(2022)。高斯混合模型的变分贝叶斯推理(//www.tianjin-qmedu.com/matlabcentral/fileexchange/35362-variational-bayesian-inference-for-gaussian-mixture-model), MATLAB中央文件交换。检索.
MATLAB版本兼容性
使用R2016a创建
与任何版本兼容