我正在尝试使用 Coursera资料。在本讲座中,Andrew Ng使用梯度下降算法来找到将误差函数(成本函数)最小化的线性回归模型的系数。
对于线性回归,是否需要梯度下降?看来我可以分析误差函数并将其设置为零以求解系数。那正确吗?
我正在尝试使用 Coursera资料。在本讲座中,Andrew Ng使用梯度下降算法来找到将误差函数(成本函数)最小化的线性回归模型的系数。
对于线性回归,是否需要梯度下降?看来我可以分析误差函数并将其设置为零以求解系数。那正确吗?
Answers:
线性最小二乘可以通过
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快,但不那么可靠或准确。
3)形成法线方程(从可靠性和数值精度的角度来看这是很困难的,因为它对条件数进行平方,这是一件很糟糕的事情)
3a)通过Cholesky分解解决(不好)
3b)显式求逆矩阵(HORRIBLE)
4)解决为二次规划问题或二阶锥问题
4a)使用高质量二次编程软件进行求解。这是可靠的并且在数值上准确,但是比SVD或QR需要更长的时间。但是,很容易在目标函数中添加有界或一般线性约束或线性或二次(两个范数)罚分或正则化项,并且仍然可以使用二次编程软件解决问题。
4b)使用高质量的圆锥优化软件解决二阶锥问题。备注与二次编程软件相同,但您也可以添加有界或一般线性约束以及其他圆锥约束或目标函数项,例如各种规范中的罚则或正则项。
5)使用高质量的通用非线性优化软件进行求解。这可能仍然可以很好地工作,但是通常会比二次编程或圆锥优化软件慢,并且可能不那么可靠。但是,有可能不仅在最小二乘优化中包括边界约束和一般线性约束,而且还包括非线性约束。此外,还可用于非线性最小二乘法,以及是否将其他非线性项添加到目标函数。
6)使用糟糕的通用非线性优化算法解决->永远不要这样做。
7)使用最坏的通用非线性优化算法进行求解,即梯度下降。仅当您想了解求解方法的糟糕程度和不可靠性时才使用此方法,如果有人告诉您使用梯度下降来解决线性最小二乘问题
7 i)向了解计算的人学习统计计算
7 ii)向对它有所了解的人学习优化。
查找线性模型的系数从技术上讲是寻找一组线性方程组的解的过程。
为了计算这样的解决方案,optimization techniques
已经开发了很多解决方案,并且Gradient Descent
是其中之一。
因此,梯度下降并不是唯一的方法。
Ng在课程中使用它是因为它易于理解,而无需处理高级线性代数和数值计算。
GD
-gradient decent-用作为例介绍更先进的方法(例如,SGD
-随机GD
)。
SGD
。由于大多数人没有很大的矩阵,QR分解更好。总的来说,QR分解影响了数字世界。SIAM选择它作为20世纪十大算法之一。