最小二乘法的实现与线性回归的应用

1. 简介

简单线性回归中,您有一个因变量y和一个自变量X。该模型可以表示为:

y = m x + b y=mx+b y=mx+b

其中

  • x x x: 自变量
  • y y y: 因变量
  • m m m: 斜率
  • b b b: 截距

最小二乘法是回归分析中用于估计线性回归模型参数的标准方法。它可以最小化误差的平方和,从而找到数据的最佳拟合直线。

在这里,误差是实际值和预测值之间的差异。实际值是观察到的值,而预测值是模型的估计值。

在这里,我们将使用最小二乘法来估计线性回归模型的参数。我们将使用以下公式来计算回归系数:

s s h = ∑ i = 1 n ( y i − ( m x i + b ) ) 2 ssh = \sum_{i=1}^{n}(y_i - (mx_i+b))^2 ssh=i=1n(yi(mxi+b))2

根据链式法则,我们可以计算偏导数:

链式法则:

∂ ∂ x [ f ( g ( x ) ) ] = f ′ ( g ( x ) ) ⋅ g ′ ( x ) \frac{\partial}{\partial x}[f(g(x))] = f'(g(x)) \cdot g'(x) x[f(g(x))]=f(g(x))g(x)

公示得出,复合函数的导数等于外函数的导数乘以内函数的导数。

设: u = y i − ( m x i + b ) u=y_i - (mx_i+b) u=yi(mxi+b)

所以:

∂ ∂ x [ f ( g ( x ) ) ] = u 2 ⋅ ( y i − ( m x i + b ) ) \frac{\partial}{\partial x}[f(g(x))] = u^2 \cdot (y_i - (mx_i+b)) x[f(g(x))]=u2(yi(mxi+b))

导数规则:

  • 常数: f ( x ) = c f(x)=c f(x)=c的导数为0
  • 幂规则: f ( x ) = x n f(x)=x^n f(x)=xn的导数为 n x n − 1 nx^{n-1} nxn1
  • 乘法常数规则: f ( x ) = c ⋅ g ( x ) 的导数为 c ⋅ g ′ ( x ) f(x)=c \cdot g(x)的导数为c \cdot g'(x) f(x)=cg(x)的导数为cg(x)
  • 和差规则: f ( x ) = g ( x ) ± h ( x ) f(x)=g(x) \pm h(x) f(x)=g(x)±h(x)的导数为 g ′ ( x ) ± h ′ ( x ) g'(x) \pm h'(x) g(x)±h(x)
  • 乘法规则: f ( x ) = g ( x ) ⋅ h ( x ) f(x)=g(x) \cdot h(x) f(x)=g(x)h(x)的导数为 g ′ ( x ) ⋅ h ( x ) + g ( x ) ⋅ h ′ ( x ) g'(x) \cdot h(x) + g(x) \cdot h'(x) g(x)h(x)+g(x)h(x)
  • 链式法则: f ( x ) = g ( h ( x ) ) f(x)=g(h(x)) f(x)=g(h(x))的导数为 g ′ ( h ( x ) ) ⋅ h ′ ( x ) g'(h(x)) \cdot h'(x) g(h(x))h(x)

