【问题标题】:Computing Gaussian Mixture Model with Expectation Maximization using Mapreduce使用 Mapreduce 计算期望最大化的高斯混合模型
【发布时间】:2014-05-25 20:23:45
【问题描述】:

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

我找到了这个讲座link,但它不包含详细描述,如果我的数据(均值和方差)很大,那么我如何将它从映射器传递到减速器?

【问题讨论】:

  • 你试过在单机上实现GMM的EM算法吗?
  • 是的..我已经使用 matlab 实现了。

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


【解决方案1】:

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

EM算法

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

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


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


假设我们在单台机器上有 4 个 CPU,n/4 可能性可以由每个 CPU 计算。快 4 倍(忽略 IO 时间)

M-step中,新模型由可能性推导出来。

映射减少

计算 EM

  • E-step 可以扩展到 mapreduce 上的mapper 任务,因为彼此独立的样本。
    • 输入
      • 键:任何东西
      • 值:一个样本
    • 输出
      • 键:任何东西
      • 值:输入样本的可能性
  • M-step 可以扩展到reducer 任务(这可以是多个reducer,但我只是推荐一个reducer)。
    • 输入
      • 键:任何东西
      • 值:可能性
    • 输出
      • 键:任何东西
      • 价值:下一个模型

数据表示

  • 训练样本位于HDFS 上的某个目录中
    • 这将是mapreduce的输入
  • 之前的模型也位于HDFS,但与训练样本不同的目录
    • 使用分布式缓存让mappers知道模型在哪里

迭代

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

我已经简单解释了。在实施过程中,您将面临许多问题。

我希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2014-05-26
    • 2012-12-12
    • 2017-02-08
    • 2014-05-10
    • 2021-09-30
    • 2015-10-24
    • 2014-10-25
    • 2016-12-28
    相关资源
    最近更新 更多