日拱一卒之最小二乘法

日拱一卒之最小二乘法

由于最小二乘法在最近出现的频率比较高,所以单独拎出来研究研究,b站上有个几何的解读,虽然感觉弄得不错,但是还是觉得有点深了,而且有点快,各种公式的嵌套看的有点乱,于是乎,记录下自己的一些理解与看到的东西。

定义

  • “二乘” :在古汉语和数学术语中,“二乘”就是平方的意思。
  • “最小” :指的是我们要让某个数值达到最小。

一句话定义:
最小二乘法是一种数学优化技术,它通过最小化误差的平方和,来寻找数据的最佳函数匹配。
假设你在纸上画了很多个散点,现在你想画一条直线穿过它们,要求这条直线能最能代表这些点的趋势。你怎么确定哪条线是“最好”的?最小二乘法告诉你:那条让所有点到直线的垂直距离的平方加起来最小的线,就是最好的线。

假设有一组真实数据 y y y 和模型的预测数据 y ^ \hat{y} y^。我们希望它们越接近越好。(人工智能方向的理解)

定义“误差”: 我们定义每一个点的误差为 e i = y i − y ^ i e_i = y_i - \hat{y}_i ei=yiy^i(真实值 - 预测值)。

如果直接求和 ∑ ( y i − y ^ i ) \sum (y_i - \hat{y}_i) (yiy^i),会出问题。因为误差有正有负(有的点在直线上方,有的在下方)。正负相抵后,总和可能为 0,但这并不代表直线完美穿过了所有点,可能只是误差刚好抵消了。

去符号: 为了消除符号影响,我们有两种选择:

  1. 取绝对值 ∣ y i − y ^ i ∣ |y_i - \hat{y}_i| yiy^i
  2. 取平方 ( y i − y ^ i ) 2 (y_i - \hat{y}_i)^2 (yiy^i)2

为什么选择“平方”而不是“绝对值”? 这就是最小二乘法的核心智慧,主要有三个原因:

  1. 惩罚大误差(关键点)

    平方会对大的误差进行“严厉惩罚”。如果误差是 2,平方后是 4;如果误差是 10,平方后变成了 100。

    这意味着,最小二乘法绝不容忍极端偏差。它会拼命把那条线往离得最远的那个点拉一拉,尽量照顾所有点,不让任何一个点掉队太远。

  2. 计算方便(求导)

    绝对值函数 ∣ x ∣ |x| x x = 0 x=0 x=0 处有一个尖角,不可导,数学处理很麻烦。

  3. 平方函数 x 2 x^2 x2 是光滑的抛物线,处处可导。可以直接求导并令其为 0,一步就能算出答案(解析解)。

  4. 统计学背景(高斯分布)

    如果假设数据的噪声服从正态分布(高斯分布) ,那么“最小二乘法”求解出来的结果,等价于“极大似然估计”。这意味着它是统计学上最合理的估计。(这个后边再专门研究)

代数推导

第一步:定义损失函数

假设模型为 Y ≈ X θ Y \approx X\theta Y。我们要最小化误差向量 e = Y − X θ e = Y - X\theta e=Y 的模长平方(即能量):

J ( θ ) = ∥ Y − X θ ∥ 2 J(\theta) = \| Y - X\theta \|^2 J(θ)=Y2

写成矩阵乘法形式(实数域):

J ( θ ) = ( Y − X θ ) T ( Y − X θ ) J(\theta) = (Y - X\theta)^T (Y - X\theta) J(θ)=(Y)T(Y)

第二步:展开公式

利用矩阵转置规则 ( A − B ) T = A T − B T (A-B)^T = A^T - B^T (AB)T=ATBT ( A B ) T = B T A T (AB)^T = B^T A^T (AB)T=BTAT

J ( θ ) = ( Y T − θ T X T ) ( Y − X θ ) J(\theta) = (Y^T - \theta^T X^T)(Y - X\theta) J(θ)=(YTθTXT)(Y)

J ( θ ) = Y T Y − Y T X θ − θ T X T Y + θ T X T X θ J(\theta) = Y^T Y - Y^T X\theta - \theta^T X^T Y + \theta^T X^T X \theta J(θ)=YTYYTθTXTY+θTXT

