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

线性回归与线性拟合的原理、推导与算法实现

关于回归和拟合,从它们的求解过程以及结果来看,两者似乎没有太大差别,事实也的确如此。从本质上说,回归属于数理统计问题,研究解释变量与响应变量之间的关系以及相关性等问题。而拟合是把平面的一系列点,用一条光滑曲线连接起来,并且让更多的点在曲线上或曲线附近。更确切的说,拟合是回归用到的一种数学方法,而拟合与回归的应用场合不同。

拟合常用的方法有最小二乘法梯度下降法高斯牛顿(即迭代最小二乘)列-马算法。其中最最常用的就是最小二乘法。并且拟合可以分为线性拟合与非线性拟合,非线性拟合比较常用的是多项式拟合。根据自变量的个数,拟合也可以分为曲线拟合与曲面拟合等。

回归大多数采用最小二乘法。回归可以分为一元线性回归、一元非线性回归、多元线性回归、多元非线性回归等。

1、最小二乘法


无论是在高等数学、线性代数,还是数理统计,我们都可以看到最小二乘法的身影。只不过每一部分侧重点不同,最终是殊途同归的。但是建议用矩阵的方法来做,这样很便于理解,计算起来也很方便。

最小二乘法的基本思路是:确定函数f(x),使得各个点x1,x2..xn处的函数值偏差f(x1)-y1、f(x2)-y2...f(xn)-yn的平方和或绝对值和最小。如果是一元线性拟合(回归),我们可以设方程为f(x)=kx+b。

这时我们求得函数值偏差平方和为f=\sum [y_i -(kx_i+b)]^2。为了求它的最小值,利用高数的方法,就可以使M分别对k和b的偏导为0,最终求解得方程组:

公式1\frac{\mathrm{d}f }{\mathrm{d} k} = -2\sum (y_i - kx_i-b)x_i = -2(\sum y_ix_i-k\sum x_{i}^{2}-b\sum x_i) = 0

公式2 :\frac{\mathrm{d}f }{\mathrm{d} b} = -2\sum (y_i - kx_i-b) = -2(\sum y_i-k\sum x_{i}-b\sum ) = -2(\sum y_i-k\sum x_{i}-Nb ) = 0

由式2括号内为0,则有b的表达式

公式3 b = \frac{\sum y_i}{N} - k \frac{\sum x_i}{N } = \overline{y} - k\overline{x}

将式(3)代入到式(2)中得到式(4)

公式4 \sum y_ix_i - k\sum x_{i}^{2} - (\overline{y} - k\overline{x})\sum x_i = 0

整理式(4)我们可以得到k的表达式

公式5 k = \frac{\sum y_ix_i - \overline{y}\sum x_i}{\sum x_{i}^{2}-\overline{x}\sum x_i} = \frac{\sum y_ix_i - N\overline{x}\overline{y}}{\sum x_{i}^{2}-N\overline{x}^2}

如果用线性代数的角度来看其实矩阵表达更加简洁,我们最终需要寻找最佳的k和b :

