我正在使用线性回归,我想知道大 O 表示法的时间复杂度。没有优化算法(例如梯度下降)的线性回归的成本函数需要在权重组合的迭代中计算(作为蛮力方法)。这使得计算时间取决于权重的数量,并且显然取决于训练数据的数量。
如果是训练数据的数量,是权重的数量,权重空间的每个分辨率设置为意味着每个权重都会迭代可能值的数量。那么这个线性回归的时间复杂度是
这个对吗?
我正在使用线性回归,我想知道大 O 表示法的时间复杂度。没有优化算法(例如梯度下降)的线性回归的成本函数需要在权重组合的迭代中计算(作为蛮力方法)。这使得计算时间取决于权重的数量,并且显然取决于训练数据的数量。
如果是训练数据的数量,是权重的数量,权重空间的每个分辨率设置为意味着每个权重都会迭代可能值的数量。那么这个线性回归的时间复杂度是
这个对吗?
这在很大程度上取决于您使用的“求解器”。
打电话观察次数和权重的数量,整体复杂度应该是.
实际上,在执行线性回归时,您正在执行复杂度为的矩阵乘法(评估时) 并反转得到的矩阵。它现在是一个方阵 行,矩阵求逆的复杂度通常为 (虽然它可以降低)。
因此理论上的复杂性: .
旁注
然而,数值模拟(使用 python 的 scikit 库)的时间复杂度似乎接近
这可能是因为实际上没有实现完全反转(相反,系统可以使用梯度下降来求解),或者是因为还有其他方法可以校准线性回归的权重。
来源
我博客中的一篇文章:机器学习算法的计算复杂度
为了清楚起见(因为@RUser4512 没有更新他的答案),在线性回归中你必须解决
在哪里 是一个 矩阵。现在,通常矩阵产品的复杂性 是 O(abc) 是 和 是 . 因此,我们可以评估以下复杂性:
a) 矩阵积 复杂的 .
b) 矩阵-向量积 复杂的 .
c) 逆 具有复杂性 ,
因此复杂度是 .