关键技巧:中间两项是标量(实数)。

  • Y T X θ Y^T X \theta YT 是一个 1 × 1 1 \times 1 1×1 的数。
  • θ T X T Y \theta^T X^T Y θTXTY 也是一个 1 × 1 1 \times 1 1×1 的数。
  • 标量的转置等于它自己,所以这两项是相等的。

J ( θ ) = Y T Y − 2 θ T X T Y + θ T X T X θ J(\theta) = Y^T Y - 2\theta^T X^T Y + \theta^T X^T X \theta J(θ)=YTY2θTXTY+θTXT

第三步:求梯度(对 θ \theta θ 求导)

我们需要用到两个矩阵求导公式:

  1. ∂ ( θ T A ) ∂ θ = A \frac{\partial (\theta^T A)}{\partial \theta} = A θ(θTA)=A (针对线性项)
  2. ∂ ( θ T A θ ) ∂ θ = 2 A θ \frac{\partial (\theta^T A \theta)}{\partial \theta} = 2A\theta θ(θTAθ)=2Aθ (针对二次项,当 A A A 对称时)

J ( θ ) J(\theta) J(θ) 求导:

  • Y T Y Y^T Y YTY θ \theta θ 是常数 → 0 \to 0 0
  • − 2 θ T X T Y -2\theta^T X^T Y 2θTXTY θ \theta θ 求导 → − 2 X T Y \to -2 X^T Y 2XTY
  • θ T ( X T X ) θ \theta^T (X^T X) \theta θT(XTX)θ θ \theta θ 求导 → 2 ( X T X ) θ \to 2 (X^T X) \theta 2(XTX)θ

∇ θ J ( θ ) = − 2 X T Y + 2 X T X θ \nabla_\theta J(\theta) = -2 X^T Y + 2 X^T X \theta θJ(θ)=2XTY+2XT

第四步:令导数为 0(极值点)

为了找到最小值,令梯度为 0:

2 X T X θ − 2 X T Y = 0 2 X^T X \theta - 2 X^T Y = 0 2XT2XTY=0

X T X θ = X T Y X^T X \theta = X^T Y XT=XTY

这就是著名的“正规方程” (Normal Equation)。

最后左乘逆矩阵 ( X T X ) − 1 (X^T X)^{-1} (XTX)1

θ = ( X T X ) − 1 X T Y \theta = (X^T X)^{-1} X^T Y θ=(XTX)1XTY

几何推导:正交投影 (The Geometric Way)

核心思想
  1. 列空间:矩阵 X X X 的列向量张成了一个子空间(平面),记为 C o l ( X ) Col(X) Col(X)
  2. 限制:无论 θ \theta θ 怎么取, X θ X\theta 只能在这个平面上移动。
  3. 目标:真实值 Y Y Y 通常不在这个平面上(因为有噪声)。我们要在这个平面上找一个点 Y ^ = X θ \hat{Y} = X\theta Y^=,离 Y Y Y 最近。
  4. 结论:几何学告诉我们,最近的点就是 Y Y Y 在平面上的正交投影
推导过程

这意味着,误差向量 e = Y − X θ e = Y - X\theta e=Y 必须垂直(正交) 于这个平面。

  • 既然垂直于平面,那么 e e e 必须垂直于平面上的所有基向量(即 X X X 的每一列)。
  • 用数学语言描述“垂直”就是内积为 0

所以, X X X 的每一列与 e e e 的点积都为 0:

X T ⋅ e = 0 X^T \cdot e = 0 XTe=0

代入 e = Y − X θ e = Y - X\theta e=Y

X T ( Y − X θ ) = 0 X^T (Y - X\theta) = 0 XT(Y)=0

展开:

X T Y − X T X θ = 0 X^T Y - X^T X \theta = 0 XTYXT=0

X T X θ = X T Y X^T X \theta = X^T Y XT=XTY

图片放的不合适,但是可以作为一个参考吧,具体的看原文。

image

可以参考https://blog.youkuaiyun.com/MoreAction_/article/details/106443383?ops_request_misc=%257B%2522request%255Fid%2522%253A%25227ef8c0683c2dd970ff9fb57930568291%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=7ef8c0683c2dd970ff9fb57930568291&biz_id=0&spm=1018.2226.3001.4187这篇文章。

以二维举例:

假设我们在一个 3维空间里。有两个基准向量 x 1 x_1 x1 x 2 x_2 x2。它们定义了一个平面。要寻找这两个向量的组合,去够那个飘在空中的点 Y Y Y