公式6 \left\{\begin{matrix} y_1 = kx_1+b & & & & \\ y_2 = kx_2+b & & & & \\ . & & & & \\ . & & & & \\ y_N = kx_N+b & & & & \end{matrix}\right.

写成矩阵的形式:

公式7 \begin{bmatrix} y_1\\ y_2\\ .\\ .\\ y_N\\ \end{bmatrix} = \begin{bmatrix} x_1 & 1 \\ x_2&1 \\ .&. \\ . &.\\ x_N & 1\\ \end{bmatrix}\begin{bmatrix} k\\ b\\ \end{bmatrix}

令 Y =\begin{bmatrix} y_1\\ y_2\\ .\\ .\\ y_N\\ \end{bmatrix}K=\begin{bmatrix} k\\ b\\ \end{bmatrix}X=\begin{bmatrix} x_1 & 1 \\ x_2&1 \\ .&. \\ . &.\\ x_N & 1\\ \end{bmatrix}

我们可以写成矩阵形式:

公式8 Y= KX

我们要解K,这时候X如果是方阵那么自然的就可以左右两边同时乘X的逆,但是如果X不是方阵(行数大于列数),我们可以左右同乘以X的转置,转换为方阵再取逆(当然能取逆的前提是行列式不能为0),具体如下,求得的逆叫做伪逆:

公式9 Y= KX  =>  X^TY = X^TXK=> (X^TX)^{-1}X^TY = (X^TX)^{-1}X^TXK 

所以解得K的值:

公式10 K = (X^TX)^{-1}X^TY

2、matlab实现

现在有这么一组数据 

xy
0.11.7805
0.32.2285
0.42.3941
0.753.2226
0.93.5697

我们利用matlab进行绘制散点图查看一下

x=[0.1;0.3;0.4;0.75;0.9]; 
y=[1.7805;2.2285;2.3941;3.2226;3.5697];
plot(x,y,'o')
xlim([0,1]);
ylim([1.6,3.7]);
hold on;

可以看出满足很好的线性关系,下面我们用上述最小二乘法的思想求一下拟合直线的k 和b :

方法1:代数方法计算

N=length(x);
k=(sum(y.*x)-N*mean(y)*mean(x))/(sum(x.^2)-N*mean(x)^2);
b=mean(y)-k*mean(x);
x_line=linspace(0,1,101);
y_line=k*x_line+b;
plot(x_line,y_line,'Color','r','LineWidth',1)

 

查看k和b的值:

k=2.2411
b=1.5409

 方法2:矩阵计算

N=length(x);
X=[x,ones(N,1)];
Y=y;
K=inv(X'*X)*X'*Y;
k=K(1);
b=K(2);
x_line=linspace(0,1,101);
y_line=k*x_line+b;
plot(x_line,y_line,'Color','r','LineWidth',1)

查看k和b的值:

k=2.2411
b=1.5409

至此,我们可以看到两种方法的结果是一样的。

相关文章:

线性回归与线性拟合的原理、推导与算法实现

关于回归和拟合,从它们的求解过程以及结果来看,两者似乎没有太大差别,事实也的确如此。从本质上说,回归属于数理统计问题,研究解释变量与响应变量之间的关系以及相关性等问题。而拟合是把平面的一系列点,用…...

【C++】set和multiset

文章目录 关联式容器键值对一、set介绍二、set的使用multiset 关联式容器 STL中的部分容器,比如:vector、list、deque、forward_list(C11)等,这些容器统称为序列式容器,因为其底层为线性序列的数据结构,里面存储的是元…...

二十、泛型(1)

本章概要 基本概念 与 C 的比较 简单泛型 一个元组类库一个堆栈类RandomList 基本概念 普通的类和方法只能使用特定的类型:基本数据类型或类类型。如果编写的代码需要应用于多种类型,这种严苛的限制对代码的束缚就会很大。 多态是一种面向对象思想的泛…...

【Unity数据交互】游戏中常用到的Json序列化

ˊˊ 👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏&#xff1…...

TCP的滑动窗口和拥塞控制

目录 滑动窗口 1.发送窗口和接收窗口 2.滑动窗口的分类 停止等待协议:发送窗口大小 1, 接收窗口大小 1 后退N帧协议(GBN):发送窗口大小 > 1,接收窗口大小 1 选择重传协议(SR&#xf…...

零信任网络:一种全新的网络安全架构

随着网络技术的不断发展,网络安全问题日益凸显。传统的网络安全策略往往基于信任和验证,但这种信任策略存在一定的局限性。为了解决这一问题,零信任网络作为一种全新的网络安全架构,逐渐受到人们的关注。本文将对零信任网络的概念…...

基于单片机的智能拐杖软件设计

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 技术交流认准下方 CSDN 官方提供的联系方式 文章目录 概要 一、整体设计方案2.1本设计设计原理2.1.1单片机基本介绍 二、本设计方案选择三、软件设计AD原理图:原理图…...

小程序如何设置自动预约快递

小程序通过设置自动预约功能,可以实现自动将订单信息发送给快递公司,快递公司可以自动上门取件。下面具体介绍如何设置。 在小程序管理员后台->配送设置处,选择首选配送公司。为了能够支持自动预约快递,请选择正常的快递公司&…...

STM32-HAL库08-TIM的输出比较模式(输出PWM的另一种方式)

STM32-HAL库08-TIM的输出比较模式(输出PWM的另一种方式) 一、所用材料: STM32F103C6T6最小系统板 STM32CUBEMX(HAL库软件) MDK5 示波器或者逻辑分析仪 二、所学内容: 通过定时器TIM的输出比较模式得到预…...

【数据结构】深入浅出讲解计数排序【图文详解,搞懂计数排序这一篇就够了】

计数排序 前言一、计数排序算法核心思路映射 概念补充绝对映射相对映射 二、计数排序算法核心实现步骤三、码源详解四、效率分析(1)时间复杂度 — O(Max(N,range))(2)空间…...

Canvas制作喷泉效果示例

Canvas能制作出很多动画效果&#xff0c;下面是一个制作喷泉效果的示例 效果图 源代码 <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <meta name"viewport" content"widthdevice-width, initial-scale1 ,user-…...

什么是NPM(Node Package Manager)?它的作用是什么?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…...

oracle如果不适用toad或者plsql工具如何获取索引建表语句

select dbms_lob.substr(dbms_metadata.get_ddl(INDEX,INDEX_NAME,DIXON))||; from dba_indexes where ownerDIXON这个语句可以获取dixon用户的所有索引创建语句&#xff0c;sql脚本形式呈现 点开一个语句查看 如果不使用dbms_lob.substr这个函数最后得到是一个clob selec…...

某大厂伺服驱动器量产方案

本文介一款大厂量产伺服驱动器方案&#xff01;带2500线省线式编码器&#xff0c;17位增量编码器&#xff0c;20位绝对值编码器&#xff01;标配CANopen、高精度运动控制&#xff0c;高速总线通讯&#xff0c;主芯片28335FPGA&#xff0c;已验证过&#xff0c;带can和485通讯&a…...

【计算机网络】网络层:数据平面

一.网络层概述 每台路由器的数据平面的主要功能时从其输入链路向其输出链路转发数据报&#xff0c;控制平面的主要功能是协调这些本地的每路由转发动作&#xff0c;使得数据报沿着源和目的地主机之间的路由器路径最终进行端到端传送。 网络层不运行运输层和应用层协议。 转发是…...

Path with “WEB-INF“ or “META-INF“: [webapp/WEB-INF/NewFile.html]

2023-11-04 01:03:14.523 WARN 10896 --- [nio-8072-exec-6] o.s.w.s.r.ResourceHttpRequestHandler : Path with "WEB-INF" or "META-INF": [webapp/WEB-INFNewFile.html] spring.mvc.view.prefix:/webapp/WEB-INF/...

百度OCR 接口调用 提示 216101:param image not exist 问题解决

百度提供的文档并没有描述如何解决,例子也是,用工具请求可以通 axios 请求 需要用FormData 传参 let token await getAccessToken() //官网案例那个 请求token// console.log(token, "token");var formData new FormData();// imageBase64 :Base64 图片数据formD…...

1-10 HTML中input属性

HTML中input属性 text&#xff1a;用于接受单行文本输入password&#xff1a;用于密码输入&#xff0c;输入字符会被掩盖radio&#xff1a;用于单选按钮&#xff0c;用户可以在一组选项中选择一个checkbox&#xff1a;用于复选框&#xff0c;用户可以选择多个选项number&#…...

共焦显微镜使用

x.1 细胞培养 x.2 样品制备 以细菌为例&#xff0c;我们使用荧光染色细菌&#xff0c;静置15分钟。 15分钟后我们使用实验室的专用培养皿&#xff0c;选择吸收100uL的溶液滴在在培养皿中心。 x.3 显微镜使用 我们按照1, 2, 3, 4的顺序打开显微镜&#xff0c; 打开电脑&…...

windows + Mingw32-make 编译 PoDoFo库,openssl, libjpeg, Msys2工具的使用

参考&#xff1a; https://blog.csdn.net/sspdfn/article/details/104244306 https://blog.csdn.net/yaoyuanyylyy/article/details/17436303 https://blog.csdn.net/wxlfreewind/article/details/106492253 前期进行了各种摸索&#xff0c;由于Podofo依赖库比较多&#xff0c…...

SpringBoot 启动类 标准写法

package org.example.rabbitmqspringbootdemodemo; // 改成你自己的项目包名import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;SpringBootApplicationpublic class RabbitMqDemoApplication {public s…...

数科OFD阅读历史清理全攻略:统信UOS/麒麟KYLINOS下图形界面与命令行两种方法实测

数科OFD阅读历史清理全攻略&#xff1a;统信UOS/麒麟KYLINOS下图形界面与命令行两种方法实测 在国产化办公环境中&#xff0c;数科OFD作为主流的版式文档阅读工具&#xff0c;其使用痕迹管理常被忽视却至关重要。无论是个人用户希望保护阅读隐私&#xff0c;还是企业IT管理员需…...

18V/4A同步降压转换器:MPQ8632GLE-4的COT控制与快速瞬态响应解析

MPQ8632GLE-4&#xff1a;4A/18V 同步降压转换器的紧凑型电源解决方案在通信设备、分布式电源系统以及服务器主板等应用中&#xff0c;电源管理单元需要在小面积内实现高效率的电压转换&#xff0c;同时保持良好的瞬态响应。传统的 PWM 控制器往往需要复杂的环路补偿设计&#…...

STM32F103驱动TM1650数码管:从硬件连接到完整代码的保姆级避坑指南

STM32F103驱动TM1650数码管&#xff1a;从硬件连接到完整代码的保姆级避坑指南 第一次接触STM32F103和TM1650数码管模块时&#xff0c;我像大多数嵌入式新手一样&#xff0c;以为按照教程连接几根线、复制几段代码就能轻松点亮数码管。直到实际动手才发现&#xff0c;从硬件连接…...

TPS5450同步降压转换器设计:从宽压输入到5V/3.3V输出的工程实践

1. 项目概述与芯片选型考量最近在做一个需要从较高直流电压&#xff08;比如12V或24V&#xff09;降压到5V和3.3V为系统供电的项目&#xff0c;电流需求还不小&#xff0c;峰值可能达到3A以上。这种场景下&#xff0c;传统的线性稳压器&#xff08;LDO&#xff09;效率太低&…...

避坑指南:PyCharm 2023.3 + Anaconda 虚拟环境配置,绕开‘解释器路径选择界面消失’的陷阱

PyCharm 2023.3与Anaconda虚拟环境深度配置指南&#xff1a;从原理到实战避坑 在数据科学和机器学习项目的开发过程中&#xff0c;PyCharm与Anaconda的组合堪称黄金搭档。然而&#xff0c;当PyCharm 2023.3遇到Anaconda虚拟环境配置时&#xff0c;不少开发者会陷入"解释器…...

手语数字人技术详解:3D 动画生成、动作自然度优化与实时渲染工程实践

一、前言&#xff1a;手语数字人是 AI 手语翻译的 “最后一公里”在国家信息无障碍政策推动下&#xff0c;AI 手语翻译已从技术实验走向大规模落地。但手语不是文字替换&#xff0c;而是身体动作、手部姿态、面部表情、口型同步的综合表达。传统手语生成普遍存在三大问题&#…...

开关电源功率因数校正:从谐波失真到PFC电路设计实践

1. 项目概述&#xff1a;从“相移”到“失真”&#xff0c;理解开关整流器的功率因数挑战在通信、数据中心乃至我们日常使用的各类开关电源适配器中&#xff0c;高频开关整流器是电能转换的核心。作为一名电源工程师&#xff0c;我经常被问到&#xff1a;“为什么我们设备的输入…...

手把手教你用Verilog在FPGA上实现Sobel边缘检测(附完整Matlab图片转TXT流程)

从图像到硬件加速&#xff1a;FPGA实现Sobel边缘检测全流程实战指南 在计算机视觉领域&#xff0c;边缘检测作为基础预处理步骤&#xff0c;直接影响着后续特征提取和目标识别的精度。传统基于CPU的算法实现往往难以满足实时性要求&#xff0c;而FPGA凭借其并行计算能力和低延迟…...

谷歌关键词优化具体要做什么?独立站新手必看的5条铁规

建站满60天&#xff0c;后台数据面板显示0笔订单。 访问谷歌站长控制台&#xff0c;过去28天曝光次数仅为12。一家售卖宠物玩具的独立站上线45天&#xff0c;上传200个商品页面。每页装填3句机器翻译英文。页面缺失买家真实评价&#xff0c;网页找不到1处猫咪啃咬耐用度测试图。…...