文章目录

一、EM算法函数

1.1 EM算法问题导入

调查我们学校的男生和女生的身高分布。 假设你在校园里随便找了100个男生和100个女生。调查学生的身高分布。将他们按照性别划分为两组,然后先统计抽样得到的100个男生的身高。假设他们的身高是服从正态分布的。但是这个分布的均值μ和方差 EM算法_样本集我们不知道,这两个参数就是我们要估计的。
记作 EM算法_似然函数_02

问题分析:设样本集EM算法_EM算法_03(N=100), EM算法_概率密度函数_04为概率密度函数,表示抽到男生EM算法_概率密度函数_05的概率。

由于100个样本之间独立同分布,所以我同时抽到这100个男生的概率就是他们各自概率的乘积,也就是样本集X中各个样本的联合概率,用 似然函数 EM算法_似然函数_06 表示:
EM算法_EM算法_07

找到一个参数 EM算法_似然函数_08,使得抽到 EM算法_概率密度函数_09 这组样本的概率最大,也就是说需要其对应的似然函数 EM算法_概率密度函数_10最大。满足条件的EM算法_似然函数_08 叫做 EM算法_似然函数_08的最大似然估计量:
EM算法_样本集_13

1.2 求解最大似然函数 估计值
  1. 对 似然函数EM算法_样本集_14取对数:
    EM算法_EM算法_15
  2. 对上式求导,令导数为 0 ,得到似然方程。
  3. 求解似然方程,得到的参数EM算法_概率密度函数_16
附 符合高斯分布 概率密度函数

若给定一组样本EM算法_概率密度函数_17已知它们来自于高斯分布EM算法_样本集_18,试估计参数 EM算法_似然函数_19

EM算法_概率密度函数_20

EM算法_概率密度函数_21


此时我们已经获得符合高斯分布的概率密度函数:

EM算法_EM算法_22 最大化,我们得到最大似然解(即样本均值):

EM算法_似然函数_23

EM算法_样本集 最大化,我们得到(样本方差。):
EM算法_EM算法_25

但是这个解不是无偏的,由 EM算法_似然函数_26 我们可以计算它们的期望:
EM算法_似然函数_27

用到了:

  • EM算法_样本集_28时,EM算法_EM算法_29
  • EM算法_EM算法_30时,EM算法_样本集_31

因此,方差的一个无偏估计为:
EM算法_EM算法_32

随着 EM算法_样本集_33

附 混合高斯模型


随机变量X是有K个高斯分布混合而成,取各个高斯分布的概率为π1π2… πK,
第i个高斯分布的均值为μi,方差为Σi。
若观测到随机变量X的一系列样本x1,x2,…,xn,试估计参数π,μ,Σ。

在学习混合高斯模型的推论时,使我想起蒙特卡洛方法。虽然两者相差很大,但有一点相通。
混合高斯模型:通过数据点的分布来反推公式中的参数
蒙特卡洛方法:通过落入特定形状数据点的概率来反推落入特定形状面积。
关于​混合高斯模型(GMM)的参数估计 请点击

二、Jensen不等式

EM算法_EM算法_34


EM算法_似然函数_35

lazy Statistician规则:

设 y 是随机变量 x 的函数,EM算法_似然函数_36,那么:

(1) x 是离散随机变量,分布为EM算法_EM算法_37EM算法_概率密度函数_38绝对收敛,则:
EM算法_似然函数_39
(2) x 是连续随机变量,分布概率为EM算法_概率密度函数_40,若EM算法_样本集_41绝对收敛,则:
EM算法_概率密度函数_42

三、算法流程

3.1 数据及参数

观测数据:观测到的随机变量X的样本:EM算法_样本集_43
隐含变量:未观测到的随机变量Z的值:EM算法_概率密度函数_44
完整数据:包含观测到的随机变量 EM算法_概率密度函数_09 和隐含变量 EM算法_概率密度函数_46

EM算法_EM算法_47
EM算法_样本集_48

3.2 EM算法的推导

EM算法是从含有隐含变量的数据(完整数据)中计算极大似然估计。Z为隐含变量,则从可观测数据入手,对参数进行极大似然估计。

  • 根据边缘分布列的定义:
    EM算法_样本集_49
    改写成 EM算法_EM算法_50EM算法_概率密度函数_51
    EM算法_EM算法_52
    这里,EM算法_似然函数_53 是隐随机变量,直接找到参数的估计是很困难的。我们建立 EM算法_似然函数_54的下界,并求该下界的最大值,重复这个过程,直到收敛到局部最大值。
  • 定义隐含变量EM算法_EM算法_55 的分布 EM算法_EM算法_56
    EM算法_EM算法_56 是z的某一个分布,满足EM算法_EM算法_58, EM算法_样本集_59,有:
    EM算法_EM算法_60
    上述不等式是根据Jensen不等式的来,其中EM算法_似然函数_61为凹函数。
    为了使上式等号成立:
    EM算法_概率密度函数_62
    满足EM算法_EM算法_58, EM算法_样本集_59,由上式推导出:
    EM算法_概率密度函数_65
    进一步推导:
    EM算法_样本集_66
    最终我们得到了EM算法的一般形式,一般化形式的思想是:
    在 E-step:找到对于当前参数 EM算法_似然函数_67 使不等式成立的 EM算法_似然函数_68分布。
    在 M-step:对似然函数下界进行极大似然估计,得到新的参数,形式化表述为:

