The Wayback Machine - https://web.archive.org/web/20221028222712/https://baike.sogou.com/kexue/d11213.htm

期望最大化算法

编辑

所解决的问题与算法的已知量与待求解的未知量

期望最大化的英文是Expectation–maximization(EM)。因此期望最大化算法通常被简称为EM算法。它是一种用于求含有隐变量的概率分布的参数的算法[1]

上面这句话含有三个待解释的点:

何为隐变量?观测值中无法观测到的变量但是对观测值却有影响的变量就是隐变量。举个例子:我们知道显示屏的颜色是红绿蓝表示的。现在我们看到显示器显示的是橙色,这个橙色就是观测值。但是事实上它是由红绿蓝三种颜色按照不同强度混合而成。这里的红绿蓝是我们没法直接贯彻到但是又直接影响了观测值,这种变量就叫做隐变量。

概率分布中的参数是指的是什么?在概率统计学中认为任何数据都是一系列概率分布组合而成。而机器学习等算法就需要先假设这些数据服从某个分布,再求这个分布中的未知参数,最终得到产生数据的整体的概率分布。所以这里的参数就是所假设的概率分布的参数。比如我们可以假设某个数据服从正态分布,而正态分布中有两个未知参数,即“均值”和“方差”。只要确定这两个参数就可以确定一个正态分布。EM算法就是一种从数据中分析出所假设的概率分布的未知参数的算法。

EM算法如何求概率分布中的参数?EM算法是采用分步极大似然法来求得所假设的概率分布的参数。

从第2点可以看到期望最大化(EM)算法它提供的是一种算法思想而不是具体实现。因为EM算法可以假设某个数据的子概率分布是正态分布,也可以假设这个数据的子概率分布是均匀分布。不同的分布对应的求解各个概率分布的待求解参数的公式是不一样的。EM算法只提供了求解所假设的各个子概率分布中未知参数的大致流程和思路。

1 核心设计思想编辑

EM算法核心思想就是三步(它也仅仅提供了思想,具体如何实现需要我们自己设计算法)。k-means算法就是典型的EM算法,大家可以对比着k-means算法看看下面这三步具体内涵。

  1. 前面提到了EM算法中的假设就是认为数据是由多个子模型组合而成。所以第一步就是确定用于拟合数据的多个子模型。随机初始化这些子模型的参数。

  2. 由于步骤1已经初始化了各个子模型的参数,那么我们就得到了多个子模型。因此每个子模型都可以分别独自的计算出某个数据点出现的概率。EM算法会将这个数据点分配给概率最大的那个子模型。就这样各个子模型就瓜分了所有数据。

  3. 根据各个子模型所瓜分的数据去调整子模型的参数。调整完后返回步骤1.

2 算法描述编辑

3 算法推导编辑

4 常见用途编辑

5 算法评价编辑

6 实用例子举例编辑

6.1 Python代码实现(实现上面那个例子)

6.2 C++代码实现

7 相关算法编辑

参考文献

  • [1]

    ^航, 李.《统计学习方法》.ISBN,7302275955,

阅读 414
版本记录
  • 暂无