【问题标题】:parameters in the EM algorithmEM算法中的参数
【发布时间】:2018-05-02 12:32:01
【问题描述】:

我一直在学习 EM 算法,使用的是斯坦福大学的 Andrew Ng 的资料,链接在这里: http://cs229.stanford.edu/notes/cs229-notes7b.pdf 我一直在尝试通过使用 Python 库来了解 EM 的实现,特别是使用 Old Faithful 数据集。链接如下: https://mixem.readthedocs.io/en/latest/examples/old_faithful.html 该数据集大约有 272 个观测值,其中有两个变量,即喷发时间和等待时间;其中包含喷发之间的时间信息。 我对以下代码行有几个问题:

weights, distributions, ll = mixem.em(np.array(data), [
    mixem.distribution.MultivariateNormalDistribution(np.array((2, 50)), np.identity(2)),
    mixem.distribution.MultivariateNormalDistribution(np.array((4, 80)), np.identity(2)),
])

这与以下部分有关: 我的问题是:

  • 为什么我必须为 mu 创建两个数组以及为什么要考虑这些维度?我想第一个(2,50)第一个2是指变量的数量(爆发和等待),但为什么要把50作为第二个维度。另外,为什么我需要(4,80)的数组和两个维度为2的身份数组?

【问题讨论】:

    标签: python expectation-maximization


    【解决方案1】:

    您正在尝试对问题中的数据点进行聚类。那么,当您不知道有多少个集群或哪些点属于哪个集群时,您该怎么做。这就是 EM 的用武之地。

    您做了一些假设来解决聚类问题。您假设可能有 2 个集群。现在每个点都有两个维度(爆发、等待),因此您需要一个 2D 高斯来描述这些点的集群。由于您假设有 2 个集群,因此您创建了 2 个多元高斯。

    在示例中,您使用均值 (2,50) 和恒等协方差矩阵(由恒等式 (2) 给出)创建 Gaussian1。同样,您使用均值 (4,80) 创建 Gaussian2。

    您为什么选择值 2 和 50 作为第一个高斯?这些是任意数字,您通常在此处选择合理的数字。所以你说的是,涉及喷发的分量的平均值的初始值为 2,等待的平均值是 50。如果你查看数据集,你会发现这些都是合理的初始估计。

    其余部分是标准 EM。

    【讨论】:

      猜你喜欢
      • 2018-02-22
      • 2015-08-16
      • 2021-12-08
      • 2016-02-15
      • 1970-01-01
      • 2017-03-05
      • 2014-04-06
      • 2015-07-10
      • 2012-10-14
      相关资源
      最近更新 更多