如何确定概率PCA的EM算法的时间复杂度?

时间:2016-05-09 15:17:26

标签: machine-learning pca

我正在研究主教书中的概率pca,有一个EM算法来计算主子空间。

enter image description here

enter image description here

这里M是MxM矩阵,W是DxM矩阵,(xn-x)是矢量Dx1矩阵。 本书后面有关于时间复杂性的陈述: “相反,计算要求最高的步骤是涉及总和的步骤 数据集是O(NDM)。“

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

1 个答案:

答案 0 :(得分:2)

让我们逐一进行

  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×M矩阵
  3. Wnew = [SUM(xn-x)E [zn]'] [SUM E [zn zn']]

    • 第一部分是将Dx1矩阵乘以1xM的N次重复(和)运算,因此复杂度为O(NDM);结果的大小为D x M
    • 第二部分又是N个元素的总和,每个元素是M×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&# 39;] 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)
  5. 总共得到O(M ^ 3)+ O(NMD)+ O(M ^ 2D)+ O(M ^ 2N),并且我假设存在M <= D <= N因此O的假设(NMD)