因为是二次方,所以使用幂规则:( u 2 u^2 u2的导数为 2 u 2u 2u

∂ ∂ m = 2 u ⋅ ( − x i ) \frac{\partial }{\partial m} = 2u \cdot (-x_i) m=2u(xi)

∂ ∂ m = − 2 x i ⋅ ( y i − ( m x i + b ) ) \frac{\partial }{\partial m} = -2x_i \cdot (y_i - (mx_i+b)) m=2xi(yi(mxi+b))

因为0的0次方等于1,所以:

∂ ∂ b = − 2 u ⋅ 1 \frac{\partial }{\partial b} = -2u \cdot 1 b=2u1

∂ b ∂ b = − 2 ( y i − ( m x i + b ) ) \frac{\partial b}{\partial b} = -2(y_i - (mx_i+b)) bb=2(yi(mxi+b))

我们可以通过求导数来找到最小值。我们将导数设置为0,然后解出m和b。

∂ s s h ∂ m = − 2 ∑ i = 1 n x i ( y i − ( m x i + b ) ) = 0 \frac{\partial ssh}{\partial m} = -2 \sum_{i=1}^{n}x_i(y_i - (mx_i+b)) = 0 mssh=2i=1nxi(yi(mxi+b))=0

∂ s s h ∂ b = − 2 ∑ i = 1 n ( y i − ( m x i + b ) ) = 0 \frac{\partial ssh}{\partial b} = -2 \sum_{i=1}^{n}(y_i - (mx_i+b)) = 0 bssh=2i=1n(yi(mxi+b))=0

∑ i = 1 n x i ( y i − ( m x i + b ) ) = 0 \sum_{i=1}^{n}x_i(y_i - (mx_i+b)) = 0 i=1nxi(yi(mxi+b))=0

∑ i = 1 n ( y i − ( m x i + b ) ) = 0 \sum_{i=1}^{n}(y_i - (mx_i+b)) = 0 i=1n(yi(mxi+b))=0

∑ i = 1 n x i y i − m ∑ i = 1 n x i 2 − b ∑ i = 1 n x i = 0 \sum_{i=1}^{n}x_iy_i - m\sum_{i=1}^{n}x_i^2 - b\sum_{i=1}^{n}x_i = 0 i=1nxiyimi=1nxi2bi=1nxi=0

∑ i = 1 n y i − m ∑ i = 1 n x i − n b = 0 \sum_{i=1}^{n}y_i - m\sum_{i=1}^{n}x_i - nb = 0 i=1nyimi=1nxinb=0

接下来,我们将解出m和b。

关于b的方程:

n b = ∑ i = 1 n y i − m ∑ i = 1 n x i nb = \sum_{i=1}^{n}y_i - m\sum_{i=1}^{n}x_i nb=i=1nyimi=1nxi

b = ∑ i = 1 n y i − m ∑ i = 1 n x i n b = \frac{\sum_{i=1}^{n}y_i-m\sum_{i=1}^{n}x_i}{n} b=ni=1nyimi=1nxi

关于m的方程:

我们已知b的值,所以我们可以将其代入方程中:

∑ i = 1 n x i y i − m ∑ i = 1 n x i 2 − ∑ i = 1 n y i − m ∑ i = 1 n x i n ∑ i = 1 n x i = 0 \sum_{i=1}^{n}x_iy_i - m\sum_{i=1}^{n}x_i^2 - \frac{\sum_{i=1}^{n}y_i-m\sum_{i=1}^{n}x_i}{n}\sum_{i=1}^{n}x_i = 0 i=1nxiyimi=1nxi2ni=1nyimi=1nxii=1nxi=0

乘n消除分母:

n ∑ i = 1 n x i y i − m n ∑ i = 1 n x i 2 − ( ∑ i = 1 n y i − m ∑ i = 1 n x i ) ∑ i = 1 n x i = 0 n\sum_{i=1}^{n}x_iy_i - mn\sum_{i=1}^{n}x_i^2 - (\sum_{i=1}^{n}y_i-m\sum_{i=1}^{n}x_i)\sum_{i=1}^{n}x_i = 0 ni=1nxiyimni=1nxi2(i=1nyimi=1nxi)i=1nxi=0

n ∑ i = 1 n x i y i − m n ∑ i = 1 n x i 2 − ∑ i = 1 n y i ∑ i = 1 n x i + m ∑ i = 1 n x i ∑ i = 1 n x i = 0 n\sum_{i=1}^{n}x_iy_i - mn\sum_{i=1}^{n}x_i^2 - \sum_{i=1}^{n}y_i\sum_{i=1}^{n}x_i + m\sum_{i=1}^{n}x_i\sum_{i=1}^{n}x_i = 0 ni=1nxiyimni=1nxi2i=1nyii=1nxi+mi=1nxii=1nxi=0

n ∑ i = 1 n x i y i − m n ∑ i = 1 n x i 2 − ∑ i = 1 n y i ∑ i = 1 n x i + m ( ∑ i = 1 n x i ) 2 = 0 n\sum_{i=1}^{n}x_iy_i - mn\sum_{i=1}^{n}x_i^2 - \sum_{i=1}^{n}y_i\sum_{i=1}^{n}x_i + m(\sum_{i=1}^{n}x_i)^2 = 0 ni=1nxiyimni=1nxi2i=1nyii=1nxi+m(i=1nxi)2=0

得出mn的方程:

m n ∑ i = 1 n x i 2 − m ( ∑ i = 1 n x i ) 2 = n ∑ i = 1 n x i y i − ∑ i = 1 n y i ∑ i = 1 n x i mn\sum_{i=1}^{n}x_i^2 - m(\sum_{i=1}^{n}x_i)^2 = n\sum_{i=1}^{n}x_iy_i - \sum_{i=1}^{n}y_i\sum_{i=1}^{n}x_i mni=1nxi2m(i=1nxi)2=ni=1nxiyii=1nyii=1nxi

m ( n ∑ i = 1 n x i 2 − ( ∑ i = 1 n x i ) 2 ) = n ∑ i = 1 n x i y i − ∑ i = 1 n y i ∑ i = 1 n x i m(n\sum_{i=1}^{n}x_i^2 - (\sum_{i=1}^{n}x_i)^2) = n\sum_{i=1}^{n}x_iy_i - \sum_{i=1}^{n}y_i\sum_{i=1}^{n}x_i m(ni=1nxi2(i=1nxi)2)=ni=1nxiyii=1nyii=1nxi

m = n ∑ i = 1 n x i y i − ∑ i = 1 n y i ∑ i = 1 n x i n ∑ i = 1 n x i 2 − ( ∑ i = 1 n x i ) 2 m = \frac{n\sum_{i=1}^{n}x_iy_i - \sum_{i=1}^{n}y_i\sum_{i=1}^{n}x_i}{n\sum_{i=1}^{n}x_i^2 - (\sum_{i=1}^{n}x_i)^2} m=ni=1nxi2(i=1nxi)2ni=1nxiyii=1nyii=1nxi

此时,我们已经得到了m和b的值。分别为:

m = n ∑ i = 1 n x i y i − ∑ i = 1 n y i ∑ i = 1 n x i n ∑ i = 1 n x i 2 − ( ∑ i = 1 n x i ) 2 m = \frac{n\sum_{i=1}^{n}x_iy_i - \sum_{i=1}^{n}y_i\sum_{i=1}^{n}x_i}{n\sum_{i=1}^{n}x_i^2 - (\sum_{i=1}^{n}x_i)^2} m=ni=1nxi2(i=1nxi)2ni=1nxiyii=1nyii=1nxi

b = ∑ i = 1 n y i − m ∑ i = 1 n x i n b = \frac{\sum_{i=1}^{n}y_i-m\sum_{i=1}^{n}x_i}{n} b=ni=1nyimi=1nxi

简写为:

m = n ( ∑ x y ) − ( ∑ x ) ( ∑ y ) n ( ∑ x 2 ) − ( ∑ x ) 2 m = \frac{n(\sum_{}^{}xy) - (\sum_{}^{}x)(\sum_{}^{}y)}{n(\sum_{}^{}x^2) - (\sum_{}^{}x)^2} m=n(x2)(x)2n(xy)(x)(y)

b = ∑ y − m ( ∑ x ) n b = \frac{\sum_{}^{}y - m(\sum_{}^{}x)}{n} b=nym(x)

我们可以使用这些公式来计算m和b的值。然后,我们可以使用这些值来计算预测值。

2. 代码实现

2.1 导入库

import numpy as np
import matplotlib.pyplot as plt

2.2 生成数据

x = np.array([1, 2])
y = np.array([2, 3])

在这里插入图片描述

2.3 计算m和b的值

n = len(x)
m = (n * np.sum(x * y) - np.sum(x) * np.sum(y)) / (n * np.sum(x ** 2) - np.sum(x) ** 2)
b = (np.sum(y) - m * np.sum(x)) / n
m,b

得出结果:

(1.0, 1.0)

2.4 计算预测值

根据线性回归模型:

y = m x + b y=mx+b y=mx+b

因为m和b的值都为1,所以:

y = x + 1 y=x+1 y=x+1

假设x为3,那么y的值为:

y = 3 + 1 = 4 y=3+1=4 y=3+1=4

在这里插入图片描述

3. 其他

你可以记录下来,然后使用这些公式来计算m和b的值。然后,您可以使用这些值来计算预测值。

我们使用的值比较简单,你可以尝试使用更多的值来计算m和b的值。不过,这些值必须是线性相关的。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LVS+Haproxy

LVSHaproxy 一、Haproxy简介1.1、Haproxy应用分析1.2、Haproxy的特性1.3、常见负载均衡策略1.4、LVS、Haproxy、Nginx区别1.5、 Haproxy的优点1.6、常见的Web集群调度器 二、Haproxy部署实例四、日志定义优化 一、Haproxy简介 Haproxy 是一个使用C语言编写的自由及开放源代码软…

mysql odbc驱动安装

到官网下载对应版本的驱动包 可以选择对应版本,建议使用最新版本即可 查看powerDesigner对应的位数,位数对应不上的话,会找不到 powerDesigner 可以参考:powerDesigner安装 我这里装的是32位的 下载对应版本的即可 下载完成&a…

深入理解Kubernetes Pod调试

调试运行中的容器和Pod不像直接调试进程那么容易,本文介绍了通过临时容器共享命名空间的方式调试业务容器进程的方法。原文: Debugging Kubernetes Pods: Deep Dive ZanUnsplash 调试pod最简单的方法是在有问题的pod中执行命令,并尝试排除故障。这种方法…

软件定制开发的优势与步骤|APP搭建|小程序

软件定制开发的优势与步骤|APP搭建|小程序 定制开发的优势: 1. 满足特定需求:定制开发可以根据客户的实际需求进行设计和开发,使得软件系统能够更好地满足客户的业务目标。 2. 优化用户体验:通过深入了解客户的需求,定…

视频监控管理平台/视频汇聚/视频云存储EasyCVR安全检查的相关问题及解决方法3.0

智能视频监控系统/视频云存储/集中存储/视频汇聚平台EasyCVR具备视频融合汇聚能力,作为安防视频监控综合管理平台,它支持多协议接入、多格式视频流分发,视频监控综合管理平台EasyCVR支持海量视频汇聚管理,可应用在多样化的场景上&…

若依前端使用

初始化页面时,路由上加参数 1. 多个菜单对应一个页面,默认查询的数据状态不一样 vue 页面上 通过 debugger; 查看所有的参数, 最后取到了 2. Vue warn]: Error in callback for immediate watcher “fileList”: “TypeError: Cannot read p…

