最小二乘法是用来做函数拟合或求函数极值的方法,在机器学习,尤其是回归模型中,经常可以看到最小二乘法的身影。
它通过最小化误差和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。最小二乘法实质就是最小化“均方误差”,而均方误差就是残差平方和的1/m(m为样本数),同时均方误差也是回归任务中最常用的性能度量。
1.最小二乘法的原理与要解决的问题
目标公式:
也可以写成
最小二乘法的目标就是最小化公式
2.最小二乘法的代数法解法
上面提到要使J(θ0,θ1)最小,方法就是对θ0和θ1分别来求偏导数,令偏导数为0,得到一个关于θ0和θ1的二元方程组。求解这个二元方程组,就可以得到θ0和θ1的值
对于多个样本特征的线性拟合来说,
拟合函数表示为:
损失函数:
利用损失函数分别对θi(i = 0,1,2.....)求导,并令导数为0,可得到
这样我们得到一个N+1元一次方程组,这个方程组有N+1个方程,求解这个方程,就可以得到所有的N+1个未知的θθ。
3.最小二乘法的矩阵法解法
矩阵法比代数法要简洁,且矩阵运算可以取代循环,所以现在很多书和机器学习库都是用的矩阵法来做最小二乘法
假设函数的矩阵表达是
,其中, 假设函数hθ(X)为mx1的向量,θ为nx1的向量,里面有n个代数法的模型参数。X为mxn维的矩阵。m代表样本的个数,n代表样本的特征数。
损失函数定义为:
其中Y是样本的输出向量,维度为mx1. 1/2在这主要是为了求导后系数为1,方便计算
求导后得到:
这里用到了矩阵求导链式法则,和两个矩阵求导公式:
整理后可得:
两边同时左乘可得:
4.最小二乘法的适用场景
最小二乘法简洁高效,比梯度下降方便。但是仍有一定局限性。
1.需要逆矩阵,不存在时无法使用
2.样本特征非常多时,非常耗时
3.如果拟合曲线不是线性的,无法使用最小二乘法。需要转线性才能使用。