线性代数之最小二乘法

发布时间:2026/10/12 3:04:33

线性代数之最小二乘法 最小二乘法可以先理解成一句话当一组数据无法被完全满足时找一个方案让整体误差尽可能小。我们先看一个小例子再把它写成线性代数的形式。一、为什么需要最小二乘法假设你想估计一个角色的移动速度测得时间移动距离1 秒2 米2 秒3 米假设角色从原点开始以恒定速度 (v) 移动那么[距离速度\times时间]第一条数据要求[v2]第二条数据要求[2v3 \quad\Rightarrow\quad v1.5]矛盾了。真实测量可能有误差因此我们不一定能找到一个速度让两条数据都完全成立。现在的问题变成选多大的速度能尽量兼顾这两条数据这就是最小二乘法要解决的问题。二、怎样衡量“整体误差”假设我们选择速度 (v)。那么两次预测与测量的差分别是1 秒时预测 v 米实际测得 2 米 误差v − 2 2 秒时预测 2v 米实际测得 3 米 误差2v − 3不能直接把误差相加因为正负误差可能抵消。例如预测一个偏高 1 米、一个偏低 1 米加起来是零但预测显然并不完全准确。最小二乘法采用把每个误差平方再加起来。因此总误差指标为[E(v)(v-2)2(2v-3)2]“二乘”就是平方“最小”就是让这个平方和最小。三、算出最佳速度把上式展开[E(v)5v^2-16v13]再配方[E(v)5(v-1.6)^20.2]因为平方不可能小于零所以当[\boxed{v1.6}]时误差平方和最小为 (0.2)。我们比较一下选择的速度1 秒时的误差2 秒时的误差误差平方和1.5−0.500.251.6−0.40.20.202.0011.00所以1.6 米/秒并不能完全符合任何一条测量但它让两条距离测量的误差平方和最小。这里的“最佳”是相对于我们选定的模型和误差标准而言不代表它一定就是真实速度。四、这与线性代数有什么关系刚才的两个方程[\begin{cases}v2\2v3\end{cases}]可以写成矩阵形式[\underbrace{\begin{bmatrix}1\2\end{bmatrix}}{A}\underbrace{v}{x}\underbrace{\begin{bmatrix}2\3\end{bmatrix}}_{b}]也就是[Axb]其中(A)已知条件这里是测量时间(x)要估计的参数这里是速度(b)实际观测这里是测量距离(Ax)模型预测的结果。当 (Axb) 没有精确解时我们不再强求完全相等而是寻找[\boxed{\min_x|Ax-b|^2}]这个式子的意思就是寻找参数 (x)让预测值与观测值之间的误差平方和最小。符号看起来复杂做的事情和前面完全一样。五、一般怎样求解最小二乘解满足[\boxed{ATAxATb}]这叫正规方程。其中 (A^T) 表示把矩阵的行和列交换即转置。代入刚才的例子[A^TA\begin{bmatrix}12\end{bmatrix}\begin{bmatrix}1\2\end{bmatrix}5][A^Tb\begin{bmatrix}12\end{bmatrix}\begin{bmatrix}2\3\end{bmatrix}8]于是[5v8]得到[\boxed{v1.6}]与之前配方得到的结果一致。如果 (A) 的各列线性无关还可以写成[x(ATA){-1}A^Tb]不过实际编程时通常更倾向用QR 分解或 SVD求解而不是直接计算这个逆矩阵以提高数值稳定性。六、几何上它是在找“最近的点”在这个例子中模型能够预测出的结果只能是[Ax\begin{bmatrix}v\2v\end{bmatrix}]当 (v) 改变时这些点都在直线[第二个坐标2\times第一个坐标]上。但实际观测点[b\begin{bmatrix}2\3\end{bmatrix}]不在这条直线上。最小二乘法就是在模型允许的那条直线上寻找离观测点最近的点。找到的是[Ax\begin{bmatrix}1.6\3.2\end{bmatrix}]这也是为什么最小二乘法与线性代数中的投影、正交密切相关。七、实际中有什么用拟合直线用一条直线概括一批散乱数据的趋势。估计运动参数根据多次位置测量估计速度。传感器校准根据测量值估计偏移量和比例系数。机器学习线性回归常用平方误差作为训练目标。最后记住解方程追求“每条条件都满足”最小二乘法是在无法全部满足时让误差平方和最小。
延伸阅读

更多相关文章

2026/10/12 3:04:33

C++静态检测实战:从编译警告到Clang-Tidy的系统接入指南

先说个我自己的感受。接手过不少C项目之后,你会发现一个特别矛盾的现象:很多人愿意花大把时间调性能、抠内存、折腾无锁队列,但项目本身的编译警告常年开着默认配置,那些本可以在编译期就被拦下来的bug,偏偏要等上线后…