具体的数值例子:

  • x 1 x_1 x1 (红色箭头) :躺在 x 轴上 → [ 1 , 0 , 0 ] T \rightarrow [1, 0, 0]^T [1,0,0]T
  • x 2 x_2 x2 (蓝色箭头) :躺在 y 轴上 → [ 0 , 1 , 0 ] T \rightarrow [0, 1, 0]^T [0,1,0]T
  • Y Y Y (空中的星星) :悬浮在半空 → [ 1 , 2 , 3 ] T \rightarrow [1, 2, 3]^T [1,2,3]T

显然, x 1 x_1 x1 x 2 x_2 x2 无论怎么组合( θ 1 x 1 + θ 2 x 2 \theta_1 x_1 + \theta_2 x_2 θ1x1+θ2x2),结果的第三个分量永远是 0。这意味着:永远无法用 x 1 x_1 x1 x 2 x_2 x2 完美组合出 Y Y Y(因为 Y Y Y 的高度是 3)。

目标是找到一组系数 θ 1 , θ 2 \theta_1, \theta_2 θ1,θ2,使得组合出来的向量 Y ^ \hat{Y} Y^(预测值)离 Y Y Y 最近。

直觉 Y Y Y 在地板上的垂直投影就是最近的点。

预测向量 Y ^ = θ 1 x 1 + θ 2 x 2 \hat{Y} = \theta_1 x_1 + \theta_2 x_2 Y^=θ1x1+θ2x2

误差向量 e = Y − Y ^ e = Y - \hat{Y} e=YY^。为了让距离最短,误差线 e e e 必须垂直于地板

为什么是“点积为 0”? 如果误差线 e e e 垂直于整个地板,那么它必须垂直于地板上的每一根经纬线
也就是:

  1. e e e 必须垂直于 x 1 x_1 x1
  2. e e e 必须垂直于 x 2 x_2 x2

数学翻译(垂直 = 点积为 0)

{ x 1 T ⋅ e = 0 x 2 T ⋅ e = 0 \begin{cases} x_1^T \cdot e = 0 \\ x_2^T \cdot e = 0 \end{cases} {x1Te=0x2Te=0

把具体的数字代进去看看:预测值显然应该是影子的坐标 Y ^ = [ 1 , 2 , 0 ] T \hat{Y} = [1, 2, 0]^T Y^=[1,2,0]T
那么误差向量就是 e = [ 1 , 2 , 3 ] − [ 1 , 2 , 0 ] = [ 0 , 0 , 3 ] T e = [1, 2, 3] - [1, 2, 0] = [0, 0, 3]^T e=[1,2,3][1,2,0]=[0,0,3]T(一根竖直向上的线)。

验证垂直性

  1. x 1 ⋅ e = [ 1 , 0 , 0 ] ⋅ [ 0 , 0 , 3 ] = 0 x_1 \cdot e = [1, 0, 0] \cdot [0, 0, 3] = 0 x1e=[1,0,0][0,0,3]=0 (没毛病,垂直)
  2. x 2 ⋅ e = [ 0 , 1 , 0 ] ⋅ [ 0 , 0 , 3 ] = 0 x_2 \cdot e = [0, 1, 0] \cdot [0, 0, 3] = 0 x2e=[0,1,0][0,0,3]=0 (没毛病,垂直)

矩阵化: X T X^T XT 的诞生

x 1 T x_1^T x1T x 2 T x_2^T x2T 叠在一起,这不就是矩阵 X T X^T XT 吗?

[ x 1 T x 2 T ] ⏟ X T ⋅ e = [ 0 0 ] \underbrace{ \begin{bmatrix} x_1^T \\ x_2^T \end{bmatrix} }_{X^T} \cdot e = \begin{bmatrix} 0 \\ 0 \end{bmatrix} XT [x1Tx2T]e=[00]

所以几何条件变成了: X T e = 0 X^T e = 0 XTe=0

重点:这里的 X T X^T XT 作用就是—— “一次性检查误差向量 e e e 是否垂直于所有的基向量”

求解 θ \theta θ

e = Y − X θ e = Y - X\theta e=Y 代入:

X T ( Y − X θ ) = 0 X^T (Y - X\theta) = 0 XT(Y)=0

展开:

  1. X T Y − X T X θ = 0 X^T Y - X^T X \theta = 0 XTYXT=0
  2. X T X θ = X T Y X^T X \theta = X^T Y XT=XTY

代入数值计算验证一下:

  1. 构造 X X X

    X = [ 1 0 0 1 0 0 ] X = \begin{bmatrix} 1 & 0 \\ 0 & 1 \\ 0 & 0 \end{bmatrix} X= 100010

  2. 计算 X T Y X^T Y XTY (投影分量)

    X T Y = [ 1 0 0 0 1 0 ] [ 1 2 3 ] = [ 1 2 ] X^T Y = \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \end{bmatrix} \begin{bmatrix} 1 \\ 2 \\ 3 \end{bmatrix} = \begin{bmatrix} 1 \\ 2 \end{bmatrix} XTY=[100100] 123 =[12]

  3. 计算 X T X X^T X XTX (坐标系校正)

    X T X = [ 1 0 0 0 1 0 ] [ 1 0 0 1 0 0 ] = [ 1 0 0 1 ] X^T X = \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \end{bmatrix} \begin{bmatrix} 1 & 0 \\ 0 & 1 \\ 0 & 0 \end{bmatrix} = \begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix} XTX=[100100] 100010 =[1001]

  4. 解方程

    [ 1 0 0 1 ] θ = [ 1 2 ] \begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix} \theta = \begin{bmatrix} 1 \\ 2 \end{bmatrix} [1001]θ=[12]

    显然:

    θ = [ 1 2 ] \theta = \begin{bmatrix} 1 \\ 2 \end{bmatrix} θ=[12]

