当前位置: 首页 > news >正文

最小二乘问题详解1:线性最小二乘

1. 引言

最小二乘可以说是现代科学与工程的“隐形骨架”,几乎无处不在。比如:

  1. 测绘与空间信息科学:摄影测量平差、GNSS/RTK定位、控制网平差。
  2. 机器人与自动驾驶:视觉SLAM/LiDAR SLAM、传感器融合、手眼标定、运动学/动力学参数辨识。
  3. 计算机视觉与计算机图形学:图像配准、三维重建、光照估计、纹理映射。
  4. 机器学习与数据科学:线性回归、岭回归、主成分分析、支持向量机、神经网络训练。

笔者之前对最小二乘问题也只是一知半解,这里就详细学习总结一下。

2. 最小二乘

2.1 定义

最小二乘是一种从有误差的数据中寻找最佳拟合模型的数学方法,它的核心思想是让模型的预测值与实际观测值之间的“误差平方和”最小。

比如经典的最小二乘拟合直线的问题:给定一组有噪声的数据点,需要拟合一条直线y=kx+by=kx+by=kx+b,那么不可能所有点都正好在一条直线上,合理的方案是找到最佳的斜率kkk和截距bbb,使得所有点到这条直线的竖直距离的平方和最小

最小二乘的数学表达为:

min⁡θ∑i=1mri(θ)2=min⁡θ∥r(θ)∥2 \min_{\theta} \sum_{i=1}^m r_i(\theta)^2 = \min_{\theta} \| \mathbf{r}(\theta) \|^2 θmini=1mri(θ)2=θminr(θ)2

其中:

  • ri(θ)r_i(\theta)ri(θ) 是第 iii 个观测的残差(residual):
    ri=yi−f(xi;θ)r_i = y_i - f(x_i; \theta)ri=yif(xi;θ)
  • r(θ)\mathbf{r}(\theta)r(θ) 是所有残差组成的向量
  • θ\thetaθ 是待估计的参数向量

虽然定义出来了,但是另一个问题是——为什么最小二乘用“平方和”而不是“绝对值和”、“四次方和”或其他方式?这背后其实有深刻的数学原理:

  • 从统计学的角度上来讲,最小二乘就是在误差服从高斯分布时的最大似然估计。
  • 从几何的角度上来讲,平方和是欧氏距离的平方,是最自然的距离度量。

不过要说清楚这两点有点麻烦,我们可以先暂时通过高数知识来简单的理解。函数f(r)=r2f(r)=r^2f(r)=r2是一个凸函数,所谓凸函数,直观来说就是任意两点之间的线段始终在函数图像之上,只有一个“谷底”,这个“谷底”就是全局最小值。这意味着任何局部最小值就是全局最小值,在求解优化问题的时候,可以通过梯度下降等算法收敛到全局最优。

2.2 线性

最小二乘问题可以分为线性最小二乘和非线性最小二乘来讨论。首先,我们先来讨论一个比较本质的问题,什么叫做线性?在《初等线性代数》中,线性指的是可加性齐次性,例如一个变换TTT能满足如下两个条件:

  1. T(x+y)=T(x)+T(y)T(x + y) = T(x) + T(y)T(x+y)=T(x)+T(y)
  2. T(αx)=αT(x)T(\alpha x) = \alpha T(x)T(αx)=αT(x)

突然地引入数学上的定义确实有点难以理解,不过我们只需要明白,线性是一种非常优良的性质。比如说,满足线性的函数/变换显然是连续的、可导的以及光滑的,这意味着这个函数/变换不仅结构简单,也易于预测和控制。科学家和工程师都喜欢假设问题的模型是线性的开始研究,即使真实世界的问题模型大多数是非线性的,也会通过数学方法将非线性问题转换成线性问题。因此,要研究最小二乘,首先需要理解线性最小二乘。

3. 线性最小二乘

3.1 定义

需要明确指出的是,问题模型的线性还是非线性,是相对于待定参数θ\thetaθ而言的,而不是已知参数xxx。线性最小二乘的问题模型可以写成如下形式:

f(x;θ)=Aθ f(x; \theta) = A\theta f(x;θ)=Aθ

那么,线性最小二乘的数学表达为:

min⁡θ∥Aθ−b∥2(2) \min_{\theta} \|A\theta - b\|^2 \tag{2} θminAθb2(2)

