物理 最小二乘法

注:$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$ 求出来了。
(《最小二乘法》完)