双系统ubuntu20.04(neotic版本)从0实现Gazebo仿真slam建图

双系统ubuntu20.04(neotic版本)从0实现Gazebo仿真slam建图 昨晚完成了ROS的多机通讯,还没来得及整理相关操作步骤,在进行实际小车的实验之前,还是先打算在仿真环境中进行测试,熟悉相关的操作步骤,计划通过虚拟机&…

【深度学习】 Python 和 NumPy 系列教程(九):NumPy详解:1、创建数组的n种方式

目录 一、前言 二、实验环境 三、NumPy 0. 多维数组对象(ndarray) a. 多维数组的属性 1. 创建数组 a. 使用numpy.array函数: b. 使用numpy.zeros函数 c. 使用numpy.ones函数 d. 使用numpy.arange函数 e. 使用numpy.linspace函数 …

2023Q2全球可穿戴腕带出货量达 4400 万台

全球可穿戴设备市场在2023年第二季度继续保持增长态势,总出货量达到了4400万台,同比增长了6%。这一增长得益于消费者对于可穿戴设备的需求不断增加,以及不同细分市场的需求反弹。 根据市场研究机构 Canalys 的最新报告,全球可穿戴…

Android EditText筛选+选择功能开发

在日常开发中经常会遇到这种需求,EditText既需要可以筛选,又可以点击选择。这里筛选功能用的是AutoCompleteTextView,选择功能使用的是第三方库https://github.com/kongzue/DialogX。 Android AutoCompleteTextView(自动完成文本框)的基本使用…

