线性代数之——最小二乘
1. 最小二乘
经常会没有解,当方程个数大于未知数个数,也即 时,列空间并不是 空间的全部,因此 可能不在列空间中,这时候方程组就无解,但我们不应该就此而停止。
也就是误差 并不总是能得到 0,这时候,如果误差 的长度尽可能的小,那我们就得到了最小二乘解 。
当 无解的时候,我们乘以 来求解 。
假如我们要找到一条直线,让它距离 (0, 6) ,(1, 0),(2, 0) 这三点最近。没有直线 同时穿过这三点,我们要找的两个常数 和 。
由于 不是 的列的一个线性组合,因此方程组无解。
因此,距离这三点最近的一条直线为 。
2. 最小化误差
- 几何理解
任何 都是 的列的一个线性组合,它们都位于以 的列为基的一个平面中。因此,我们要找的就是平面中的一个距离 最近的向量,而这个向量就是 在这个平面中的投影 。
- 代数理解
是不可解的,但 是可解的。我们需要最小化下面这个误差
当取 ,,因此最小误差为 。

- 微积分理解
误差函数可以表示为

两个未知数有两个导数,当导数分别为零时,我们就得到了误差函数的最小值。

整理后我们得到

可以看到,这和 得到的结果是一样的。也就是说当 的时候 的偏导数为零。
在四个基本子空间中,这次我们将 分解为 ,这时候 的零空间解只有零向量,因此最优解只有一个 。


【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!