Least Squares

4 minute read

要理解 least squares,我们决定通过一个最简单的例子,那就是一元线性拟合

我们观测到了n对值(xi,yi),i=1,⋯,n

我们现在用找到一条直线来拟合这堆数据 y=ax+b

Example

最小二乘的表示形式是 一个 error 表达式

E(a,b)=∑i=1n(yi−(axi+b))2

这个式子的本质是 当a,b是一个很好的 fitting 参数的时候,均值应该很小可以省略掉,那么 E(a,b) 其实就是 yi−(axi+b) 的方差的n倍

我们的优化目标其实就是最小这个 error,这样暗含的就是你找出了一组参数拟合了一个 model,在和目标值的 error 的分布上,是 0 均值,最小方差的。

求解的方法很简单就是对参数a和b当作未知数来求导,这里一阶导数为 0 的时候必定是极值,单变量的时候 梯度 gradient 就是导数。

∂E∂a=0,∂E∂b=0

∂E∂a=∑i=1n2(yi−(axi+b))⋅(−xi) ∂E∂b=∑i=1n2(yi−(axi+b))⋅1

这里可以写成 a,b 行列式形式

(ab)=(∑xi2∑xi∑xi∑1)−1(∑xiyi∑yi)

(XTX)β=XTy

where X=[xk,xk−1,⋯,x0], k is the order. here k=1. 这里的β就是我们的 coefficient, 有时候也叫做 estimator

Weighted least squares 则可以表达为

(XTWX)β=XTWy

这里 f(x,β) 如果是 non linear 则 是 非线性的最小二乘

设 ri 为 residual, 则 梯度方程

∂E∂βj=2∑iri∂ri∂βj,j=1,⋯,k,i=1,⋯,n

这样一组 equations 没有 closed form 的解。

因此用 iteration 的方法来调整参数

βj≈βjt+1=βjt+Δβj

t是迭代次数, Δβj 是一个 shift vector, 然后每一步迭代的时候,用一阶泰勒展开来线性化 。

f(xi,β)≈f(xi,βt)+∑j∂f(xi,βt)∂βj(βj−βjt) ≈f(xi,βt)+∑jJijΔβj

J 是 Jacobian,

这个情况下, 设 Δyi=yi−f(xi,βk)

residual 可以写成

ri=yi−f(xi,β) =(yi−f(xi,βt))+(f(xi,βt)−f(xi,β)) =Δyi−∑s=1kJisΔβs

代入梯度方程

∑iri∂ri∂βj=∑i(Δyi−∑s=1kJisΔβs)Jij

这些梯度方程可以变形为

∑i∑sJijJisΔβs=∑iJijΔyi

写成矩阵形式就是

(JTJ)Δβ=JTΔy

Weighted sum 形式

(JTWJ)Δβ=JTWΔy

这也是高斯牛顿迭代法的基本思想,用泰勒级数展开去近似的代替非线性模型,然后通过多次迭代修正系数来逼近。