用Mapreduce计算具有期望最大化的高斯混合模型

时间:2014-04-11 15:25:15

标签: hadoop machine-learning mapreduce mixture-model expectation-maximization

我可以在哪里找到使用EM计算GMM的Mapreduce实现(或教程)? 使用mapreduce框架也是可行的吗?

我找到了这个讲座link,但它不包含详细说明,如果我的数据(均值和方差)很大,那么如何将它从mapper传递给reducer?

1 个答案:

答案 0 :(得分:4)

好的,你说,你有实施EM算法的经验。这很容易解释。

EM算法

如您所知,EM算法是一种寻找最大似然的迭代方法。一次迭代由期望(E步骤)和最大化步骤(M步骤)两个步骤组成。

E-step 中,样本的可能性是根据以前的模型计算的。让n为样本数,我们可以获得n次可能性。


这里,可能性计算是独立进行的。所以这可以使用多处理器环境来执行。


假设我们在一台机器上有4个CPU,n/4可能由每个CPU计算。它的速度提高了4倍(忽略了IO时间)

M-step 中,新模型由可能性派生。

到mapreduce

计算EM

  • 由于彼此独立的样本,E-step可以扩展到mapreduce上的mapper任务。
    • 输入
      • key:any
      • 值:样本
    • 输出
      • key:any
      • 值:输入样本的可能性
  • M-step可以扩展到reducer任务(这可以是多个减速器,但我只推荐一个减速器)。
    • 输入
      • key:any
      • value:likelihood
    • 输出
      • key:any
      • 值:下一个模型

数据表示

  • 培训样本位于HDFS的某个目录中
    • 这将是mapreduce
    • 的输入
  • 以前的模型也位于HDFS但与培训样本不同的目录
    • USE 分布式缓存让mappers知道模型的位置

迭代

一个mapreduce任务类似于EM算法的一次迭代。所以你需要迭代下一个mapreduce任务,直到收敛

我已经简要解释过了。实施时,您将面临许多问题。

我希望这会有所帮助。