【问题标题】:How to determine time complexity of EM algorithm of probabilistic PCA?如何确定概率 PCA 的 EM 算法的时间复杂度?
【发布时间】:2016-09-04 07:18:11
【问题描述】:

我正在研究 bishop 书中的概率 pca,那里提供了一种 EM 算法来计算主子空间。

这里M是MxM矩阵,W是DxM矩阵,(xn − x)是向量Dx1矩阵。 本书后面有关于时间复杂度的声明: “相反,计算要求最高的步骤是那些涉及总和的步骤 O(NDM) 的数据集。”

我想知道是否有人可以帮助我理解算法的时间复杂度。提前致谢。

【问题讨论】:

    标签: machine-learning pca


    【解决方案1】:

    让我们一个接一个

    1. E[zn] = M^-1 W' (xn - x)

      • M^-1 可以预先计算,因此您不需要每次需要这种值时都支付 O(M^3),而是在最后支付单个 O(M^3) 成本
      • 尽管它是大小为 MxM * MxD * Dx1 的矩阵相乘,即 O(M^2D)
      • 结果大小为 Mx1
    2. E[zn zn'] = sigma^2 M^-1 + E[zn]E[zn]'

      • sigma^2 M^-1 只是乘以常数,因此矩阵的大小是线性的,O(M^2)
      • 第二次运算是Mx1和1xM向量的外积,因此结果又是MxM,也需要O(M^2)
      • 结果是 M x M 矩阵
    3. Wnew = [SUM (xn-x) E[zn]'][SUM E[zn zn']]

      • 第一部分是 Dx1 矩阵乘以 1xM 的 N 次重复(求和)运算,因此复杂度为 O(NDM);结果的大小为 D x M
      • 第二部分同样是 N 个元素的总和,每个元素都是 M x M 的矩阵,因此总共 O(NM^2)
      • 最后我们计算 D x M 和 M x M 的乘积,即 O(DM^2),再次得到 D x M 矩阵
    4. sigma^2new = 1/ND SUM[||xn-x||^2 - 2E[zn]'Wnew'(xn-x) + Tr(E[zn zn']Wnew'Wnew)]

      • 我们再次求和 N 次,这次是 3 个元素的和 - 第一部分只是一个范数,因此我们在 O(D) 中计算它(向量大小是线性的),第二项是 1 x M, M x D 和 D x 1 导致 O(MD) 的复杂度(每次迭代,因此总共 O(NMD)),最后一部分再次是关于将三个大小为 M x M、M x D、D x M 的矩阵相乘因此导致 O(M^3D) (*N),但您只需要跟踪并且可以预先计算 Wnew'Wnew,因此这部分只是 MxM 乘以 MxM 矩阵的跟踪,导致 O(M^2) (*N )

    总共得到 O(M^3) + O(NMD) + O(M^2D) + O(M^2N),我想有一个假设 M

    【讨论】:

    • 优秀的答案但我很难理解最后一点。据我了解-在 Tr(E[zn zn']Wnew'Wnew)] 我可以预先计算 Wnew'Wnew 因此需要 O(M^2D) 然后总和我只需要 (M x M) x 的迹(M x M) 矩阵应该需要 O(M^2),N 次因此总体 O(NM^2) 小于 O(NMD) 对吗?
    • 是的,你可以预先计算这部分来加快速度,我也更新了答案
    猜你喜欢
    • 1970-01-01
    • 2018-01-11
    • 2012-09-16
    • 1970-01-01
    • 1970-01-01
    • 2019-04-27
    • 1970-01-01
    • 2014-01-14
    • 2016-01-01
    相关资源
    最近更新 更多