DataLearner logoDataLearnerAI
AI Tech Blogs
Leaderboards
Benchmarks
Models
Resources
Tool Directory

加载中...

DataLearner logoDataLearner AI

A knowledge platform focused on LLM benchmarking, datasets, and practical instruction with continuously updated capability maps.

产品

  • Leaderboards
  • 模型对比
  • Datasets

资源

  • Tutorials
  • Editorial
  • Tool directory

关于

  • 关于我们
  • 隐私政策
  • 数据收集方法
  • 联系我们

© 2026 DataLearner AI. DataLearner curates industry data and case studies so researchers, enterprises, and developers can rely on trustworthy intelligence.

隐私政策服务条款
  1. Home/
  2. Blog List/
  3. Blog Detail

普通最小二乘法(Ordinary Least Squares,OLS)的详细推导过程

2018/10/12 10:50:21
63,395 views
优化回归最小二乘法机器学习

DataLearner WeChat

Follow DataLearner WeChat for the latest AI updates

DataLearner 官方微信二维码
Back to Blog List

Related Blogs

带预测的在线广告分配优化问题梯度下降方法(三种不同地梯度下降方法简介)最小二乘法(Least Squares)详细介绍逻辑回归详解(Logistic Regression)【含Java/Python代码】回归分析中误差分析7种交叉验证(Cross-validation)技术简介(附代码示例)目前正在举办的机器学习相关的比赛2021年适合初学者的10个最佳机器学习在线课程最流行的用于预测的机器学习算法简介及其优缺点说明隐马尔科夫模型及其在NLP中的应用指南

Hot Blogs

1Dirichlet Distribution(狄利克雷分布)与Dirichlet Process(狄利克雷过程)2回归模型中的交互项简介(Interactions in Regression)3贝塔分布(Beta Distribution)简介及其应用4矩母函数简介(Moment-generating function)5普通最小二乘法(Ordinary Least Squares,OLS)的详细推导过程6使用R语言进行K-means聚类并分析结果7深度学习技巧之Early Stopping(早停法)8H5文件简介和使用9手把手教你本地部署清华大学的ChatGLM-6B模型——Windows+6GB显卡本地部署10Wishart分布简介

在统计学中,普通最小二乘法(OLS)是一种用于在线性回归模型中估计未知参数的线性最小二乘法。 OLS通过最小二乘法原则选择一组解释变量的线性函数的参数:最小化给定数据集中观察到的因变量(被预测变量的值)与预测变量之间残差的平方和。这篇博客将简要描述其参数的求解过程(模型的表示参考:最小二乘法简介)。

我们以一个二元数据为例,假设有一组数据$X=\{(x_1,y_1),\cdots,(x_m,y_m)\}$,我们希望求出一条直线,来拟合这一组数据:

y = x\beta + \beta_0

残差平方和:

S(\beta) = \sum_{i=0}^m (y_i - x_i\beta - \beta_0)^2

我们要求出$\beta$和$\beta_0$使得上述目标函数取得最小值,显然,可以通过对$\beta$和$\beta_0$分别求偏导得到:

\begin{aligned}
\frac{\partial S(\beta)}{\partial\beta} &= \sum_{i=1}^m2(y_i-x_i\beta-\beta_0)(-x_i) \\
\\
& = \sum_{i=1}^m(-2)(x_iy_i - x_i^2\beta - \beta_0x_i) \\
\\
& = 2\sum_{i=1}^m(x_i^2\beta+\beta_0x_i - x_iy_i) \\
\end{aligned}
\begin{aligned}
\frac{\partial S(\beta)}{\partial\beta_0} &= \sum_{i=1}^m2(y_i-x_i\beta-\beta_0)(-1) \\
\\
& = \sum_{i=1}^m(-2)(y_i - x_i\beta - \beta_0) \\
\\
& = 2\sum_{i=1}^m(x_i\beta+\beta_0 - y_i) \\
\\
& = 2(m\beta  \frac{\sum_{i=1}^m(x_i)}{m} + m\beta_0 - m\frac{\sum_{i=1}^my_i}{m}) \\
\end{aligned}

令$\bar{x} = \frac{\sum_{i=1}^m(x_i)}{m}$,$\bar{y}=\frac{\sum_{i=1}^my_i}{m}$

那么,上述第二个偏导结果:

\frac{\partial S(\beta)}{\partial\beta_0} = 2 m (\beta \bar{x} + \beta_0 -  \bar{y})

令第二个偏导等于0:

\begin{aligned}
2 m (\beta \bar{x} + \beta_0 -  \bar{y}) &= 0 \\
\\
\beta_0 =  \bar{y} - \beta\bar{x}
\end{aligned}

令上述第一个偏导结果等于0,并带入上述$\beta_0$有:

\begin{aligned}
\frac{\partial S(\beta)}{\partial\beta} &= 0\\
\\
2\sum_{i=1}^m[x_i^2\beta+(\bar{y} - \beta\bar{x})x_i - x_iy_i] &= 0 \\
\\
\beta(\sum_{i=1}^mx_i^2 - \bar{x}\sum_{i=1}^mx_i) &= \sum_{i=1}^mx_iy_i - \bar{y}\sum_{i=1}^mx_i \\
\\
\beta &= \frac{\sum_{i=1}^mx_iy_i - \bar{y}\sum_{i=1}^mx_i}{\sum_{i=1}^mx_i^2 - \bar{x}\sum_{i=1}^mx_i}\\
\\
\beta &= \frac{\sum_{i=1}^mx_iy_i - \bar{y}\sum_{i=1}^mx_i - m\bar{y}\bar{x} + m \bar{y}\bar{x}}{\sum_{i=1}^mx_i^2 - 2\bar{x}\sum_{i=1}^mx_i+ \bar{x}\sum_{i=1}^mx_i} \\
\\
\beta &= \frac{\sum_{i=1}^mx_iy_i - \bar{y}\sum_{i=1}^mx_i - \sum_{i=1}^my_i\bar{x} + m \bar{y}\bar{x}}{\sum_{i=1}^mx_i^2 - 2\bar{x}\sum_{i=1}^mx_i+ m\bar{x}^2} \\
\\
\beta &= \frac{\sum_{i=1}^m(x_iy_i - \bar{y}x_i - y_i\bar{x} + \bar{y}\bar{x})}{\sum_{i=1}^m(x_i - \bar{x})^2} \\
\\
\beta &= \frac{\sum_{i=1}^m(x_i-\bar{x})(y_i - \bar{y})}{\sum_{i=1}^m(x_i - \bar{x})^2} \\
\end{aligned}

这样,$\beta$和$\beta_0$就可以求出来了。

对于多元形式,则可以运用矩阵运算来求解。如上所述,我们的目标函数是:

S(\bold{\beta}) = \sum_{i=1}^m |y_i - \sum_{j=1}^n x_{ij}\beta_j|^2 = ||y-  \bold{X} \bold{\beta}^T||^2

如果要使上述目标函数最小,显然其结果为0,即:

y-  \bold{X} \bold{\beta}^T = 0

也就是说:

\begin{aligned}
\bold{X}\beta^T &= y \\
\\
\bold{X}^T\bold{X}\beta^T &= \bold{X}^Ty \\
\\
(\bold{X}^T\bold{X})^{-1}\bold{X}^T\bold{X}\beta^T &= (\bold{X}^T\bold{X})^{-1}\bold{X}^Ty \\
\\
\beta^T &= (\bold{X}^T\bold{X})^{-1}\bold{X}^Ty \\
\end{aligned}

也就是说,普通最小二乘法在多元情况下只要求出上述矩阵计算的结果即可。不需要迭代。