matlab最小二乘法_普通最小二乘法

a18f4fcc3779ce593d86914622fcc504.png
在批量梯度下降中讨论了,如何利用梯度下降的方式,如何一步一步寻找到损失函数的最小值,得到最佳拟合的
,这里我们继续讨论线性拟合问题,这次尝试用最小二乘法直接求解
,就是说我们不用从山顶寻找梯度一步一步的往最低点走,某种情况下可以直接计算出

普通最小二乘法(Ordinary least squares)

最小二乘法(又称 最小平方法)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配,利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小,下面一步一步推导。
最小二乘法​zh.wikipedia.org

Step 1. 最初我们是有一组训练数据

,其中

我们想要拟合的曲线为

,这里

Step 2. 现在我们用矩阵的形式来表示

,我们有N个样本数据,每个数据维度是n维

Step 3. 这里把上面的公式组合拆分成3部分

数据集,
参数,
目标值

这时等式就可以写成

Step 4. 我们想要通过这N个等式来求解

,当然这里不一定会有
会使所有等式都成立,这时候就还是需要一个损失函数来判断取
的时候,误差是否为最小,这里就和梯度下降是一个思路,用误差平方和来代表损失,但是这里是用矩阵的形式来表示

,矩阵的
L-2范数即表示误差平方和

Step 5. 这时候就不需要用梯度下降的方法去一步一步计算,还是可以根据人物下山的例子想象一下,梯度下降是人物以

为步长,走一步计算一下梯度再走下一步,而这里我们更像是人物开了天眼,一次性从所有的数据中找到最优解

Step 6. 首先来展开

上式
是一个标量,因为
,
,
,所以根据矩阵乘法的特点,这里乘出来之后会是1个标量,
同理,所以二者可以合并成

Step 7. 在梯度下降中,我们一步一步的计算梯度,一直走到最低点也就是导数为0的点,这里可以直接对损失函数求导,令导数=0即可

此时注意到

是一个
维的方阵,这时候根据公式

如上矩阵相关的公式,都可以在一个cookbook中查找到,所以可以推导出

数据集和
目标集来表示
The Matrix Cookbook​117.128.6.34

总结

至此已经计算出线性回归中

的值,也就是说,我们不必要用梯度下降的方式去迭代收敛到最小值,可以直接根据公式得到
清晰的解析解,但是最小二乘法并不能解决所有情况,有以下几点:

A. 通过公式

发现对在数据集基础上做
逆运算,计算矩阵的逆需要大量的计算,虽然现在计算机能力都很强,但是那也架不住,动辄上百万的数据量和上万的维度,所以首先 数据量过大不适合用最小二乘法,反观梯度下降就没有这个问题(一步一步迭代嘛)

B. 还是逆运算,并不是所有的矩阵都是可逆的,如果数据集中有多重共线性的问题(矩阵行列式=0),这里求逆就行不通了,即便是可逆,多重共线性也会让结果很不准确,但是梯度下降还是可以一步一步收敛。当然了也可以通过比如降维,求伪逆,损失函数加上个惩罚项(后面会讨论LASSORidge)等办法对数据集进行处理,转化成可逆矩阵。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值