致敬大神:
最小二乘的本质:https://www.zhihu.com/question/37031188
https://www.matongxue.com/madocs/818.html
最小二乘:https://blog.csdn.net/bitcarmanlee/article/details/51589143
各种解法:https://www.cnblogs.com/pinard/p/5976811.html
1 为什么使用最小二乘?
使用差的平方和最小勒?用差的绝对值不行么?
1)原理上:差平方符合最大似然估计
我们假设直线对于坐标 Xi 给出的预测 f(Xi) 是最靠谱的预测,所有纵坐标偏离 f(Xi) 的那些数据点都含有噪音,是噪音使得它们偏离了完美的一条直线,一个合理的假设就是偏离路线越远的概率越小,具体小多少,可以用一个正态分布曲线来模拟,这个分布曲线以直线对 Xi 给出的预测 f(Xi) 为中心,实际纵坐标为 Yi 的点 (Xi, Yi) 发生的概率就正比于 EXP[-(ΔYi)^2]。(EXP(..) 代表以常数 e 为底的多少次方)。
所以我们在前面的两点里提到,假设误差的分布要为一个正态分布,原因就在这里了。
2)计算上:数学处理方便
另外说一点我自己的理解:从数学处理的角度来说,绝对值的数学处理过程,比平方和的处理要复杂很多。搞过机器学习的同学都知道,L1正则就是绝对值的方式,而L2正则是平方和的形式。L1能产生稀疏的特征,这对大规模的机器学习灰常灰常重要。但是L1的求解过程,实在是太过蛋疼。所以即使L1能产生稀疏特征,不到万不得已,我们也还是宁可用L2正则,因为L2正则计算起来方便得多。。。
2 线性方程与克莱姆法则
齐次线性方程组
当常数项全为零时,线性方程组⑵称为齐次线性方程组,即:
线性方程组(2)的矩阵形式为
系数构成的行列式称为该方程组的系数行列式D,即
非齐次线性方程组
当其右端的常数项b1,b2,...,bn不全为零时,线性方程组⑴称为非齐次线性方程组。
写作:
其中:
A是线性方程组的系数矩阵,
X是由未知数组成的列向量
是由常数项组成的列向量。【注:这里的 与下面的 0-m没有关系】
非齐次线性方程组表达式转为齐次:
即Aβ=Y
3 最小二乘的表达式
对于最小二乘来说,最终的矩阵表达形式可以表示为:
最后的最优解为:
4.局限性和适用场景
经典的最小二乘法使用起来够简单粗暴,计算过程也不复杂。比梯度下降这样的迭代法似乎方便很多。这里聊聊最小二乘法的局限性和适用性。
1)一个致命的问题就是其对噪声的容忍度很低。 对于噪声的处理,比如有加权最小二乘等方法。
2)最小二乘法需要计算XTXXTX的逆矩阵,有可能它的逆矩阵不存在,这样就没有办法直接用最小二乘法了,此时梯度下降法仍然可以使用。当然,我们可以通过对样本数据进行整理,去掉冗余特征。让XTXXTX的行列式不为0,然后继续使用最小二乘法。
3)当样本特征n非常的大的时候,计算XTXXTX的逆矩阵是一个非常耗时的工作(nxn的矩阵求逆),甚至不可行。此时以梯度下降为代表的迭代法仍然可以使用。那这个n到底多大就不适合最小二乘法呢?如果你没有很多的分布式大数据计算资源,建议超过10000个特征就用迭代法吧。或者通过主成分分析降低特征的维度后再用最小二乘法。
4)如果拟合函数不是线性的,这时无法使用最小二乘法,需要通过一些技巧转化为线性才能使用,此时梯度下降仍然可以用。
5)讲一些特殊情况。当样本量m很少,小于特征数n的时候,这时拟合方程是欠定的,常用的优化方法都无法去拟合数据。当样本量m等于特征数n的时候,用方程组求解就可以了。当m大于n时,拟合方程是超定的,也就是我们常用与最小二乘法的场景了。