我们需要梯度下降来找到线性回归模型的系数吗?

机器算法验证 回归 机器学习 线性模型 梯度下降 规范问题
2022-01-16 16:30:34

我试图使用Coursera 材料来学习机器学习。在本次讲座中,Andrew Ng 使用梯度下降算法来找到线性回归模型的系数,以最小化误差函数(成本函数)。

对于线性回归,我们需要梯度下降吗?看来我可以分析区分误差函数并将其设置为零以求解系数;是对的吗?

3个回答

线性最小二乘可以通过

0) 使用基于 SVD 或 QR 的高质量线性最小二乘求解器,如下所述,用于无约束线性最小二乘,或基于二次规划或圆锥优化的版本,用于有界或线性约束最小二乘,如下所述。这样的求解器是预先安装好的、经过大量测试的,并且可以随时使用 - 使用它。

1) SVD,这是最可靠和数值最准确的方法,但也比其他方法需要更多的计算。在MATLAB中,无约束线性最小二乘问题A*X = b的SVD解为pinv(A) * b,非常准确可靠。

2) QR,相当可靠且数值准确,但不如 SVD,而且比 SVD 快。在 MATLAB 中,无约束线性最小二乘问题 A*X = b 的 QR 解是 A\b,除了 A 是病态的,即条件数很大的情况外,它是相当准确和可靠的。A\b 的计算速度比 pinv(A) * b 快,但不如 pinv(A) * b 可靠或准确。

3)形成正规方程(从可靠性和数值准确性的角度来看很糟糕,因为它使条件数平方,这是一件非常糟糕的事情)和

3a) 通过 Cholesky 分解求解(不好)

3b) 显式反转矩阵 (HORRIBLE)

4) 求解为二次规划问题或二阶锥问题

4a) 使用高质量的二次规划软件求解。这是可靠且数值准确的,但比 SVD 或 QR 需要更长的时间。但是,很容易将有界或一般线性约束,或线性或二次(二范数)惩罚或正则化项添加到目标函数,并且仍然使用二次规划软件解决问题。

4b) 使用高质量的圆锥优化软件解决二阶圆锥问题。备注与二次规划软件相同,但您也可以添加有界或一般线性约束和其他圆锥约束或目标函数项,例如各种范数中的惩罚项或正则化项。

5) 使用高质量的通用非线性优化软件求解。这可能仍然运行良好,但通常会比二次规划或圆锥优化软件慢,并且可能不太可靠。然而,在最小二乘优化中不仅可以包含有界和一般线性约束,还可以包含非线性约束。此外,可用于非线性最小二乘,以及是否将其他非线性项添加到目标函数。

6) 使用糟糕的通用非线性优化算法求解——>永远不要这样做。

7) 使用最糟糕的通用非线性优化算法求解,即梯度下降。仅当您想了解解决方法有多糟糕和不可靠时才使用此方法 如果有人告诉您使用梯度下降来解决线性最小二乘问题

7 i) 从了解统计计算的人那里了解统计计算

7 ii) 向了解优化的人学习优化。

寻找线性模型的系数在技术上是寻找一组线性方程的解的过程。

optimization techniques对于计算这样的解决方案,已经开发了很多解决方案,并且Gradient Descent就是其中之一。
因此,梯度下降并不是唯一的方法

Andrew Ng 在课程中使用它是因为它易于理解,无需处理高级线性代数和数值计算。

是的你可以。

要解决 Ax=B 问题,您可以使用 QR 或其他基于矩阵分解的最小二乘求解器。但是,我尝试通过带有 L2 范数正则化的梯度下降来做到这一点。我认为GD更好。

第一张图是 numpy.nnls 的结果,橙色线是 ground truth,蓝色线是 numpy.nnls 结果。

第二张图是我的梯度下降的结果与 l2 范数结果。

第二个结果更好。

numpy.nnls 结果

梯度下降