梯度下降法和最小二乘法的最终目的都是通过调节 参 数 参数 参数 使得 L o s s Loss Loss 函数达到最小。
梯度下降法整个过程大家很熟悉了,无非就是求导,更新梯度;
而最小二乘法则是通过公式进行计算从而直接求解出使得
L
o
s
s
Loss
Loss 函数达到最小的
参
数
参数
参数。
这里直接给出最小二乘法的求解公式,并指出最小二乘法和梯度下降法的对比(最小二乘法的局限性)
Θ = ( X T X ) − 1 X T Y Θ = (X^{T}X)^{-1}X^{T}Y Θ=(XTX)−1XTY
𝐗为m x n维的矩阵:m代表样本的个数,n代表样本的特征数。
𝐘 是样本的输出向量,维度为m x 1。
从上面可以看出,最小二乘法使用简洁高效,比梯度下降这样的迭代法似乎方便很多。但是这里我们就聊聊最小二乘法的局限性。
- 首先,最小二乘法需要计算 X T X X^{T}X XTX的逆矩阵,有可能它的逆矩阵不存在,这样就没有办法直接用最小二乘法了,此时梯度下降法仍然可以使用。当然,我们可以通过对样本数据进行整理,去掉冗余特征。让 X T X X^{T}X XTX的行列式不为0,然后继续使用最小二乘法。
- 第二,当样本特征n非常的大的时候,计算 X T X X^{T}X XTX的逆矩阵是一个非常耗时的工作(n x n的矩阵求逆),甚至不可行。此时以梯度下降为代表的迭代法仍然可以使用。那这个n到底多大就不适合最小二乘法呢?如果你没有很多的分布式大数据计算资源,建议超过10000个特征就用迭代法吧。或者通过主成分分析降低特征的维度后再用最小二乘法。
- 第三,如果拟合函数不是线性的,这时无法使用最小二乘法,需要通过一些技巧转化为线性才能使用,此时梯度下降仍然可以用。
更详细最小二乘法内容看这里:
https://www.cnblogs.com/pinard/p/5976811.html