参考:https://www.cnblogs.com/pinard/p/5976811.html
接着上一篇的知识,这一章主要讲最小二乘法。这一篇主要参考链接如上,这部分主要记载一些我的关注重点。
1、最小二乘法
最小二乘法是用来做函数拟合或者求函数极值的方法。在机器学习,尤其是回归模型中,经常可以看到最小二乘法的身影。
最小二乘法是由勒让德在19世纪发现的。
拟合函数:
这部分和上一篇的梯度下降相同,都是最小化损失函数J(θ),求解最优参数θ。
2、最小二乘法的代数法解法
很明显计算有点复杂,如果计算量比较小,最小二乘法还是比梯度下降方便的,但是如果计算量大的话,梯度下降要比最小二乘法方便。
3.最小二乘法的矩阵法解法
假设函数:
损失函数:
我们可以通过这个公式计算θ。
如果有看不懂的,直接看参考链接。这里是总结一些需要记住的公式。
4.最小二乘法的局限性和适用场景
最小二乘法实用简洁高效,比梯度下降这样的迭代法似乎方便很多。
但是这里我们就聊聊最小二乘法的局限性。
首先,最小二乘法需要计算XTX的逆矩阵,有可能它的逆矩阵不存在,这样就没有办法直接用最小二乘法了,此时梯度下降法仍然可以使用。
当然,我们可以通过对样本数据进行整理,去掉冗余特征。让XTXXTX的行列式不为0,然后继续使用最小二乘法。
第二,当样本特征n非常的大的时候,计算XTXXTX的逆矩阵是一个非常耗时的工作(nxn的矩阵求逆),甚至不可行。此时以梯度下降为代表的迭代法仍然可以使用。
那这个n到底多大就不适合最小二乘法呢?如果你没有很多的分布式大数据计算资源,建议超过10000个特征就用迭代法吧。或者通过主成分分析降低特征的维度后再用最小二乘法。
第三,如果拟合函数不是线性的,这时无法使用最小二乘法,需要通过一些技巧转化为线性才能使用,此时梯度下降仍然可以用。
第四,讲一些特殊情况。当样本量m很少,小于特征数n的时候,这时拟合方程是欠定的,常用的优化方法都无法去拟合数据。当样本量m等于特征数n的时候,用方程组求解就可以了。当m大于n时,拟合方程是超定的,也就是我们常用与最小二乘法的场景了。