最大期望算法(Expectation Maximization)

最大期望算法是一类通过迭代进行极大似然估计的优化方法,通常用于包含因变量或缺失数据的概率模型进行参数估计。EM 算法的标准计算过程由 E 步和 M 步 交替组成,算法的收敛性可以确保迭代至少局部最大值。

EM 算法被广泛应用于处理数据的缺失值,以及很多机器学习算法,包括高斯混合模型、隐马尔科夫模型的参数估计。

  1. 极大似然估计
  2. 最大期望算法

1. 极大似然估计

问题:我们想知道学校中,男女生身高的分布。我们不可能得到所有学生的身高数据,只能通过抽样,由抽样数据来反映总体男女生身高的分布。假设:我们现在抽样了 200 名学生的身高数据。

极大似然估计:

  1. 知道抽样的男生、女生的身高数据
  2. 知道男、女身高服从正态分布
  3. 估计参数:正态分布的均值和方差。

计算步骤:

假设:P(x,θ) 表示1个男生身高的概率,100 个男生身高的联合概率是:f = P(x1,θ)*P(x2,θ)*P(x3,θ) … P(xn,θ)

我们求当 θ 是什么值的时候,f 的值最大。这就是极大似然估计的思想。

2. EM 算法

EM 算法

  1. 知道抽样的 200 名学生的身高数据
  2. 知道男女身高服从正态分布
  3. 缺失:每个样本是男生、还是女生数据未知
  4. 估计参数:男女生正态分布的均值和方差。

一般情况下:

  1. 只有知道了男女生正态分布的参数,才可能判断出每个样本是男生、还是女生
  2. 只有知道了样本是男生、还是女生,才能估计出正态分布的参数

EM 算法就是在这种不完整观测变量的条件下进行参数的估计。

计算步骤:

  1. 初始化:
    1. 男生的正态分布参数:标准差:σ、μ
    2. 女生的正态分布参数:标准差:σ、μ
    3. 上面的参数都是随机初始化
  2. 将样本带入到两个密度函数中,计算出样本属于男生的概率、女生的概率,将样本归属于最大的概率
  3. 计算出所有的样本归属于男生、还是女生
  4. 重新根据男女生数量、更新均值和标准差
  5. 再重新计算所有的样本归属于男生、还是女生
  6. 重新根据男女生数量、更新均值和标准差
  7. 重复根据新的参数,计算样本归属,然后再根据样本归属更新参数,直到算法收敛。

EM 不能保证收敛全局最优解,保证收敛到局部最优解。

3. EM 算法举例

3.1 EM 思路分析

问题:随机抛掷两枚硬币 1 和 2,正面朝上概率分别为 P1、P2,求解 P1、P2 的值?

思路分析:

  1. 为了求解到 P1 的概率,我们必须知道硬币 1 抛掷了多少次,并且有多少次正面朝上?
  2. 为了求解到 P2 的概率,我们必须知道硬币 2 抛掷了多少次,并且有多少次正面朝上?

所以,现在需要进行多次实验,获得观测数据,从观测数据计算 p1、p2 的值。

场景:每次抛掷的硬币过程都非常清楚,比如:每次抛掷的是硬币 1 还是硬币 2,每次抛掷是正面朝上,还是反面朝上,即:我们拿到的是一个完整的观测数据,即:

  1. (硬币1,硬币2,硬币1,硬币2,硬币1)
  2. (正正反正反,反反正正反,正反反反反,正反反正正,反正正反反)
  3. 第一次抛掷的是硬币1,其结果是: 正正反正反,以此类推…

计算: 已知:共进行了 5 次实验,使用硬币 1 进行了 15 次实验,使用硬币 2 进行了 10 次实验,则

  1. 使用硬币 1 正面朝上 6 次,即:p1 = 6/15
  2. 使用硬币 2 正面朝上 5 次,即:p2 = 5/10

如果每次实验,我们并不清楚抛掷的是硬币1、还是硬币2,此时,整个实验过程有我们未知的内容,这些内容影响到了我们对结果的计算。所以,该问题可以叫做:包含隐变量的问题。如下图所示:

场景: 每次抛掷使用的硬币是未知的,但是正面朝上,还是反面朝上是已知的,即:拿到的时一个不完整的观测数据,即:

  1. (?,?,?,?,?)
  2. (正正反正反,反反正正反,正反反反反,正反反正正,反正正反反)

问题:

  1. 如果不知道每次抛掷使用的是哪个硬币,无法去计算 p1、p2 值
  2. 如果不知道 p1、p2 的值,我们也无法确定每次可能抛掷的是哪个硬币

这两个成为一对矛盾的存在,导致我们无法通过前面的方法去估计 p1、p2 的值。此时,可以使用 EM 算法来解决:

计算:

  1. 我们先假设:p1 = 0.2、p2 = 0.7,当然这个假设并不一定准确
  2. 计算:
    1. 假设:使用硬币 1 抛掷的话,当前观测序列出现的最大概率
    2. 假设:使用硬币 2 抛掷的话,当前观测序列出现的最大概率
    3. 取最大概率的硬币作为当前观测序列最有可能使用的硬币
  3. 对每一个观测序列使用步骤 2 的思想,即可得到最有可能的硬币序列:(硬币1,硬币2,硬币1,硬币1,硬币2)
  4. 知道了硬币的观察序列,更新计算 p1、p2 的值
  5. 根据新的 p1、p2 值再去判断最优可能的硬币抛掷序列,进而再次去更新 p1、p2 值. 迭代 2-4 步.

补充:

  1. 每次估计出的 p1、p2 理论上是更加接近于真实值,整个算法也会收敛到最优的值。
  2. EM 算法简单、能够找到最优值,但由于对初始值敏感,不保证收敛到全局最优点。

3.2 参数初始化

3.3 第一次迭代

计算可能的抛掷序列:

更新 p1、p2 值:

  1. 硬币 1 一共抛掷了 15 次,其中有 5 次正面朝上,则:p1 = 5/15
  2. 硬币 2 一共抛掷了 10 次,其中有 6 次正面朝上,则:p2 = 6/10

3.4 第二次迭代

重新计算计算可能抛掷的序列:

更新 p1、p2 值:

  1. 硬币 1 一共抛掷了 10 次,其中 4 次正面朝上,则:p1 = 4/10=0.4
  2. 硬币2 一共抛掷了 15 次,其中 7 次正面朝上,则:p2 = 7/15=0.47

此时, 我们发现 p1、p2 越来越接近真实的 0.5 了.

至此,文本文章结束.

未经允许不得转载:一亩三分地 » 最大期望算法(Expectation Maximization)
评论 (0)

7 + 9 =