最小二乘法是用来做函数拟合或者求函数极值的方法。
最小二乘法的原理与要解决的问题
最小二乘法是由勒让德在 19 世纪发现的,原理的一般形式很简单,当然发现的过程是非常艰难的。形式如下式:
目标函数=∑(观测值−理论值)2
观测值就是我们的多组样本,理论值就是我们的假设拟合函数, 目标函数也就是在机器学习中常说的损失函数,我们的目标是得到使目标函数最小化时候的拟合函数的模型。举一个最简单的线性回归的简单例子,比如我们有 m 个只有一个特征的样本:
(x(1),y(1)),(x(2),y(2)),...(x(m),y(m))
样本采用下面的拟合函数:
hθ(x)=θ0+θ1x
这样我们的样本有一个特征 x,对应的拟合函数 有两个参数θ0和θ1需要求出。
我们的目标函数为:
J(θ0,θ1)=i=1∑m(y(i)−hθ(x(i))2=i=1∑m(y(i)−θ0−θ1x(i))2
为了使J(θ0,θ1)的值最小,使用最小二乘法
最小二乘法的代数法解法
假设J(a,b)=∑i=1m(y(i)−ax(i)−b)2, 要获得该函数的极值,即对该函数的各个未知分量求导,使其导数为 0。即:
∂a∂J(a,b)=0,
∂b∂J(a,b)=0
对 b 求导:
∂b∂J(a,b)=i=1∑m2(y(i)−ax(i)−b)(−1)=0i=1∑m(y(i)−ax(i)−b)=0i=1∑my(i)−ai=1∑mx(i)−i=1∑mb=0i=1∑my(i)−ai=1∑mx(i)−mb=0i=1∑my(i)−ai=1∑mx(i)=mb⇒b=yˉ−axˉ(xˉ和yˉ分别为x和y的均值)
对 a 求导:
∂a∂J(a,b)=i=1∑m2(y(i)−ax(i)−b)(−x(i))=0i=1∑m(y(i)−ax(i)−b)x(i)=0i=1∑m(y(i)−ax(i)−yˉ+axˉ)x(i)=0i=1∑m(x(i)y(i)−a(x(i))2−x(i)yˉ+axˉx(i))=0i=1∑m(x(i)y(i)−x(i)yˉ−a(x(i))2+axˉx(i))=0i=1∑m(x(i)y(i)−x(i)yˉ)−i=1∑m(a(x(i))2−axˉx(i))=0i=1∑m(x(i)y(i)−x(i)yˉ)−ai=1∑m((x(i))2−xˉx(i))=0a=∑i=1m((x(i))2−xˉx(i))∑i=1m(x(i)y(i)−x(i)yˉ)
对于公式∑i=1mx(i)yˉ 可以进一步推导
i=1∑mx(i)yˉ=yˉi=1∑mx(i)=myˉxˉ=i=1∑mxˉyˉ=xˉi=1∑my(i)=i=1∑mxˉy(i)
带入 a 中可得到
a=∑i=1m((x(i))2