阅读http://freemind.pluskid.org/machine-learning/regularized-gaussian-covariance-estimation/文章中的一些知识整理:
====================================================================
非常感谢Free Mind能够这么耐心的分析解释完一个理论,文章分析很透彻啊,受益匪浅。
“除非某个维度上的坐标全部是相等的,否则 Covariance 矩阵对角线上的元素都能保证大于零,也就不会出现 singular 的情况了。“难道把某个维度坐标去重复后就不会出现singular情况了?
=====================================================================
“一般来说,使用对角线的协方差矩阵是一种不错的降低模型复杂度的方式”
解释:
import numpy as np import pylab as pl from sklearn import mixture n_samples = 300 c_types = ['full', 'diag', 'spherical'] np.random.seed(0) C = np.array([[0., -0.7], [3.5, 1.7]]) X_train = np.dot(np.random.randn(n_samples, 2), C) pl.figure(dpi=100,figsize=(3,3)) pl.scatter(X_train[:, 0], X_train[:, 1], .8) pl.axis('tight') pl.savefig('GaussianFit-data.svg') pl.close() for c_type in c_types: clf = mixture.GMM(n_components=1, covariance_type=c_type) clf.fit(X_train) x = np.linspace(-15.0, 20.0, num=200) y = np.linspace(-10.0, 10.0, num=200) X, Y = np.meshgrid(x, y) XX = np.c_[X.ravel(), Y.ravel()] Z = np.log(-clf.eval(XX)[0]) Z = Z.reshape(X.shape) pl.figure(dpi=100,figsize=(3,3)) CS = pl.contour(X, Y, Z) pl.scatter(X_train[:, 0], X_train[:, 1], .8) pl.axis('tight') pl.savefig('GaussianFit-%s.svg' % c_type) pl.close()
====================================================================
“对于矩阵求逆或者解方程的时候出现 singular 的情况,加上一个也算是数值上的一种标准处理方式,叫做Tikhonov Regularization,Ridge Regression 本身也可以通过这个角度来解释。”跟稀疏那篇文章中提到的处理方法是类似的,岭回归确实是个很有说服力的解释吧。
====================================================================
最大后验估计(MAP)可以看做贝叶斯估计的一种特定形式。MAP与MLE(最大似然 估计)最大区别是MAP中加入了模型参数本身的概率分布或者说MLE中认为模型参数本身的概率的是均匀的,即该概率为一个固定值。
Conjugate prior-共轭先验的解释 可以看这个小插曲http://blog.csdn.net/polly_yang/article/details/8250161
终于看完了,然后看到如果看不下去的可以:
如果碰到估计 Gaussian 的协方差矩阵时结果 singular 的情况,解决方法一般有两种:
然后再补充几点不知道该放在哪里的注意事项:
====================================================================
最后再次感谢一下Free Mind博主