结论
我们算出 θ 1 = 1 , θ 2 = 2 \theta_1 = 1, \theta_2 = 2 θ1=1,θ2=2
预测值 Y ^ = 1 ⋅ x 1 + 2 ⋅ x 2 = [ 1 , 2 , 0 ] T \hat{Y} = 1 \cdot x_1 + 2 \cdot x_2 = [1, 2, 0]^T Y^=1x1+2x2=[1,2,0]T

与最大似然估计的联系

简单来说:最小二乘法是最大似然估计在“误差服从正态分布”这个特定假设下的一种特殊情况。

一、 什么是最大似然估计 (MLE)?

Maximum Likelihood Estimation (MLE) 是一种统计方法,用来估计模型的参数。

1. 直观理解:侦探视角

假设你是一个侦探,来到了案发现场(这就是你拿到的数据)。你需要推断凶手是谁、作案手法是什么(这就是模型参数)。

  • 概率(Probability) :已知参数,预测数据。

    • 例子:已知硬币是均匀的(参数),扔10次,出现5正5反的概率是多少?
  • 似然(Likelihood) :已知数据,推断参数。

    • 例子:不知道硬币均不均匀,但我扔了10次,全是正面(数据)。请问,这枚硬币“动过手脚”的可能性有多大?
    • MLE的逻辑:既然我抛出了10次全是正面,那么“这枚硬币两面都是正面”这个参数假设,虽然不一定对,但最能解释当前的数据

MLE的核心思想
找到一组参数 θ \theta θ,使得在这组参数下,出现当前数据的概率最大


二、 最小二乘法与 MLE 的联系(数学推导)

为什么说最小二乘法是 MLE 的一种特例?我们通过线性回归来推导。

1. 设定假设

在线性回归中,假设真实值 y y y 和预测值 X w Xw Xw 之间有一个误差 ϵ \epsilon ϵ

y = X w + ϵ y = Xw + \epsilon y=Xw+ϵ

关键步骤来了! 必须对这个误差 ϵ \epsilon ϵ 做一个假设。通常假设误差服从高斯分布(正态分布) ,且均值为0,方差为 σ 2 \sigma^2 σ2

ϵ ∼ N ( 0 , σ 2 ) \epsilon \sim N(0, \sigma^2) ϵN(0,σ2)

这意味着,给定 x x x w w w,真实标签 y y y 也服从正态分布,其均值是 X w Xw Xw

y ∼ N ( X w , σ 2 ) y \sim N(Xw, \sigma^2) yN(Xw,σ2)

2. 写出概率密度函数

根据正态分布公式,某一个样本点 y i y_i yi 出现的概率密度是:

P ( y i ∣ x i ; w ) = 1 2 π σ exp ⁡ ( − ( y i − w T x i ) 2 2 σ 2 ) P(y_i | x_i; w) = \frac{1}{\sqrt{2\pi}\sigma} \exp\left( - \frac{(y_i - w^T x_i)^2}{2\sigma^2} \right) P(yixi;w)=2π σ1exp(2σ2(yiwTxi)2)

