最小二乘法的本质通俗解析
当观测数据无法精确落在一条直线或曲面上时,我们希望找到一个“最优”的拟合模型,使得所有数据点与该模型之间的整体偏差尽可能小。最小二乘法正是解决这一问题的核心方法——它通过使“误差的平方和”达到最小来确定最佳拟合参数。
其中,“二乘”即指“平方”,强调的是对误差进行平方处理,避免正负偏差相互抵消,从而更真实地反映拟合效果。
y = ax + b
一、最小二乘法三大核心步骤(以线性拟合为例)
第一步:明确目标——从散点中寻找最佳直线
假设我们收集了一组实际观测数据:(x,y)、(x,y)、…、(x,y),例如x代表时间,y表示温度;或者x是产量,y是成本。我们的目标是找出一条形式为 y = ax + b 的直线,使其尽可能贴近这些数据点。
由于现实数据往往存在噪声或测量误差,各点通常不会严格共线。因此,我们需要定义一种标准来衡量哪条直线“最接近”所有点,这就是最小二乘法的出发点。
第二步:量化误差——如何评估每个点的偏离程度?
对于每一个数据点 (x, y):
- 根据当前直线预测出的值为: = a x + b(读作“y hat”,表示估计值);
- 实际值与预测值之间的差值(残差)为:e = y - ;
若直接将所有残差相加,会出现正负抵消的现象(如上方点+0.5,下方点-0.5,总和为0),导致误判为“无误差”。为此,采用“平方”处理:
- 平方后所有项均为正值;
- 较大的误差会被显著放大(例如 e=2 时,平方为4;而 e=1 仅为1),促使算法优先减小大偏差的影响。
最终优化目标为最小化误差平方和:
S = e + e + … + e = Σ(y - a x - b)
这个S就是我们要最小化的函数。
第三步:求解最优参数——找到使S最小的a和b
为了使S取得最小值,数学上可通过求导实现:分别对S关于a和b求偏导,并令其等于零,解对应的方程组即可得到最优参数表达式。
虽然过程涉及微积分,但使用者只需记住结论即可:
斜率 a = (nΣxy - Σx·Σy) / (nΣx - (Σx))
截距 b = (Σy - aΣx) / n
其中:
- n:数据点总数;
- Σx:所有x坐标的和;
- Σy:所有y坐标的和;
- Σxy:每对x与对应y乘积之和;
- Σx:每个x值平方后的总和。
二、实例演示:快速掌握计算流程
现有三个数据点:(1,2)、(2,3)、(3,5),尝试拟合直线 y = ax + b。
1. 计算各项求和结果
- n = 3
- Σx = 1 + 2 + 3 = 6
- Σy = 2 + 3 + 5 = 10
- Σxy = (1×2) + (2×3) + (3×5) = 2 + 6 + 15 = 23
- Σx = 1 + 2 + 3 = 1 + 4 + 9 = 14
2. 代入公式求解参数
计算斜率 a:
a = (3×23 - 6×10) / (3×14 - 6) = (69 - 60) / (42 - 36) = 9 / 6 = 1.5
计算截距 b:
b = (10 - 1.5×6) / 3 = (10 - 9) / 3 = 1 / 3 ≈ 0.333
3. 得到最终拟合直线
拟合方程为:y = 1.5x + 0.333
验证效果:当x=2时,预测值 = 1.5×2 + 0.333 = 3.333,实际值为3,误差仅约0.333,其平方约为0.11,相对较小,说明拟合合理。
三、关键要点总结
- 适用场景:适用于含有随机扰动或测量误差的数据集,旨在寻找能最好描述趋势的数学模型(如直线、多项式等);
- 核心思想:最小化“实际观测值”与“模型预测值”之间误差的平方和,防止正负偏差抵消,同时加强对异常点的关注;
- 操作流程:
- 设定拟合模型结构(如线性关系 y=ax+b);
- 构建误差平方和函数 S;
- 通过数学方法求出使S最小的参数组合。
在实际工程应用中,无需手动推导计算。常用工具如Python中的
numpy.linalg.lstsq
或MATLAB中的
lsqfit
均可自动完成参数拟合。但理解上述三步逻辑,才能真正掌握最小二乘法的设计原理与内在机制。


雷达卡


京公网安备 11010802022788号







