上一节我们介绍了用EM算法求解混合高斯模型,但这个算法通常是在样本数足够多的情况下才成立,即满足样本数m远远大于特征数n。
如果n >> m,那么在模型计算参数的时候会遇到一些问题。计算均值和协方差函数这两个参数的公式为:
当n >> m时,我们会发现Σ是奇异矩阵,这也就意味着Σ-1不存在,并且1/|Σ|1/2 = 1/0,这几项在估计多元高斯分布的密度函数中都会用到,因此我们没法进行拟合。
更一般的,如果m没有在一定范围内大于n,那么用极大似然估计法估计参数的效果都很差。然而我们还是希望用多元高斯分布来估计样本,应该怎么办呢?
限制协方差矩阵
如果我们没有足够的数据来估计协方差矩阵Σ,那么可以考虑给Σ做一些假设。比如我们可以假设Σ是对角矩阵,那么可以计算出:
回顾一下之前我们说过高斯密度函数的等高线是椭圆,如果Σ是对角矩阵,那么就意味着椭圆的主轴与坐标轴是平行的。
有时我们会对Σ做更强的假设,Σ不仅是对角矩阵,而且对角上每个元素的值都是相等的,我们可以写成:Σ = σ2I,其中 σ2是我们可以控制的参数,通过极大似然估计可以计算出:
这个模型对应的等高线是个圆形(在二维空间是圆,在三维空间是球)。
如果我们要估计出完整的Σ,需要满足m ≥ n + 1才能保证Σ是非奇异矩阵。而如果使用上面两种假设,只需要满足m ≥ 2 就能保证Σ是非奇异矩阵。
但是使用上面两种假设也是有明显缺点的,我们假设了特征之间是独立不相关的,这个假设太强了,我们还是希望能捕捉到特征之间的关系的。接下来我们介绍一种因子分析的模型,它使用了比对角矩阵更多的特征,同时保留了特征之间的关系,并且不需要计算一个完整的Σ。
边缘与条件高斯分布
在引入因子分析模型之前,我们先介绍下如何在多元高斯分布下求解边缘与条件高斯分布。
假设我们有如下的随机变量:
其中x1 ∈ Rr,x2 ∈ Rs,x ∈ Rr + s。假设x服从高斯分布N(μ, Σ),其中
上式中的μ1 ∈ Rr,μ2 ∈ Rs,Σ11 ∈ Rr x r,Σ12 ∈ Rr x s,以此类推。注意由于协方差矩阵的对称性,Σ12 = Σ21T。
在我们的假设中,x1和x2的联合分布是多元高斯分布,那么x1的边缘分布是什么呢?不难证明,E[x1] = μ1,Cov(x1) = E[(x1 - μ1)(x1 - μ1)T] = Σ11。关于Cov(x1)的证明如下:
比对矩阵左上角部分就可得到结论。由此可见,多元高斯分布的边缘分布仍然是多元高斯分布,即x1 ~ N(μ1, Σ11)。
接下来我们看条件分布应该如何求解。根据多元高斯分布的定义,可得x1 | x2 ~ N(μ1|2, Σ1|2),其中:
在接下来的因子分析模型推导中,上面这些公式会非常有用。
因子分析模型
在因子分析(factor analysis)模型中,我们给出(x, z)的联合分布如下:
其中z ∈ Rk是隐含随机变量,μ ∈ Rn,变换矩阵Λ ∈ Rn x k,对角矩阵Ψ ∈ Rn x n,k通常选择为比n小的一个数。
上述过程可以理解为:首先在k维空间中按照多元高斯分布生成z(i),然后通过μ + Λz(i)将z(i)映射到n维空间中,最后由于x(i)与上述模型之间存在误差,所以在模型基础上增加协方差矩阵Ψ的噪音,从而得到训练数据x(i)。
上述过程可以等价表示为:
其中ε和z是独立的
上述过程可以进一步表述为:高维样本点是通过低维样本点经过高斯分布、线性变换、误差扰动生成的,因此高维数据可以用低维数据来表示。
下面我们开始计算模型参数。由于x和z的联合分布符合多元高斯分布,所以可以表示为:
我们需要计算出μzx和Σ。首先由于z ~ N(0, I),所以E[z] = 0,因此有:
将两个结果结合起来,就有:
然后我们来计算Σ。我们很容易证明Σzz = Cov(z) = I。另外,我们也可以推导出Σzx:
同样我们也可以推导出Σxx:
综合上述结果,我们可以得到:
由此,我们也能得到x的边缘分布是x ~ N(μ, ΛΛT + Ψ)。因此对于样本{x(i); i=1, ..., m},我们对其进行极大似然估计:
但是我们没有办法通过求导的方式获得各个参数,根据上一节的经验,我们需要借助EM算法进行求解。
因子分析的EM算法
E步的推导比较简单。我们需要计算Qi(z(i)) = p(z(i)|x(i); μ, Λ, Ψ)。根据之前条件分布的讨论,z(i)|x(i); μ, Λ, Ψ ~ N(μz(i)|x(i), Σz(i)|x(i)),其中:
将其代入到Qi(z(i))中,可得:
接下来我们来看M步,我们需要最大化的目标函数是:
我们需要分别求出μ, Λ, Ψ。这三个参数的推导需要有一定数学技巧,这里就省略推导步骤,直接给出结果了。感兴趣的读者可以查阅讲义部分对Λ的推导。
其中Ψ是对角矩阵,只需将Φ上对角线上的元素放在Ψ对应位置上就得到了Ψ。
总结
- 当样本数m远远小于特征数n时,用EM算法求解混合高斯模型是不可行的,我们需要使用因子分析模型
- 因子分析模型的方法本质是:高维样本点是通过低维样本点经过高斯分布、线性变换、误差扰动生成的,因此高维数据可以用低维数据来表示
参考资料
- 斯坦福大学机器学习课CS229讲义 Factor Analysis
- 网易公开课:机器学习课程 双语字幕视频