【物联网】简要解释RTK(Real-Time Kinematic)>>实时动态差分定位

引言: RTK(Real-Time Kinematic)技术是一种基于差分GPS的高精度定位技术,它通过实时通信和数据处理,能够提供厘米级甚至亚米级的定位精度。RTK技术在许多领域都得到了广泛应用,如测绘、航空航天、农业等。本…

详解Nacos和Eureka的区别

文章目录 Eureka是什么Nacos是什么Nacos的实现原理 Nacos和Eureka的区别CAP理论连接方式服务异常剔除操作实例方式自我保护机制 Eureka是什么 Eureka 是Spring Cloud 微服务框架默认的也是推荐的服务注册中心, 由Netflix公司与2012将其开源出来,Eureka基于REST服务开发,主要用…

【C++STL基础入门】list改、查操作

文章目录 前言一、list查操作1.1 迭代器循环1.2 for_each函数 二、list改操作2.1 迭代器修改2.2 assign函数2.3 运算符 总结 前言 C标准模板库(STL)是C语言中非常重要的部分,它提供了一组通用的模板类和函数,用于处理常见的数据结…

七、运算符

运算符 1.运算符1.1.赋值运算符1.2.算数运算符1.3.自增和自减运算符1.4.比较运算符1.5.逻辑运算符1.6.位运算符1.6.1.按位与运算1.6.2.按位或运算1.6.3.按位取反运算1.6.4.按位异或运算1.6.5.移位操作1.6.6.复合赋值运算符1.6.7.三元运算符1.6.8.运算符优先级 1.7.训练11.8.训练…

