美文网首页机器学习
机器学习笔记12: 因子分析

机器学习笔记12: 因子分析

作者: secondplayer | 来源:发表于2018-07-15 21:40 被阅读122次

    上一节我们介绍了用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算法求解混合高斯模型是不可行的,我们需要使用因子分析模型
    • 因子分析模型的方法本质是:高维样本点是通过低维样本点经过高斯分布、线性变换、误差扰动生成的,因此高维数据可以用低维数据来表示

    参考资料

    相关文章

      网友评论

        本文标题:机器学习笔记12: 因子分析

        本文链接:https://www.haomeiwen.com/subject/tkyppftx.html