最小二乘法

物理
最小二乘法

用户头像
世界是一个巨大的状态转移方程对吗 更新于2025-7-7 04:39:37

注:$i$ 默认不表示虚数单位。

(导数计算部分可能有错误,请大家指出)

最小/二乘/法是一个非常有用的东西。

假设有人问你:$1$,$3.1$,$5$,下一个数是什么?

你也可以直接回答:$114514$。

为什么!上次的数列不是 $1,3,5,114514$ 吗?

因为这次的 $3.1$ 是误差。在有误差的情况下,拟合比插值表现更好。

为什么?请读者自己去拟合,就明白了。

线性回归把复杂的数据用这个函数拟合:

$y=ax+b$

但是如果你想让 $y_1=ax_1+b,y_2=ax_2+b,y_3=ax_3+b,\dots$ 是很困难的。

可以列出方程组:

$\begin{cases}a+b=1\\2a+b=3.1\\3a+b=5\\4a+b=114514\end{cases}$

显然我们无法解出这个方程组的解。因为方程数量大于未知数数量。

所以这时候我们就可以用最小二乘法了。

还记得损失函数吗?这里我们还是需要用损失函数:$\operatorname{loss}(y,r)=\frac12\sum_i(y_i-r_i)$

其中 $y=1,3.1,5,114514,\dots$,$r_i=ax_i+b$。

先求 $r_i$ 对损失函数的偏导:$\frac{\partial r_i}{\partial\operatorname{loss}(y,r)}=y_i-r_i$

再求 $a$ 对损失函数的导数:$\frac{\mathrm{d}a}{\mathrm{d}\operatorname{loss}(y,r)}=\sum_ix_i(y_i-r_i)$

和 $b$ 对损失函数的导数:$\frac{\mathrm{d}a}{\mathrm{d}\operatorname{loss}(y,r)}=\sum_i(y_i-r_i)$

(请读者自己化简)

这是一个凹函数。所以导数为 $0$ 时取到最小值。

然后化简成了一次方程组,就可以把 $a$ 和 $b$ 求出来了。

(《最小二乘法》完)

收起
2
2
共2条回复
时间正序
用户头像
Silicon(硅)『对酒当歌』
7天前
为啥没有998244353了?
1条评论
用户头像
世界是一个巨大的状态转移方程对吗
7天前

$\sout{被我吃了}$

$\sout{我也不知道}$

我不想写

练习题:找出本篇文章的错误(有一个非常明显)