EM算法步骤
在上图 的例子中,可把每个实例的完整描述看作是三元组 < x i , z i 1 , z i 2 > ,其中 x i 是第 i 个实例的观测值, z i 1 和 z i 2 表示两个正态分布中哪个被用于产生值 x i 。
确切地讲, z ij 在 x i 由第 j 个正态分布产生时值为 1 ,否则为 0 。这里 x i 是实例的描述中已观察到的变量, z i 1 和 z i 2 是隐藏变量。如果 z i 1 和 z i 2 的值可知,就可以用式 6.27 来解决均值 μ 1 和 μ 2 。因为它们未知,因此我们只能用 EM 算法 。
EM 算法应用于我们的 k 均值问题,目的是搜索一个极大似然假设 ,方法是根据当前假设 < μ 1 … μ k > 不断地再估计隐藏变量 z ij 的期望值。然后用这些隐藏变量的期望值重新计算极大似然假设。这里首先描述这一实例化的 EM 算法,以后将给出 EM 算法的一般形式。
为了估计上图中的两个均值, EM 算法首先将假设初始化为 h =< μ 1 , μ 2 > ,其中 μ 1 和 μ 2 为任意的初始值。然后重复以下的两个步骤以重估计 h ,直到该过程收敛到一个稳定的 h 值。
步骤 1 : 计算每个隐藏变量 z ij 的期望值 E [ z ij ] ,假定当前假设 h =< μ 1 , μ 2 > 成立。
步骤 2 : 计算一个新的极大似然假设 h ´=< μ 1 ´, μ 2 ´> ,假定由每个隐藏变量 z ij 所取的值为第 1 步中得到的期望值 E [ z ij ] ,然后将假设 h =< μ 1 , μ 2 > 替换为新的假设 h ´=< μ 1 ´, μ 2 ´> ,然后循环。
现在考察第一步是如何实现的。步骤 1 要计算每个 z ij 的期望值。此 E [ z ij ] 正是实例 x i 由第 j 个正态分布生成的概率:
因此第一步可由将当前值 < μ 1 , μ 2 > 和已知的 x i 代入到上式中实现。
在第二步,使用第 1 步中得到的 E [ z ij ] 来导出一新的极大似然假设 h ´=< μ 1 ´, μ 2 ´> 。如后面将讨论到的,这时的极大似然假设为:
注意此表达式类似于公式一中的样本均值,它用于从单个正态分布中估计 μ 。新的表达式只是对 μ j 的加权样本均值,每个实例的权重为其由第 j 个正态分布产生的期望值。
上面估计 k 个正态分布均值的算法描述了 EM 方法的要点 :即当前的假设用于估计未知变量,而这些变量的期望值再被用于改进假设。
可以证明,在此算法第一次循环中, EM 算法能使似然性 P ( D | h ) 增加,除非它已达到局部的最大。因此该算法收敛到对于 < μ 1 , μ 2 > 的一个局 部极大可能性假设 。 EM 算法的一般表述
上面的 EM 算法针对的是估计混合正态分布均值的问题。更一般地, EM 算法可用于许多问题框架,其中需要估计一组描述基准概率分布的参数 θ ,只给定了由此分布产生的全部数据中能观察到的一部分。
在上面的二均值问题中,感兴趣的参数为 θ =< μ 1 , μ 2 > ,而全部数据为三元组 < x i , z i 1 , z i 2 > ,而只有 x i 可观察到,一般地令 X =< x 1 , …, x m > 代表在同样的实例中未观察到的数据,并令 Y = X ∪ Z 代表全体数据。注意到未观察到的 Z 可被看作一随机变量,它的概率分布依赖于未知参数 θ 和已知数据 X 。类似地, Y 是一随机变量,因为它是由随机变量 Z 来定义的。在后续部分,将描述 EM 算法的一般形式。使用 h 来代表参数 θ 的假设值,而 h ´ 代表在 EM 算法的每次迭代中修改的假设。
EM 算法通过搜寻使 E [ln P ( Y | h ´)] 最大的 h ´ 来寻找极大似然假设 h ´ 。此期望值是在 Y 所遵循的概率分布上计算,此分布由未知参数 θ 确定。考虑此表达式究竟意味了什么。
首先 P ( Y | h ´) 是给定假设 h ´ 下全部数据 Y 的似然性。其合理性在于我们要寻找一个 h ´ 使该量的某函数值最大化。
其次使该量的对数 ln P ( Y | h ´) 最大化也使 P ( Y | h ´) 最大化,如已经介绍过的那样。
第三,引入期望值 E [ln P ( Y | h ´)] 是因为全部数据 Y 本身也是一随机变量。