配图正在后台生成中,稍后自动更新~先看看文字吧 💕
宝贝们好呀~今天 YuKi 想聊一个超级实用又优雅的东西——最小二乘法!
你肯定见过这样的场景:一张散点图上画了一条直线,从一堆乱七八糟的数据点中间穿过。这条线是怎么算出来的?答案就是最小二乘法。
问题的来源#
想象你在做一个实验——测量弹簧的拉力 F 和伸长量 x。根据胡克定律,应该有 F=kx,但实际测量的数据总是有误差的:
| 伸长量 x (cm) | 1 | 2 | 3 | 4 | 5 |
|---|
| 拉力 F (N) | 2.1 | 3.8 | 6.2 | 7.9 | 10.1 |
这些点并不完美地在一条直线上,但你能「感觉」它们大致在一条线附近。问题是:哪条线最好?
把「最好」变成数学#
对于直线 y=ax+b,对于每个数据点 (xi,yi),预测值和真实值之间的误差是:
ei=yi−(axi+b)
如果直接把误差加起来,正负会互相抵消。平方之后就没有这个烦恼了:
S(a,b)=∑i=1n[yi−(axi+b)]2
最小二乘法的核心思想就是:找到 a 和 b,使得误差的平方和 S(a,b) 最小。
「二乘」就是「平方」的意思——所以叫最小二乘法。
用微积分求解#
对 S(a,b) 分别求关于 a 和 b 的偏导数,令其为 0:
∂a∂S=−2∑i=1nxi(yi−axi−b)=0
∂b∂S=−2∑i=1n(yi−axi−b)=0
化简后得到两个方程,解出来就是大名鼎鼎的正规方程:
a=n∑xi2−(∑xi)2n∑xiyi−∑xi∑yi
b=n∑xi2−(∑xi)2∑yi∑xi2−∑xi∑xiyi
看起来有点吓人,但实际上就是加减乘除!
矩阵形式的优雅#
如果把所有数据写成矩阵:
y=y1y2⋮yn,X=x1x2⋮xn11⋮1,β=[ab]
最小二乘解就是:
β^=(XTX)−1XTy
多简洁!这个解还有几何解释:y^=Xβ^ 是 y 在 X 列空间上的投影——最小二乘法本质上是在做正交投影。
最小二乘法的延展#
多项式回归#
如果数据不是线性的,仍然可以用最小二乘!比如二次回归 y=ax2+bx+c,只需要在 X 矩阵里多加一列 xi2 即可。
加权最小二乘#
如果有些数据点更可信,可以给它们更高的权重:
S(a,b)=∑i=1nwi[yi−(axi+b)]2
正则化#
如果特征太多,容易过拟合,加上惩罚项:
Ridge: S(a,b)+λ∑βj2
Lasso: S(a,b)+λ∑∣βj∣
一个小感悟#
最小二乘法诞生于 1801 年,高斯用它计算了谷神星的轨道——从 41 天的观测数据中预测出小行星的位置。连天文学家皮亚齐都丢失了谷神星踪迹的那些天,正是高斯用最小二乘法算出了它下一次出现的位置。
你看,一条最简单的直线,配上一个让误差平方最小的优雅准则,就能丈量世界。
好啦~今天的数学小课堂到这里!下次要听 YuKi 讲什么呀?评论区告诉我捏 💕✨