什么是最大期望算法(EM Algorithm)
本文是机器学习系列的第一篇文章,以最简单的方式讲解机器学习的传统算法,最大期望算法。在很多传统领域,医院,药厂等等无法产生海量的数据的情形,深度学习并不适合,这时才是传统机器学习算法发挥作用的时候,废话不多说,下面直接进入学习。
最大期望算法出现在很多涉及概率模型的计算生物学的应用中,那么它有什好处,它的原理是什么?
概率模型,例如隐马尔可夫模型或者贝叶斯网络会被用于建模生物学数据。它们因为高效以及高容错的参数学习因此很流行被广泛应用。但是,给概率模型训练的数据往往不是完整的,缺失数据经常会发生。譬如,在医学诊断,通常病人的患病历史只会有有限的医学测试。换句话说,在基因的聚类表达中,数据不完整是因为在这个概率模型中有意忽略了基因到聚类的分配产生。然而最大期望算法支持在概率模型用不完整的数据进行参数估计。以投硬币实验为例
假设我们有一组硬币A和B,它们都是不均衡的硬币,假设θA 和 θB 分别是A和B正面朝上的概率。
现在我们目标是估计θA 和 θB,通过随机挑选A或者B进行10次的投币实验,然后可以通过绘制下面表格很轻易的计算出它们的概率。
现在我们把难度加大一点,假设我们不知道每次实验是挑选哪组硬币,换句话说,就是我们只有以下实验的结果,怎么估算出A和B的概率呢?
这里我们引入z作为隐变量(hidden variables)或者潜在变量(latent factors),z定义了每一组实验选用A还是B硬币作为实验。在这个情况下,z就是缺失的数据。这里我们就必须引入最大期望算法来进行计算。怎么做呢?
首先我先初始化θA 和 θB,在这里我们分别初始化为0.6和0.5,然后我们假设数据是正确的,利用最大似然估计(MLE)分别算出A和B硬币的概率。在这里由于抛硬币是离散分布,并且符合二项分布(Binomial distribution)。所以以第二组为例,我们可以分别算出θA 和 θB。
根据二项分布的公式: $$ p_i(k)=\left({10\atop k}\right) \theta_i^k (1-\theta_i)^{10-k}\;. $$
$$ \theta_A^9 (1-\theta_A)^{10-9}\simeq0.004 $$
$$ \theta_B^9 (1-\theta_B)^{10-9}\simeq0.001\;, $$
最后可以算出A的新概率为: $$ \frac{0.004}{0.004+0.001}=0.8 $$
B的新概率为: $$ \frac{0.001}{0.004+0.001}=0.2 $$
其实上述公式是根据贝叶斯公式得到,
由于 $$ 𝑃(𝐴)=0.5=𝑃(𝐵) $$
$$ P(A|H_9T_1) = \frac{P(A) \cdot P(H_9T_1|A)}{P(H_9T_1)} = \frac{P(A) \cdot P(H_9T_1|A)}{P(A) \cdot P(H_9T_1|A) + P(B) \cdot P(H_9T_1|B)} = \frac{0.5 \cdot 0.004}{0.5 \cdot 0.004 + 0.5 \cdot 0.001} = 0.8$$
上述步骤称作E-step,用于估计在出现H 9次 T 1次的情况下,分别是A或者B硬币的概率,至此我们可以计算出每组实验的A和B硬币的权重。
其实从数学的角度来考虑就是,我们通过最大似然估计计算了 $$ g(\theta) = logP(x; \theta) $$ 这个函数的下界。然后后面会不断更新这个下界,直到这个函数收敛。EM算法的最大好处就是不会出现overfit。
接下来就是M-step,就是利用带权重的数据进行计算,重新更新θA 和 θB,一直迭代到参数收敛。
整个过程如下图:
在第十次迭代的过程,A的概率已经是首次实验的结果,而B也是趋向于0.45。但是在nonconcave functions, EM算法有可能会陷入局部最优解。同样的,梯度下降算法(gradient descent)或者牛顿法(Newton-Raphson)也可以用作数值优化拟合,但是EM算法因简单健壮并且易于实现而被广泛应用。应用场景
譬如在基因簇表达的情形下,我们需要通过观察的显性特征去分组相关的基因簇,就是分辨出哪些基因簇影响这个特征。这种情况下可以特征参数对应不同基因的多参数高斯分布,这个情况下x就是测量特征,z就是对应的基因簇,参数$ \theta$ 就包括多参数高斯分布的均值和协方差。然后EM算法的步骤就是E-step计算属于各个基因簇的概率,M-step去分别更新参数$ \theta$, 一直到收敛。