参考文献:http://blog.sina.com.cn/s/blog_77b197510101ertw.html
Matlab做聚类分析的时候,gmdistribution.fit函数出现如下爆错:
Error using gmcluster (line 180)
Ill-conditioned covariance created at iteration 4.
Error in gmdistribution.fit (line 174)
[S,NlogL,optimInfo] =...
Error in Main>gmmodel (line 84)
gm= gmdistribution.fit(x,compones,'Options',options);
Error in Main (line 27)
这个问题,原因应该是协方差矩阵,ill-Condition或者变为奇异阵(行列式为0,无法求逆矩阵,而计算多维高斯密度需要用到逆矩阵)。那么,对于这个问题,该如何处理呢?
参考文献给出了解决方案,即给协方差矩阵的对角线加一个很小的正数值(这个在我的程序中进行了试验,发现他的意义在于在某次迭代过后协方差矩阵变成全部元素为0的矩阵,加上一个很小的正数后是过程可以继续),改为
gmdistribution.fit(fea',3, 'Regularize', 1e-5)
之后便得以解决