win系统环境搭建(九)——Windows安装chatGPT

windows环境搭建专栏🔗点击跳转 win系统环境搭建(九)——Windows安装chatGPT 本系列windows环境搭建开始讲解如何给win系统搭建环境,本人所用系统是腾讯云服务器的Windows Server 2022,你可以理解成就是你用的windows…

上位机在自动化控制中的作用和优势是什么?

上位机在自动化控制中的作用和优势是什么? 自动化控制编程领域包括单片机、PLC、机器视觉和运动控制等方向。输入“777”,即刻获取关于上位机开发和数据可视化的专业学习资料,近年来,上位机编程逐渐兴起,正在逐步替代…

亚马逊、敦煌网、国际站自养号测评需要哪些资源与技术门槛?

测评服务商说的天花乱坠,实际真假难辨,FB等社交软件自找测评犹如大海捞针。产品都要上架了,靠谱的测评服务还是没找到,亚马逊测评求人不如求己,今天来教你怎么养一批安全、可控的买家号。 亚马逊等跨境平台测评自养号…

【运维篇】三、SLF4J与Logback

文章目录 0、Java的门面设计模式1、SLF4J2、作用3、调试4、SpringBoot采用SLF4JLogback5、切换SpringBoot的日志框架6、logback的配置加载7、logback的配置组成8、logback之logger9、logback之appender10、logback之pattern11、appender的Filter12、logback.xml全解释13、logba…

【校招VIP】测试方案之测试需求分析

考点介绍: 需求分析就是要弄清楚用户需要的是什么功能,用户会怎样使用系统。这样我们测试的时候才能更加清楚的知道系统该怎么样运行,才能更好的设计测试用例,才能更好的测试。 测试方案之测试需求分析-相关题目及解析内容可点击…

Qt事件处理

1. 事件 众所周知Qt是一个基于C的框架,主要用来开发带窗口的应用程序(不带窗口的也行,但不是主流)。我们使用的基于窗口的应用程序都是基于事件,其目的主要是用来实现回调(因为只有这样程序的效率才是最高…