线性回归的时间复杂度是多少?

数据挖掘 机器学习 回归 统计数据 线性回归 成本函数
2021-09-24 20:32:24

我正在使用线性回归,我想知道大 O 表示法的时间复杂度。没有优化算法(例如梯度下降)的线性回归的成本函数需要在权重组合的迭代中计算(作为蛮力方法)。这使得计算时间取决于权重的数量,并且显然取决于训练数据的数量。

如果n是训练数据的数量,W是权重的数量,权重空间的每个分辨率设置为m意味着每个权重都会迭代m可能值的数量。那么这个线性回归的时间复杂度是

O(mWn)

这个对吗?

2个回答

这在很大程度上取决于您使用的“求解器”。

打电话n观察次数和p权重的数量,整体复杂度应该是n2p+p3.

实际上,在执行线性回归时,您正在执行复杂度为的矩阵乘法n2p(评估时XX) 并反转得到的矩阵。它现在是一个方阵p 行,矩阵求逆的复杂度通常为 p3 (虽然它可以降低)。

因此理论上的复杂性: n2p+p3.

旁注

然而,数值模拟(使用 python 的 scikit 库)的时间复杂度似乎接近 n0.72p1.3

这可能是因为实际上没有实现完全反转(相反,系统可以使用梯度下降来求解),或者是因为还有其他方法可以校准线性回归的权重。

来源

我博客中的一篇文章:机器学习算法的计算复杂度

为了清楚起见(因为@RUser4512 没有更新他的答案),在线性回归中你必须解决

(XX)1XY,
在哪里 X 是一个 n×p矩阵。现在,通常矩阵产品的复杂性AB 是 O(abc) Aa×bBb×c. 因此,我们可以评估以下复杂性:

a) 矩阵积 XX 复杂的 O(p2n).

b) 矩阵-向量积 XY 复杂的 O(pn).

c) 逆 (XX)1 具有复杂性 O(p3),

因此复杂度是 O(np2+p3).