3. 写出似然函数 (Likelihood Function)

因为样本之间是独立的,所以所有样本同时出现的概率(似然函数 L ( w ) L(w) L(w))就是把每一个样本的概率乘起来:

L ( w ) = ∏ i = 1 n P ( y i ∣ x i ; w ) = ∏ i = 1 n 1 2 π σ exp ⁡ ( − ( y i − w T x i ) 2 2 σ 2 ) L(w) = \prod_{i=1}^n P(y_i | x_i; w) = \prod_{i=1}^n \frac{1}{\sqrt{2\pi}\sigma} \exp\left( - \frac{(y_i - w^T x_i)^2}{2\sigma^2} \right) L(w)=i=1nP(yixi;w)=i=1n2π σ1exp(2σ2(yiwTxi)2)

4. 最大化似然函数

要找到 w w w L ( w ) L(w) L(w) 最大。连乘很难算,为了方便计算,取对数(Log-Likelihood)。因为对数函数是单调增的,最大化对数似然等价于最大化原函数。

ln ⁡ L ( w ) = ∑ i = 1 n ln ⁡ [ 1 2 π σ exp ⁡ ( − ( y i − w T x i ) 2 2 σ 2 ) ] \ln L(w) = \sum_{i=1}^n \ln \left[ \frac{1}{\sqrt{2\pi}\sigma} \exp\left( - \frac{(y_i - w^T x_i)^2}{2\sigma^2} \right) \right] lnL(w)=i=1nln[2π σ1exp(2σ2(yiwTxi)2)]

利用对数性质 ln ⁡ ( a b ) = ln ⁡ a + ln ⁡ b \ln(ab) = \ln a + \ln b ln(ab)=lna+lnb,展开:

ln ⁡ L ( w ) = ∑ i = 1 n [ ln ⁡ ( 1 2 π σ ) − ( y i − w T x i ) 2 2 σ 2 ] \ln L(w) = \sum_{i=1}^n \left[ \ln(\frac{1}{\sqrt{2\pi}\sigma}) - \frac{(y_i - w^T x_i)^2}{2\sigma^2} \right] lnL(w)=i=1n[ln(2π σ1)2σ2(yiwTxi)2]

5. 见证奇迹的时刻

要最大化这个 ln ⁡ L ( w ) \ln L(w) lnL(w)

  • 第一项 ∑ ln ⁡ ( 1 2 π σ ) \sum \ln(\frac{1}{\sqrt{2\pi}\sigma}) ln(2π σ1) 是常数(和 w w w 无关),求导时直接为0,可以忽略。

  • 剩下的就是要最大化

    $$

    • \sum_{i=1}^n \frac{(y_i - w^T x_i)2}{2\sigma2}
      $$

最大化一个负数,等价于最小化那个正数(去掉负号)
同时, 1 2 σ 2 \frac{1}{2\sigma^2} 2σ21 也是常数系数,不影响求极值的位置。

所以,最大化似然函数,最终等价于:

最小化 ∑ i = 1 n ( y i − w T x i ) 2 \textbf{最小化} \sum_{i=1}^n (y_i - w^T x_i)^2 最小化i=1n(yiwTxi)2

看!这不就是最小二乘法的公式吗?

1. 这种联系说明了什么?
  • 最小二乘法(Least Squares) 是从几何角度(距离最小)或代数角度出发的。
  • 最大似然估计(MLE) 是从概率统计角度出发的。
  • 联系:如果你假设数据中的噪声是正态分布的,那么这两种方法求出来的解是完全一样的。
2. 如果噪声不是正态分布呢?

这就体现出 MLE 的普适性了。

  • 如果误差服从拉普拉斯分布(Laplace Distribution,尖峰更厚),推导出的 MLE 等价于 最小化绝对值误差(L1 Loss) ,也就是 Lasso 回归的基础。
  • 如果误差服从泊松分布(Poisson Distribution),推导出的就是广义线性模型中的泊松回归。

最小二乘法之所以好用,是因为在自然界中,大多数误差确实服从正态分布(中心极限定理)。它是最大似然估计在高斯噪声假设下的完美替身。

Tips:

  • 残差=真实值-预测值
  • 物理、数学在某些意义上的统一,确实牛皮
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值