EM算法_概率密度函数_69

3.1 算法思路


可以看到每一步都会向最优值前进一步,而且前进路线是平行于坐标轴的,因为每一步只优化一个变量。
这犹如在x-y坐标系中找一个曲线的极值,然而曲线函数不能直接求导,因此什么梯度下降方法就不适用了。

但固定一个变量后,另外一个可以通过求导得到,因此可以使用坐标上升法,一次固定一个变量,

对另外的求极值,最后逐步逼近极值。

对应到EM上, E步:固定θ,优化Q;

M步:固定Q,优化θ;

交替将极值推向最大。 (如图)

EM算法_EM算法_70


EM算法_概率密度函数_71

3.2 EM 算法示例:

● 假设现在有两枚硬币1和2,随机抛掷后正面朝上概率分别为EM算法_概率密度函数_72
为了估计这两个概率,做实验,每次取一枚硬币,连掷5下,记录下结果,
如下(表一(实验数据)):

表一(实验数据)

表二(测试数据)

硬币

结果

统计

硬币

结果

统计

1

正正反正反

3正-2反

UnKnow

正正反正反

3正-2反

2

反反正正反

2正-3反

UnKnow

反反正正反

2正-3反

1

正反反反反

1正-4反

UnKnow

正反反反反

1正-4反

2

正反反正正

3正-2反

UnKnow

正反反正正

3正-2反

1

反正正反反

2正-3反

UnKnow

反正正反反

2正-3反

表一:可以很容易地估计出P1和P2,如下:
P1 = (3+1+2)/ 15 = 0.4
P2= (2+3)/10 = 0.5
● 现在我们抹去每轮投掷时使用的硬币标记,如上右表(表二(测试数据))。


此时多了一个隐变量z,可以把它认为是一个5维的向量(z1,z2,z3,z4,z5),
代表每次投掷时所使用的硬币,比如z1,就代表第一轮投掷时使用的硬币是1还是2。
但是,这个变量z不知道,就无法去估计P1和P2。

我们可以先随机初始化一个P1和P2,用它来估计z,然后基于z,还是按照最大似然概率法则去估计新的P1和P2
当与我们初始化的P1和P2一样时,说明是P1和P2很有可能就是真实的值。这里面包含了两个交互的最大似然估计。

概率计算

如果是硬币1,得出3正2反的概率为:

0.2×0.2×0.2×0.8×0.8= 0.00512

如果是硬币2,得出3正2反的概率为:

0.8×0.8×0.8×0.2×0.2=0.03087

依次求出其他4轮中的相应概率。(如:表三)

按照最大似然法则:(表三)

轮数

若是硬币1

若是硬币2

第1轮中最有可能的是硬币2

1

0.00512

0.03087

第2轮中最有可能的是硬币1

2

0.02048

0.01323

第3轮中最有可能的是硬币1

3

0.08192

0.00567

第4轮中最有可能的是硬币2

4

0.00512

0.02048

第5轮中最有可能的是硬币1

5

0.02048

0.01323

然后按照最大似然概率法则来估计新的P1和P2。(由表三,查到 表二的正反数据计算P值)

P1 = (2+1+2)/15 = 0.33

P2=(3+3)/10 = 0.6

将算的的P1P2反复迭代:

设想我们知道每轮抛掷时的硬币就是如标示的那样,那么,P1和P2的最大似然估计就是0.4和0.5

(下文中将这两个值称为P1和P2的真实值)。那么对比下我们初始化的P1和P2和新估计出的P1和P2:

初始化P1

估计出P1

真实的P1

初始化P2

估计出P2

真实的P2

0.2

0.33

0.4

0.7

0.6

0.5

3.3 示例优化:

新估计出的 P1和P2 一定会更接近真实的 P1和P2
迭代不一定会收敛到真实的P1和P2。取决于P1和P2的初始化值。

我们是用最大似然概率法则估计出的z值,然后再用z值按照最大似然概率法则估计新的P1和P2。
也就是说,我们使用了一个最可能的z值,而不是所有可能的z值。
所有的z值有多少个呢?显然,有2^5=32种,需要我们进行32次估值???

用期望来简化运算


比如第1轮,使用硬币1的概率是:0.00512/(0.00512+0.03087)=0.14
使用硬币2的概率是:1-0.14=0.86

我们按照期望最大似然概率的法则来估计新的P1和P2:
以P1估计为例,(表二)第1轮的3正2反相当于
0.14*3=0.42正
0.14*2=0.28反
依次算出其他四轮,表四如下:new_P1=4.22/(4.22+7.98)=0.35

轮数

正面

反面

1

0.42

0.28

2

1.22

1.83

3

0.94

3.76

4

0.42

0.28

5

1.22

1.83

总计

4.22

7.98

可以看到,改变了z值的估计方法后,新估计出的P1要更加接近0.4。原因就是我们使用了所有抛掷的数据,而不是之前只使用了部分的数据。我们根据E步中求出的z的概率分布,依据最大似然概率法则去估计P1和P2,被称作M步。

总结

EM算法_似然函数_73