其中:

  • AAA:设计矩阵(m×nm \times nm×nmmm 是数据点数,nnn 是参数数)
  • θ\thetaθ:未知参数向量(n×1n \times 1n×1
  • bbb:观测向量(m×1m \times 1m×1

3.2 具体化

数学上的概念比较抽象,这里还是结合前面最小二乘拟合直线的例子来理解。给定一组有噪声的数据点:

(x1,y1),(x2,y2),…,(xm,ym) (x_1, y_1), (x_2, y_2), \dots, (x_m, y_m) (x1,y1),(x2,y2),,(xm,ym)

我们希望拟合一条直线:

y=kx+b0 y = kx + b_0 y=kx+b0

其中 kkk 是斜率,b0b_0b0 是截距。很显然,对于待定参数kkkb0b_0b0来说,这个问题模型是线性的,需要使用线性最小二乘来估计参数。

将数据点带入这个问题模型,可得方程组:

{y1=kx1+b0y2=kx2+b0⋮ym=kxm+b0 \begin{cases} y_1 = kx_1 + b_0\\ y_2 = kx_2 + b_0 \\ \vdots \\ y_m = kx_m + b_0 \\ \end{cases} y1=kx1+b0y2=kx2+b0ym=kxm+b0

将方程组写成矩阵形式:

[x11x21⋮⋮xm1][kb0]=[y1y2⋮ym](1) \begin{bmatrix} x_1 & 1 \\ x_2 & 1 \\ \vdots & \vdots \\ x_m & 1 \\ \end{bmatrix} \begin{bmatrix} k \\ b_0 \\ \end{bmatrix}= \begin{bmatrix} y_1 \\ y_2 \\ \vdots \\ y_m \end{bmatrix} \tag{1} x1x2xm111[kb0]=y1y2ym(1)

令:

  • 设计矩阵:A=[x11x21⋮⋮xm1]A = \begin{bmatrix} x_1 & 1 \\ x_2 & 1 \\ \vdots & \vdots \\ x_m & 1 \\ \end{bmatrix}A=x1x2xm111m×2m \times 2m×2
  • 参数向量:θ=[kb0]\theta = \begin{bmatrix} k \\ b_0 \end{bmatrix}θ=[kb0]2×12 \times 12×1
  • 观测向量:b=[y1y2⋮ym]b = \begin{bmatrix} y_1 \\ y_2 \\ \vdots \\ y_m \end{bmatrix}b=y1y2ymm×1m \times 1m×1
  • 问题模型函数:f(x;θ)=kx+b1=[x1][kb1]f(x; \theta) = kx + b_1 = \begin{bmatrix} x & 1 \end{bmatrix}\begin{bmatrix} k \\ b_1 \end{bmatrix}f(x;θ)=kx+b1=[x1][kb1]

那么问题模型的残差就是:

r(θ)=Aθ−b \mathbf{r}(\theta) = A\theta - b r(θ)=Aθb

线性最小二乘问题可归纳为:

min⁡θ=[k,b1]T∥Aθ−b∥2 \min_{\theta = [k, b_1]^T} \|A\theta - b\|^2 θ=[k,b1]TminAθb2

3.3 求解

先不谈如何求解最小二乘公式(2)的问题,先说说如何解决方程组(1),毕竟如果能正确求解方程组(1),那么这个问题就解决了。很显然,方程组(1)就是《初等线性代数》中的线性方程组,根据《初等线性代数》中的知识,这种方程个数mmm比未知数多的线性方程组nnn是没有解的。但是,归结到具体的显式问题中来说,这个方程组应该要有解:假设所有的数据点(xi,yi)(x_i, y_i)(xi,yi)都没有噪声,那么选取任意nnn组数据即可计算出唯一解。但是真实世界的数据是有噪声的,不能这么做。

回忆《初等线性代数》中的知识,求解线性方程组Aθ=bA\theta=bAθ=b最容易理解就是矩阵求逆法,但是这个方程组mmm要远大于nnn,明显是没办法求解逆矩阵的。但是我们可以改造这个方程组,在两边都乘以相同的矩阵ATA^{T}AT:

ATAθ=ATb A^T A \theta = A^T b ATAθ=ATb

这个方程就是正规方程ATAA^T AATA是方阵,在满秩的情况下可以求逆矩阵,其解为:

θ∗=(ATA)−1ATb(3) \theta^* = (A^T A)^{-1} A^T b \tag{3} θ=(ATA)1ATb(3)

这个解其实就是最小二乘公式(2)的解,即最小二乘解。

3.4 原理

为什么说上文的式(3)恰好就是式(2)的最小二乘解呢?为什么我们会知道在两边都乘以相同的矩阵ATA^{T}AT呢?这里就来推导一下。

3.4.1 代数推导

之前已经提到过,最小二乘是“误差平方和”,是一个凸函数,可以求它的极小值。令

J(θ)=∥Aθ−b∥2 J(\theta) = \|A\theta - b\|^2 J(θ)=Aθb2

根据《高等数学》中的知识,要求函数的极小值,需要对 θ\thetaθ 求导,并令梯度(导数)为 0:

∂J∂θ=2(Aθ−b)∂Aθ−b∂θ=0 \frac{\partial J}{\partial \theta} = 2(A\theta - b)\frac{\partial{A\theta - b}}{\partial \theta} = 0 θJ=2(Aθb)θAθb=0

根据矩阵微积分的知识,f(θ)=aTθf(\theta)=a^T\thetaf(θ)=aTθ的导数是aaa,因此:

2AT(Aθ−b)=0 2A^T(A\theta - b) = 0 2AT(Aθb)=0

调换位置,也就得到了正规方程

ATAθ=ATb A^T A \theta = A^T b ATAθ=ATb

3.4.2 几何推导

在回答这个问题之前,我们必须要对《线性代数》中的矩阵有更深刻的认识:矩阵的列向量张成了一个​列空间(Column Space)​​,由该矩阵所有列向量的线性组合所构成。而矩阵与向量相乘的结果,正是这些列向量以向量中对应分量为系数的线性组合。例如,设矩阵 A=[a1a2⋯an]A = \begin{bmatrix} \mathbf{a}_1 & \mathbf{a}_2 & \cdots & \mathbf{a}_n \end{bmatrix}A=[a1a2an],其中 ai\mathbf{a}_iai 是列向量。对于任意向量 x=[x1x2⋮xn]\mathbf{x} = \begin{bmatrix} x_1 \\ x_2 \\ \vdots \\ x_n \end{bmatrix}x=x1x2xn,有:

Ax=x1a1+x2a2+⋯+xnan A\mathbf{x} = x_1\mathbf{a}_1 + x_2\mathbf{a}_2 + \cdots + x_n\mathbf{a}_n Ax=x1a1+x2a2++xnan

这个结果 AxA\mathbf{x}Ax 显然是矩阵 AAA 的列向量的一个线性组合,因此它属于列空间。所以,矩阵乘以一个向量的结果,是其列向量的一个线性组合,且这个结果落在矩阵的列空间中

那么,对于线性最小二乘问题Aθ=bA\theta=bAθ=b中来说,观测向量bbb会落到设计矩阵AAA的列空间中吗?由于噪声的存在,肯定是不行的,只能尽量寻找一个θ\thetaθ,使得AθA\thetaAθ尽量靠近bbb。那么什么样的θ\thetaθ才能满足尽可能接近的要求呢?答案很简单,就是做正交投影。形象的解释就是,一个向量bbb投影平面AAA的影子Aθ∗A\theta^*Aθ才是最接近bbb的,并且最接近的投影方式是正交投影,而这个θ\thetaθ就是最小二乘解θ∗\theta^*θ

所谓正交投影,指的是一个点向一个平面(或直线)作垂线,垂足就是投影点;也就是说,b−Aθb-A\thetabAθ应该垂直于AAA的列空间。这也意味着,b−Aθb-A\thetabAθAAA的每一个列向量都正交,那么就有

AT(b−Aθ)=0 A^T(b−A\theta) = 0 AT(bAθ)=0

调换位置,同样得到正规方程

ATAθ=ATb A^T A \theta = A^T b ATAθ=ATb

以上推论也说明了一个原理:在欧几里得空间中,点到子空间的最短欧式距离,是通过正交投影实现的,最小二乘利用的就是这个原理。

http://www.dtcms.com/a/411043.html

相关文章:

  • vue静态资源优化
  • MiniCPM-V 4.5 视觉模型使用指南
  • 中国建设银行集团网站简单旅游网站开发
  • 口碑好的秦皇岛网站建设哪里有网页设计素材推荐
  • 《道德经》第三章
  • 不同环境(跨集群和同集群)下的Jenkins与Kubernetes集群连接配置
  • 新纪实网站建设淮安网站seo
  • 【序列晋升】45 Spring Data Elasticsearch 实战:3 个核心方案破解索引管理与复杂查询痛点,告别低效开发
  • 国外做的比较的ppt网站有哪些方面设计师入驻平台
  • 济宁高端网站建设公司网站优势
  • PyTorch 实现 CIFAR - 10 图像分类
  • 南平市住房和城乡建设局网站如何做一间公司的网站
  • 哪些网站的登陆界面做的好看163企业邮箱登陆
  • 如何从头开始启动天机学堂项目(个人记录、详细图解)
  • lesson68:JavaScript 操作 HTML 元素、属性与样式全指南
  • 2017年用什么语言做网站制作广告的软件
  • Redis基础篇——集成客户端
  • 不错的免费网站建设衡水如何做企业网站
  • MySQL 面试题及详细解答(二)
  • 「Java EE开发指南」用MyEclipse开发的EJB开发工具(一)
  • 四川微信网站建设天津市规划局官方网站建设项目
  • 移动服务器建设的电影网站云服务器网站解析
  • Java 反射与 MyBatis:ORM 框架的 “灵魂基石”
  • 网站主机教程wordpress 文章点赞插件
  • 网站图片展示形式中国最好的网站建设有哪些
  • 拉取postgresql 18.0 docker镜像并运行容器
  • java 动态代理
  • 24届-Java开发面经-华为od
  • 开源BI系统
  • article.2034672470