【漫话机器学习系列】195.最小二乘法(Ordinary Least Squares, OLS)


最小二乘法(Ordinary Least Squares, OLS)------最经典的线性回归方法

原图来源:Chris Albon

场景:机器学习 / 统计学习 / 回归分析 / 数据建模入门


1. 什么是最小二乘法?

最小二乘法(Ordinary Least Squares, 简称 OLS)是统计学和机器学习中最常见的线性回归方法之一。

它的核心思想非常简单直白:

找一条最合适的直线,使得所有点到这条直线的"垂直距离"的平方和最小。

这条"最合适的直线"其实就是我们想要的模型。


2. 最小二乘法的数学表达式

图片中给出了最小二乘法的核心公式:

<math xmlns="http://www.w3.org/1998/Math/MathML"> y ^ = b + w 1 x 1 + w 2 x 2 + e \hat{y} = b + w_1x_1 + w_2x_2 + e </math>y^=b+w1x1+w2x2+e

每个符号的含义:

符号 含义
<math xmlns="http://www.w3.org/1998/Math/MathML"> y ^ \hat{y} </math>y^ 模型预测值(拟合的结果)
b 截距(bias,偏置项)
<math xmlns="http://www.w3.org/1998/Math/MathML"> w 1 , w 2 , ... w_1, w_2, \dots </math>w1,w2,... 回归系数(参数)
<math xmlns="http://www.w3.org/1998/Math/MathML"> x 1 , x 2 , ... x_1, x_2, \dots </math>x1,x2,... 自变量(特征、因子)
e 残差(误差,error)

3. 最小二乘法的核心目标

目标是什么?

最小化所有样本的误差平方和(Residual Sum of Squares, RSS)

<math xmlns="http://www.w3.org/1998/Math/MathML"> R S S = ∑ i = 1 n ( y i − y i ^ ) 2 RSS = \sum_{i=1}^{n}(y_i - \hat{y_i})^2 </math>RSS=∑i=1n(yi−yi^)2

其中:

  • <math xmlns="http://www.w3.org/1998/Math/MathML"> y i y_i </math>yi 是真实值
  • <math xmlns="http://www.w3.org/1998/Math/MathML"> y i ^ \hat{y_i} </math>yi^ 是预测值
  • n 是样本个数

这就是最小二乘(Least Squares)的名字来源: → 让残差平方和最小。


4. 最小二乘法的图示理解

图片中用非常直观的图展示了OLS的核心思想:

  • 红色线 → 拟合的直线(预测值)
  • 灰色点 → 真实的数据点
  • 每个点到红色线的距离 → 残差
  • 目标 → 让所有这些残差的平方和尽可能小

5. 最小二乘法为什么有效?

优点:

  • 简单直观
  • 数学基础扎实
  • 计算方便(可直接求解公式)
  • 适合作为建模的起点

适用场景:

  • 自变量和因变量近似线性关系
  • 数据噪声不大
  • 特征维度不高
  • 不存在严重多重共线性

6. 最小二乘法的局限性

局限 影响
对异常值敏感 离群点影响大
对线性假设依赖强 非线性关系拟合效果差
多重共线性问题 自变量之间强相关会影响结果

7. 最小二乘法的演变与扩展

最小二乘法是很多高级回归算法的基础,比如:

方法 思想
岭回归(Ridge Regression) OLS + L2正则
Lasso回归 OLS + L1正则
ElasticNet OLS + L1 + L2 正则
广义线性模型(GLM) OLS 的扩展
多项式回归 构造高阶特征进行拟合

8. 总结

最小二乘法是一种「简单但强大」的算法。

它是理解机器学习回归模型的基础,具有重要的理论与实战意义。

一句话总结:

通过最小化预测值和真实值之间误差的平方和,找到一条最适合数据的线。


9. 附:一句话记忆法

"最小二乘法 = 找到一条直线,让所有点到直线的距离平方和最小"


10. 推荐阅读与拓展

  • 《统计学习方法》 李航
  • 《机器学习实战》 Peter Harrington
  • 《ISLR》An Introduction to Statistical Learning
  • sklearn.linear_model.LinearRegression(Python 实现)
相关推荐
乾元几秒前
拒绝服务的进化:AI 调度下的分布式协同攻击策略
人工智能·分布式
困死,根本不会1 分钟前
OpenCV摄像头实时处理:从单特征到联合识别(形状识别 + 颜色识别 + 形状颜色联合识别)
人工智能·opencv·计算机视觉
工具人呵呵2 分钟前
[嵌入式AI从0开始到入土]22_基于昇腾310P RC模式的ACT模型部署实践
人工智能
yj_sharing3 分钟前
PyTorch深度学习实战:从模型构建到训练技巧
人工智能·pytorch·深度学习
安全二次方security²4 分钟前
CUDA C++编程指南(7.31&32&33&34)——C++语言扩展之性能分析计数器函数和断言、陷阱、断点函数
c++·人工智能·nvidia·cuda·断点·断言·性能分析计数器函数
bksheng6 分钟前
【Dify】安装与部署
人工智能
狸奴算君6 分钟前
告别数据泄露:三步构建企业级AI的隐私保护盾
人工智能
Christo313 分钟前
TKDE-2026《Efficient Co-Clustering via Bipartite Graph Factorization》
人工智能·算法·机器学习·数据挖掘
jackylzh13 分钟前
PyTorch 2.x 中 `torch.load` 的 `FutureWarning` 与 `weights_only=False` 参数分析
人工智能·pytorch·python
叶庭云20 分钟前
AI Agent KernelCAT:深耕算子开发和模型迁移的 “计算加速专家”
人工智能·运筹优化·算子·ai agent·kernelcat·模型迁移适配·生态壁垒