因子分析(一)- EM算法求解

系列文章

因子分析(〇)- FA数学模型

因子分析(一)- EM算法求解

因子分析(二)- Gibbs采样算法求解

因子分析(三)- VB算法求解

〇、前言

EM算法(Expectation Maximization Algorithm,期望最大化算法)是一种主要用来求解参数极大似然估计的非常简单实用的学习算法。该算法是一种迭代算法,常用于含有隐变量的概率参数模型的最大似然估计或极大后验估计。当模型似然函数的解析解无法直接求出时,可使用该算法得到模型参数的局部最优解

一、Jensen不等式

我们先简单介绍Jensen不等式,学过高数(高中数学)的人都能很容易理解。对于一个凸函数 [公式] ,如果它有二阶导数,且二阶导恒大于等于0, [公式] ,对于随机变量 [公式] ,则有

[公式]

这条式子就是Jensen不等式,当且仅当 [公式] ,即 [公式] 为常量时,上式取等号。Jensen不等式应用于凹函数时,不等号的方向反向。

二、EM算法

假设给定训练样本 [公式] ,各样本之间是独立同分布的。我们希望找到训练样本所隐含的类别 [公式] ,最大化 [公式] ,这样可以写出模型的最大似然估计如下:

[公式]

这里 [公式] 是离散的,如果是连续的就把求和号换成积分号

下面开始EM算法的推导

对于每个样本 [公式]假设 [公式] 表示该样本所对应的隐含变量 [公式] 的某种分布,并满足以下条件:

[公式]

[公式] 引入似然函数中,并考虑到似然函数是凹函数,根据Jensen不等式可得:

[公式]

第二步到第三步运用了Jensen不等式,具体是:

(1)数学期望就是 [公式] , 第二步的[公式] 可以看做随机变量为 [公式] ,概率分布函数为 [公式] 的期望,即:

[公式]

(2)运用Jensen不等式,因为[公式] ,是凹函数,则有:

[公式]

根据我们之前在上面说到的,要让等号成立

[公式]

[公式]

两边求和,因为 [公式] ,得

[公式]

将这条式子代入写有“常数”的式子中,得

[公式]

这样我们就找到了未知的分布 [公式] ,似然函数的下界就有了具体的表达式。

上面建立似然函数 [公式] 的下界就是EM算法的E-step,接下来的M-step要做的就是在给定的 [公式] 下,极大化似然函数求出 [公式] 就行。这样就可以得出EM算法的一般步骤:

E-step:对每一个 [公式] 计算

[公式]

M-step:计算

[公式]

在一开始初始化模型参数 [公式]重复E步和M步,直到算法收敛或参数值稳定在某一个很小的范围内,达到精度要求即可停止。

上面这张图就很好的展示EM算法在干什么,图讲得很清楚,就不解释了。

三、FA模型的EM算法求解

给定样本集 [公式] ,其中每个 [公式] 都是一 [公式] 维空间中的向量,为了实现对 [公式] 的降维,假设:

[公式]

上一篇文章中说到, [公式] ,所以有:

[公式]

这里大家可以自己用高斯分布的边缘分布与条件分布来推,或者用多元统计分析里的结论得到。

这篇文章涉及到的推导公式,具体详细的推导都可在 我的个人站的blog看到。

注意:因为我们很容易能得到 [公式] ,对于给定的数据,均值 [公式] 是易求且固定的,所以为了方便后面的公式的推导和书写,我们令 [公式] (这一步就是去均值处理,对模型没影响,只要最后补上均值就行),并省去 [公式] 下标 [公式] ,即:

[公式]

有了 [公式][公式] 的正态分布和对应的参数的假设,我们就可得到 [公式] 之间的条件分布:

[公式]

其中

[公式]

还有另一个条件分布:


[公式]

其中

[公式]

在FA中参数 [公式] ,参数 [公式] 实际有两个未知参数,它的最大似然估计不好算,因此需要使用EM 算法求解,具体步骤如下:

首先初始化参数 [公式] ,可以取任何值。(其实假设 [公式] 也是一种初始化,是对隐变量的初始化)

E-step:求

[公式]

M-step:算

[公式]

这篇文章涉及到的推导公式,具体详细的推导都可在 我的个人站的blog看到。

通过求偏导和一系列演算,可得:

[公式]

反复执行E-step和M-step,直到模型参数的值稳定在某个较小的范围内,则EM算法的迭代终止。

四、总结

EM算法用于计算模型中未知参数后验分布的点估计,这种点估计通常不包含其他信息,但它却可以估计隐变量的真实后验分布。这种算法的证明建立在Jensen不等式的基础上,通过不断优化模型似然函数的下界,找到似然函数达到极大值时对应的参数值。

因为在M-Step中是采用求导函数的方法,所以它找到的是极值点,即局部最优解,而非全局最优解。也正是因为EM算法具有局部性,所以它找到的最终解跟初始值的选取有很大关系

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值