如果数据 x(i)∈Rn 是来自混合高斯分布,那么可用 EM 算法来拟合混合模型,但假设前提是有足够的数据,我们能发现数据中的多高斯结构,这就要训练数据集大小 m 远大于数据维度 n。
如果 n>>m 呢?那就很难对数据建模,即使是一个高斯。m 个数据点只能在低维度空间,如果要把数据建模为高斯分布,用极大似然估计来估计均值和协方差:
我们会发现 Σ 是奇异矩阵。例如当 m=2,n=5,如下例所示,最后 Σ =0。
import numpy as np x1=np.array([2,3,7,6,5]) x2=np.array([7,9,3,1,4]) x1.shape=(5,1) x2.shape=(5,1) mu=(x1+x2)/2.0 # ".0" is request var=(np.dot(x1-mu,np.transpose(x1-mu))+np.dot(x2-mu,np.transpose(x2-mu)))/2.0 print "The covariance of the matrix is %s." % np.linalg.det(var)