如何计算给定算法的时间复杂度(岭回归)?

时间:2019-06-06 10:30:11

标签: algorithm machine-learning statistics time-complexity big-o

我有以下表达式,我需要计算该算法的时间复杂度。任何人都可以帮助获得该算法的正确时间复杂度。

% save a matrix-vector multiply
Atb = A'*b;

% cache the factorization (using cholesky factorization)
[L U] = factor(A, a);  

for( k = 0; k < maxiter; k++) 
    {
         x^k+1 = (A^TA + a* I)^-1 (A^Tb + a (z^k - u^k))^T
    }

其中A = mxn矩阵,n >>> m,b,u,z = nx1个向量,I =单位矩阵,a = 0.001

1 个答案:

答案 0 :(得分:0)

这里计算量最大的操作是矩阵求逆,因此这取决于您如何实现此操作。如果我们假设您使用takes O(n^3)的高斯-乔丹算法实现,则总体复杂度为O(maxiter * n^3)。这里我考虑到nm大(A^T*AO(m*n^2))。

如果您在外面计算(A^T*A + a*I)^-1A^Tb,那么您会得到

Inv * (Atb + a(z^k - u^k))^T

O(n^2)是因为您需要将nxn矩阵乘以nx1向量,而加法和减法则使用O(n)

仍然,您在尺寸上有一些不一致之处,我在该问题的评论中对此进行了描述。