2026/10/12 3:04:33

Litmus Chaos 实战:node-memory-hog 节点内存耗尽实验全解析

云原生运维可观测性 【免费下载链接】litmus Litmus helps SREs and developers practice chaos engineering in a Cloud-native way. Chaos experiments are published at the ChaosHub (https://hub.litmuschaos.io). Community notes is at https://hackmd.io/a4Zu_sH4TZGei…

2026/10/12 3:04:33

FreeRTOS | HAL_UART_Transmit阻塞问题与解决方法

void Seria2_Printf(char *format, ...) {char String[200];va_list arg;va_start(arg, format);vsprintf(String, format, arg);va_end(arg);HAL_UART_Transmit(&huart2,(uint8_t*)&String, strlen(String), HAL_MAX_DELAY); }在FreeRTOS中使用HAL_UART_Transmit函数时…

2026/10/12 4:10:00

100亿Token微调实战:从数据清洗到LoRA/QLoRA开源全流程

从立项到开源,这个项目整整花了我两个月时间,累计消耗的 Token 数超过了 100 亿。期间经历过数据质量不过关重来、训练中 loss 异常、评测结果不理想等多轮反复。这篇文章不打算只讲“我开源了一个模型”这样一个结果,而是把这套完整流程整理…

2026/10/12 4:10:00

桌面端智能体框架实战:从安装配置到自动化任务编排

1. 从一条更新说起:桌面端智能体框架到底解决了什么问题前几天刷技术社区的时候看到一条消息,某个在开源社区积累了二十多万 star 的智能体框架,正式把桌面客户端铺到了 Mac 和 Windows 两个平台。说实话,第一反应不是"又一个…

2026/10/12 4:10:00

AI编码技能框架实战:从提示词工程到可复用技能资产

1. 这个项目为什么能冲上趋势榜1.1 从标题拆解核心信息“AI编码技能框架”这个词组本身就很有意思。它把三个当下最热的方向揉在了一起:AI、编码、技能框架。不是单纯的AI写代码工具,也不是纯粹的编程教程,而是一个“框架”——这意味着它提供…

2026/10/12 4:10:00

DL/T 698.45规约源码拆解:从链路层到对象模型的避坑指南

简介:DL/T698.45规约源代码是一份面向电力行业通信协议开发的完整工程实现,核心解决电能信息采集与管理系统主站与采集终端、电能表之间的互操作性数据交换问题,适用于点对点、多点共线及一点对多点等通信方式。压缩包共288个文件&#xff0c…

2026/10/12 4:10:00

面向对象基础

定义在类里面的成为方法,定义在类外面的成为函数,--init--是初始化方法,在对象创建时自动调用,可以为对象设置属性self是一个参数,表示当前创建出来的实例对象。关于异常的处理,如果知道异常的类型&#xf…

2026/10/12 4:05:00

VS Code配置C++环境的底层原理与六套实战方案

1. 这不是装个插件就完事的“环境配置”&#xff0c;而是C开发者每天开工前的呼吸节奏 你打开VS Code&#xff0c;新建一个 .cpp 文件&#xff0c;敲下 #include <iostream> &#xff0c;按下F5——结果弹出“找不到调试器”“无法解析头文件”“g: command not fou…

2026/10/11 0:02:13

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”&#xff0c;而是它给出一段看起来合理的说明&#xff0c;程序却从中猜错优先级。通俗做法是&#xff1a;要求模型只交 JSON&#xff08;JavaScript Object Notation&#xff0c;轻量数据格式&#xff09;&#xff0c;再让代码验证它。Gem…

2026/10/11 0:02:13

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里&#xff0c;有A同学跑来问我&#xff1a;选什么毕设题目最稳妥&#xff0c;既能让评审老师觉得工作量够&#xff0c;又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/11 0:02:13

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友&#xff0c;在看完一堆“Hello World”和基础组件之后&#xff0c;大概率都会撞上同一堵墙&#xff1a;StatefulWidget 里那堆 initState、build、dispose 方法&#xff0c;到底什么时候被调用&#xff1f;为什么顺序是那样&#xff1f;在里面到…

2026/10/12 0:04:22

绝缘子缺陷检测数据集清洗与工业级训练实战指南

简介&#xff1a;本资源是面向电力AI研发人员、工业视觉工程师及智能巡检系统开发者的绝缘子缺陷检测专用YOLO格式数据集&#xff0c;解决无人机航拍场景下绝缘子破损、污闪、积雪等9类典型缺陷的精准识别与定位难题。数据集共2139张真实巡检图像&#xff08;含训练/验证/测试集…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