最小二乘法求解线性回归问题

news2024/9/29 10:53:17

本文章记录通过矩阵最小二乘法,求解二元方程组的线性回归。

假设,二维平面中有三个坐标(1,1)、(2,2)、(3,2),很显然该三个坐标点不是共线的,如何拟合出一条直线使其为最优直线。

如上图所示,根据三个点,求拟合直线 $$ y = C + Dt $$

将三点的坐标分别带入,可得到如下形式:
{ C + D = 1 C + 2 D = 2 C + 3 D = 2 (1) \begin{cases} C + D = 1\\ C + 2D = 2\\ C + 3D = 2\\ \end{cases} \tag{1} C+D=1C+2D=2C+3D=2(1)

显然方程组无解,因为三点不共线。

令:
A = [ a 1 a 2 ] = [ 1 1 1 2 1 3 ] A = \left[ \begin{matrix} a1 & a2 \end{matrix} \right] = \left[ \begin{matrix} 1 & 1 \\ 1 & 2 \\ 1 & 3 \end{matrix} \right] A=[a1a2]= 111123
b = [ 1 2 2 ] b = \left[ \begin{matrix} 1 \\ 2 \\ 2 \end{matrix} \right] b= 122

则(1)式可表示为:
A [ C D ] = A x = b (2) A\left[ \begin{matrix} C \\ D \end{matrix} \right]=Ax=b\tag{2} A[CD]=Ax=b(2)

令(1,p1)、(2,p2)、(3、p3)分别是拟合直线 y = C + Dt 上的与b 对应的三个坐标,其中
P = [ p 1 p 2 p 3 ] P=\left[ \begin{matrix} p1 \\ p2 \\ p3 \end{matrix} \right] P= p1p2p3

说明:p 是投影的缩写,这里表示b 在拟合直线上的投影点。那么 P 与 b 之间的差值即为误差 e,整个计算过程是为了求出直线,使得 e 最小。

由于 P 中的点均在拟合直线上,所以下列方程有解:
A x ^ = P (3) A\hat{x}=P\tag{3} Ax^=P(3)

说明:P 向量是 b 向量在 Col(A) 空间的投影。Col(A) 即 A 矩阵的列空间。

有投影矩阵的性质可得,
( b − A x ^ ) ⊥ a 1 , ( b − A x ^ ) ⊥ a 2 (b - A\hat{x}) ⊥ a1,(b - A\hat{x}) ⊥ a2 (bAx^)a1(bAx^)a2


A T ( b − A x ^ ) = 0 A^T(b - A\hat{x}) = 0 AT(bAx^)=0

可得
A T A x ^ = A T b (4) A^T A\hat{x}=A^T b \tag4 ATAx^=ATb(4)

计算:
A T A = [ 1 1 1 1 2 3 ] [ 1 1 1 2 1 3 ] = [ 3 6 6 14 ] A^T A = \left[ \begin{matrix} 1 & 1 & 1 \\ 1 & 2 & 3 \\ \end{matrix} \right] \left[ \begin{matrix} 1 & 1 \\ 1 & 2 \\ 1 & 3 \end{matrix} \right] = \left[ \begin{matrix} 3 & 6 \\ 6 & 14 \end{matrix} \right] ATA=[111213] 111123 =[36614]
A T b = [ 1 1 1 1 2 3 ] [ 1 2 2 ] = [ 5 11 ] A^T b = \left[ \begin{matrix} 1 & 1 & 1 \\ 1 & 2 & 3 \\ \end{matrix} \right] \left[ \begin{matrix} 1 \\ 2 \\ 2 \end{matrix} \right] = \left[ \begin{matrix} 5 \\ 11 \end{matrix} \right] ATb=[111213] 122 =[511]
由此得方程组:
{ 3 C + 6 D = 5 6 C + 14 D = 11 (5) \begin{cases} 3C + 6D = 5\\ 6C + 14D = 11 \end{cases} \tag{5} {3C+6D=56C+14D=11(5)

解得:
C = 1 3 , D = 1 2 C =\frac{1}{3}, D =\frac{1}{2} C=31,D=21

即最后求得的拟合直线方程为:
y = 1 3 + 1 2 t (6) y = \frac{1}{3} + \frac{1}{2} t \tag6 y=31+21t(6)

求解过程中的误差
e = p − b e = p - b e=pb
则误差的最小二乘表示为:
m i n ( l ) = ( C + D − 1 ) 2 + ( C + 2 D − 2 ) 2 + ( C + 3 D − 2 ) 2 min(l) = (C + D - 1)^2 + (C + 2D - 2)^2 + (C + 3D - 2)^2 min(l)=(C+D1)2+(C+2D2)2+(C+3D2)2
利用求导函数等于0 的方式,同样可以求得
C = 1 3 , D = 1 2 C =\frac{1}{3}, D =\frac{1}{2} C=31,D=21.

补充说明

A 的各列线性无关,才使得 A^T A可逆,这是最小二乘法成立的大前提。

至此,结束。

追加题目:
t = 1 ; y = 4 t = 1; y = 4 t=1;y=4
t = 2 ; y = 5 t = 2; y = 5 t=2;y=5
t = 3 ; y = 8 t = 3; y = 8 t=3;y=8
如何将上述三个点,拟合到过原点(0,0)的直线上?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1980113.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

React(三):PDF文件在线预览(简易版)

效果 依赖下载 https://mozilla.github.io/pdf.js/getting_started/ 引入依赖 源码 注意:pdf文件的预览地址需要配置代理后才能显示出来 import ./index.scss;function PreviewPDF() {const PDF_VIEWER_URL new URL(./libs/pdfjs-4.5.136-dist/web/viewer.html, im…

12.SpringDataRedis

介绍 SpringData是Spring中数据操作的模块,包含对各种数据库的集成,其中redis的集成模块就叫做SpringDataRedis。 spring的思想从来都不是重新生产,而是整合其他技术。 SpringDataRedis的特点 1.提供了对不同redis客户端的整合&#xff08…

8.4 day bug

bug1 忘记给css变量加var 复制代码到通义千问,解决 bug2 这不是我的bug,是freecodecamp的bug 题目中“ 将 --building-color2 变量的颜色更改为 #000” “ 应改为” 将 #000 变量的颜色更改为 --building-color2 “ bug3 又忘记加var(–xxx) 还去问…

渗透小游戏,各个关卡的渗透实例

Less-1 首先,可以看见该界面,该关卡主要是SQL注入,由于对用户的输入没有做过滤,使查询语句进入到了数据库中,查询到了本不应该查询到的数据 首先,如果想要进入内部,就要绕过,首先是用…

C#中的TCP和UDP

TcpClient TCP客户端 UDP客户端 tcp和udp的区别 TCP(传输控制协议)和UDP(用户数据报协议)是两种在网络通信中常用的传输层协议,它们在C#或任何其他编程语言中都具有相似的特性。下面是TCP和UDP的主要区别:…

MySQL的基本使用

文章目录 MySQL的基本使用什么是SQLSQL学习目标SQL的SELECT语句SQL的INSERT INTO语句 SQL的UPDATE语句SQL的DELETE语句 SQL的WHERE子句可在WHERE子句中使用的运算符SQL的AND和OR运算符SQL的ORDER BY子句SQL的COUNT(*)函数 在项目中操作数据库的步骤安装mysql模块配置mysql模块测…

微服务设计原则——易维护

文章目录 1.充分必要2.单一职责3.内聚解耦4.开闭原则5.统一原则6.用户重试7.最小惊讶8.避免无效请求9.入参校验10.设计模式11.禁用 flag 标识12.分页宜小不宜大参考文献 1.充分必要 不是随便一个功能都需要开发个接口。 虽然一个接口应该只专注一件事,但并不是每个…

摩托罗拉刷机包和固件下载地址

发现了一个非常好的摩托罗拉刷机包和固件下载地址:https://firmware.center/ 里面包含了所有的摩托罗拉的刷机包和软件、电路图等等,非常多,我想镜像到本地网盘,但不知道怎么操作,有没有懂得朋友教我全部镜像到国内的…

Kafka生产者(二)

1、生产者消息发送流程 1.1 发送原理 在消息发送的过程中,涉及到了两个线程——main 线程和 Sender 线程。在 main 线程中创建了一个双端队列 RecordAccumulator。main 线程将消息发送给 RecordAccumulator,Sender 线程不断从 RecordAccumulator 中拉取…

Gamma AI:一键生成专业级PPT的智能工具

1. Gamma 简介 Gamma 是一个致力于通过非常简单的ai交互,制作好的视觉体验作品,它始终站在作者的视角新增功能,同时注重观众视角呈现作品。 突破了以往演示文档(ppt、pdf、网站)表现形式,能够借助ai的力量…

informer中的WorkQueue机制的实现分析与源码解读(1)

背景 client-go中的workqueue包里主要有三个队列,分别是普通队列Queue,延时队列DelayingQueue,限速队列RateLimitingQueue,后一个队列以前一个队列的实现为基础,层层添加新功能。 workqueue是整个client-go源码的重点…

每日学术速递8.5—1

1.SV4D: Dynamic 3D Content Generation with Multi-Frame and Multi-View Consistency 标题: SV4D:具有多帧和多视图一致性的动态 3D 内容生成 作者:Yiming Xie, Chun-Han Yao, Vikram Voleti, Huaizu Jiang, Varun Jampani 文章链接&…

LinuxC++(10):调用可执行程序

认识system函数 可以直接用system在代码中实现调用shell命令 /bin/ls -l /tmp表示执行ls -l命令,打开/tmp地址 而前面的/bin/表示这是shell命令,不可少,可以认为,/bin/后面的就是等价于shell里面输入的命令。 然后,cou…

* (头指针分离自 9822ba4) ,提交代码不能到分支——游离分支

背景 通过git checkout commitId(之前的一个版本); 基于这个版本修改提交代码推送代码,但是远端没有更新最新数据。 操作 通过git checkout commitId(之前的一个版本);通过git branch 查看分支情况,发现所处分支在游离分支:切换到master分…

连接池的原理

文章目录 1. 连接池的含义2. 连接池的作用2.1 不使用连接池的情况2.2 使用连接池的情况 3. 连接池和线程池的关系4. 连接池设计要点5. 使用实测 1. 连接池的含义 数据库连接池(Connection pooling)是程序启动时建立足够的数据库连接,并将这些…

《Unity3D网络游戏实战》学习与实践

纸上得来终觉浅,绝知此事要躬行~ Echo 网络上的两个程序通过一个双向的通信连接实现数据交换,这个连接的一端称为一个Socket “端口”是英文port的意译,是设备与外界通信交流的出口。每台计算机可以分配0到65535共65536个端口 每一条Sock…

Java | Leetcode Java题解之第322题零钱兑换

题目&#xff1a; 题解&#xff1a; public class Solution {public int coinChange(int[] coins, int amount) {int max amount 1;int[] dp new int[amount 1];Arrays.fill(dp, max);dp[0] 0;for (int i 1; i < amount; i) {for (int j 0; j < coins.length; j)…

基于springboot+vue+uniapp的智慧物业平台小程序

开发语言&#xff1a;Java框架&#xff1a;springbootuniappJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#…

c++ 容器 vector

vector的意思就是向量&#xff0c;就是一个顺序表的意思&#xff0c;这个顺序表可以存任意的类型&#xff0c;因为其线性的内存特点&#xff0c;所以在stl里是经常被使用的存在。 vector vector既然要能储存任意的变量&#xff0c;那么就必须使用模板: 这里的T就是变量类型&a…

【QT】鼠标按键事件 - QMouseEvent QKeyEvent

qt 事件 事件1. 事件概念2. 事件的处理3. 按键事件&#xff08;1&#xff09;单个按键&#xff08;2&#xff09;组合按键 4. 鼠标事件&#xff08;1&#xff09;鼠标单击事件&#xff08;2&#xff09;鼠标释放事件&#xff08;3&#xff09;鼠标双击事件&#xff08;4&#x…