多元线性回归(一)

基本概念

线性回归时机器学习中监督学习下的一种算法。回归问题主要关注是因变量(需要预测的值,可以是一个也可以是多个)和一个或多个值型的自变量(预测变量)之间的关系。
需要预测的值:即目标变量,target,y,连续值预测变量
影响目标变量的因素:X1……Xn,可以是连续值也可以是离散值。
因变量和自变量之间的关系:即模型,model,是我们要求解的。


1.1 连续值

数值型数据中,能无限细分的叫做连续型
例如身高,长度


1.2 离散型数据

不能无限细分的就叫离散型
比如序号1~20,1和2之间没有别的序号,又比如等级数据,一级二级三级是人为界定,或者我国的各省的名称,不是测量获得的。


1.3 简单的线性回归

前面提到过的,算法说白的了就是公式,简单的线性回归属于一个算法,他所对应的公式
y = w x + b y = wx + b y=wx+b
这个公式中,y是目标变量即未来要预测的值,X是影响y的因素,w,b
是公式上的参数即要求的模型。其实b 就是截距,w就是斜率,所以和明显如果模型求出来了,未来影响y值的未知数据就是一个X值,也可以一说影响y值的因素只有哦一个,所以这就叫简单的线性回归的原因。
同时我们可以发现从x到y的计算,x只是一次方,所以这些算法叫线性回归是我原因

其实,大家在上小学的时候就已经会解一元一次方方程了,为什么那个时候哦不叫人工智能算法呢?因为人工智能算法要求的是最优解!


1.4 最优解

Actual value: 真实值,一般使用y表示
Predicted value: 预测值,是把已知的x带入到公式里面和猜出来的参数w,b计算得到的,一般使用在这里插入图片描述表示
Error::误差,预测值和真实值的差距,一般使用在这里插入图片描述表示
最优解:尽可能找到一个模型整体的误差最小,整体误差通常叫做损失Loss.
Loss:整体的误差,loss通过损失函数 loss function计算得到的
简单的线性回归的dome


1.5 多元线性回归

但是在现实生活中,往往影响y的因素不止一个,这时x就从一个变成n个了
,x1……xn 同时简单线性回归的公式就不在适用了。多元线性回归如下:

多元线性公式
在这里插入图片描述

2. 正规方程

2.1 最小二乘法

最小二乘法(Least Squares Method)是一种常见的数字优化技术,用于拟合一组数据点的最佳线性回归方程。它的目标是找到一条直线,使得该直线和数据点之间的误差平方和最小。

具体而言,最小二乘法的目标是最小化每个数据点与拟合直线之间垂直距离的平方和,即最小化所有数据点到拟合直线的残差平方和。残差是指每个数据点的实际值和集合直线在该点处的预测值之间的差异。

最小的二乘法可用于回归分析,即对一组数据拟合,并预测未来数据点的值。此外,他可以用于求解线性方程组,如先行回归模型的系数或参数估计等。

最小二乘法可以将误差转化为有确定的代数方程组(其方程式数目正好等于未知数的个数),从而可求解出这些未知参数。这个有确定解的代数方程组称为最小二乘法估计的正规方程。公式如下:

在这里插入图片描述

2.2、多元一次方程举例

1、二元一次方程

{ x + y = 14 2 x − y = 10 \begin{cases} x + y=14\\ 2x - y = 10\\ \end{cases} {x+y=142xy=10

2、三元一次方程

{ x − y + z = 100 2 x + y − z = 80 3 x − 2 y + 6 z = 256 \begin{cases} x - y + z = 100\\ 2x + y -z = 80\\ 3x - 2y + 6z = 256\\ \end{cases} xy+z=1002x+yz=803x2y+6z=256

3、八元一次方程

{   14 x 2 + 8 x 3 + 5 x 5 + − 2 x 6 + 9 x 7 + − 3 x 8 = 339 − 4 x 1 + 10 x 2 + 6 x 3 + 4 x 4 + − 14 x 5 + − 2 x 6 + − 14 x 7 + 8 x 8 = − 114 − 1 x 1 + − 6 x 2 + 5 x 3 + − 12 x 4 + 3 x 5 + − 3 x 6 + 2 x 7 + − 2 x 8 = 30 5 x 1 + − 2 x 2 + 3 x 3 + 10 x 4 + 5 x 5 + 11 x 6 + 4 x 7 + − 8 x 8 = 126 − 15 x 1 + − 15 x 2 + − 8 x 3 + − 15 x 4 + 7 x 5 + − 4 x 6 + − 12 x 7 + 2 x 8 = − 395 11 x 1 + − 10 x 2 + − 2 x 3 + 4 x 4 + 3 x 5 + − 9 x 6 + − 6 x 7 + 7 x 8 = − 87 − 14 x 1 + 4 x 3 + − 3 x 4 + 5 x 5 + 10 x 6 + 13 x 7 + 7 x 8 = 422 − 3 x 1 + − 7 x 2 + − 2 x 3 + − 8 x 4 + − 6 x 6 + − 5 x 7 + − 9 x 8 = − 309 \left\{\begin{aligned} & \ 14x_2 + 8x_3 + 5x_5 + -2x_6 + 9x_7 + -3x_8 = 339\\&-4x_1 + 10x_2 + 6x_3 + 4x_4 + -14x_5 + -2x_6 + -14x_7 + 8x_8 = -114\\&-1x_1 + -6x_2 + 5x_3 + -12x_4 + 3x_5 + -3x_6 + 2x_7 + -2x_8 = 30\\&5x_1 + -2x_2 + 3x_3 + 10x_4 + 5x_5 + 11x_6 + 4x_7 + -8x_8 = 126\\&-15x_1 + -15x_2 + -8x_3 + -15x_4 + 7x_5 + -4x_6 + -12x_7 + 2x_8 = -395\\&11x_1 + -10x_2 + -2x_3 + 4x_4 + 3x_5 + -9x_6 + -6x_7 + 7x_8 = -87\\&-14x_1 + 4x_3 + -3x_4 + 5x_5 + 10x_6 + 13x_7 + 7x_8 = 422\\&-3x_1 + -7x_2 + -2x_3 + -8x_4 + -6x_6 + -5x_7 + -9x_8 = -309 \end{aligned}\right.  14x2+8x3+5x5+2x6+9x7+3x8=3394x1+10x2+6x3+4x4+14x5+2x6+14x7+8x8=1141x1+6x2+5x3+12x4+3x5+3x6+2x7+2x8=305x1+2x2+3x3+10x4+5x5+11x6+4x7+8x8=12615x1+15x2+8x3+15x4+7x5+4x6+12x7+2x8=39511x1+10x2+2x3+4x4+3x5+9x6+6x7+7x8=8714x1+4x3+3x4+5x5+10x6+13x7+7x8=4223x1+7x2+2x3+8x4+6x6+5x7+9x8=309

# 上面八元一次方程对应的X数据
X = np.array([[  0 ,14 , 8 ,  0 ,  5,  -2,   9,  -3],
 [ -4 , 10 ,  6 ,  4 ,-14 , -2 ,-14  , 8],
 [ -1 , -6  , 5 ,-12 ,  3 , -3 ,  2 , -2],
 [  5 , -2  , 3 , 10  , 5 , 11 ,  4  ,-8],
 [-15 ,-15  ,-8 ,-15 ,  7 , -4, -12 ,  2],
 [ 11 ,-10 , -2 ,  4  , 3 , -9 , -6 ,  7],
 [-14 ,  0 ,  4 , -3  , 5 , 10 , 13 ,  7],
 [ -3 , -7 , -2 , -8  , 0 , -6 , -5 , -9]])
# 对应的y
y = np.array([ 339 ,-114  , 30 , 126, -395 , -87 , 422, -309])
display(X,y)

2.3、矩阵转置公式与求导公式

转置公式如下:

  • ( m A ) T = m A T (mA)^T = mA^T (mA)T=mAT,其中m是常数
  • ( A + B ) T = A T + B T (A + B)^T = A^T + B^T (A+B)T=AT+BT
  • ( A B ) T = B T A T (AB)^T = B^TA^T (AB)T=BTAT
  • ( A T ) T = A (A^T)^T = A (AT)T=A

假设我们有一个矩阵 A A A,它是一个 3 × 2 3 \times 2 3×2 的矩阵,其中包含了 6 6 6 个元素。我们可以将其表示为:

A = ( 1 2 3 4 5 6 ) A = \begin{pmatrix} 1 & 2 \\ 3 & 4 \\ 5 & 6 \\ \end{pmatrix} A= 135246

现在,如果我们想要转置矩阵 A A A,我们可以将 A A A 中的行和列互换。这样就得到了一个新的矩阵 A T A^T AT,它的行数和 A A A 的列数相等,列数和 A A A 的行数相等。在这种情况下, A T A^T AT 是一个 2 × 3 2 \times 3 2×3 的矩阵。我们可以使用下面的公式来计算 A T A^T AT

A i , j T = A j , i A^T_{i,j} = A_{j,i} Ai,jT=Aj,i

也就是说,新矩阵中的第 i i i 行和第 j j j 列的元素等于原矩阵中的第 j j j 行和第 i i i 列的元素。

下面是具体的演示:

A T = ( 1 3 5 2 4 6 ) A^T = \begin{pmatrix} 1 & 3 & 5 \\ 2 & 4 & 6 \\ \end{pmatrix} AT=(123456)

在上面的例子中,我们首先写出了矩阵 A A A,然后使用公式 A i , j T = A j , i A^T_{i,j} = A_{j,i} Ai,jT=Aj,i 将其转置为矩阵 A T A^T AT。转置矩阵的行和列与原矩阵相反,其中原矩阵的第 i i i 行变为了新矩阵的第 i i i 列,原矩阵的第 j j j 列变为了新矩阵的第 j j j 行。

求导公式如下:

  • $ ∂ X T ∂ X = I \frac{\partial X^T}{\partial X} = I XXT=I 求解出来是单位矩阵
  • ∂ X T A ∂ X = A \frac{\partial X^TA}{\partial X} = A XXTA=A
  • $ ∂ A X T ∂ X = A \frac{\partial AX^T}{\partial X} = A XAXT=A
  • ∂ A X ∂ X = A T \frac{\partial AX}{\partial X} = A^T XAX=AT
  • ∂ X A ∂ X = A T \frac{\partial XA}{\partial X} = A^T XXA=AT
  • ∂ X T A X ∂ X = ( A + A T ) X ; \frac{\partial X^TAX}{\partial X} = (A + A^T)X; XXTAX=(A+AT)X; A不是对称矩阵
  • ∂ X T A X ∂ X = 2 A X ; \frac{\partial X^TAX}{\partial X} = 2AX; XXTAX=2AX; A是对称矩阵

2.4、推导正规方程 θ \theta θ 的解

  1. 矩阵乘法公式展开
  • J ( θ ) = 1 2 ( X θ − y ) T ( X θ − y ) J(\theta) = \frac{1}{2}(X\theta - y)^T(X\theta - y) J(θ)=21(y)T(y)

  • J ( θ ) = 1 2 ( θ T X T − y T ) ( X θ − y ) J(\theta) = \frac{1}{2}(\theta^TX^T - y^T)(X\theta - y) J(θ)=21(θTXTyT)(y)

  • J ( θ ) = 1 2 ( θ T X T X θ − θ T X T y − y T X θ + y T y ) J(\theta) = \frac{1}{2}(\theta^TX^TX\theta - \theta^TX^Ty -y^TX\theta + y^Ty) J(θ)=21(θTXTθTXTyyT+yTy)

  1. 进行求导(注意X、y是已知量, θ \theta θ 是未知数):
  • J ′ ( θ ) = 1 2 ( θ T X T X θ − θ T X T y − y T X θ + y T y ) ′ J'(\theta) = \frac{1}{2}(\theta^TX^TX\theta - \theta^TX^Ty -y^TX\theta + y^Ty)' J(θ)=21(θTXTθTXTyyT+yTy)​​

    y T y y^Ty yTy 是常量

  • J ′ ( θ ) = 1 2 ( ( θ T X T X θ ) ′ − ( θ T X T y ) ′ − ( y T X θ ) ′ ) J'(\theta) = \frac{1}{2}((\theta^TX^TX\theta)' - (\theta^TX^Ty)' -(y^TX\theta)') J(θ)=21((θTXT)(θTXTy)(yT))​​​​​

根据2.3、矩阵转置公式与求导公式可知

  • J ′ ( θ ) = 1 2 ( ( θ T X T X θ ) ′ − X T y − ( y T X ) T ) J'(\theta) = \frac{1}{2}((\theta^TX^TX\theta)' - X^Ty -(y^TX)^T) J(θ)=21((θTXT)XTy(yTX)T)​​

  • J ′ ( θ ) = 1 2 ( X T X θ + ( θ T X T X ) T − X T y − ( y T X ) T ) J'(\theta) = \frac{1}{2}(X^TX\theta + (\theta^TX^TX)^T- X^Ty -(y^TX)^T) J(θ)=21(XT+(θTXTX)TXTy(yTX)T)​​​

  • J ′ ( θ ) = 1 2 ( X T X θ + X T X θ − X T y − X T y ) J'(\theta) = \frac{1}{2}(X^TX\theta + X^TX\theta- X^Ty -X^Ty) J(θ)=21(XT+XTXTyXTy)

  1. 根据上面求导公式进行运算:
  • J ′ ( θ ) = 1 2 ( X T X θ + ( θ T X T X ) T − X T y − ( y T X ) T ) J'(\theta) = \frac{1}{2}(X^TX\theta + (\theta^TX^TX)^T-X^Ty - (y^TX)^T) J(θ)=21(XT+(θTXTX)TXTy(yTX)T)
  • J ′ ( θ ) = 1 2 ( X T X θ + X T X θ − X T y − X T y ) J'(\theta) = \frac{1}{2}(X^TX\theta + X^TX\theta -X^Ty - X^Ty) J(θ)=21(XT+XTXTyXTy)
  • J ′ ( θ ) = 1 2 ( 2 X T X θ − 2 X T y ) J'(\theta) = \frac{1}{2}(2X^TX\theta -2X^Ty) J(θ)=21(2XT2XTy)
  • J ′ ( θ ) = X T X θ − X T y J'(\theta) =X^TX\theta -X^Ty J(θ)=XTXTy
  • J ′ ( θ ) = X T ( X θ − y ) J'(\theta) =X^T(X\theta -y) J(θ)=XT(y) 矩阵运算分配律
  1. 令导数 J ′ ( θ ) = 0 : J'(\theta) = 0: J(θ)=0
  • 0 = X T X θ − X T y 0 =X^TX\theta -X^Ty 0=XTXTy

  • X T X θ = X T y X^TX\theta = X^Ty XT=XTy

  1. 矩阵没有除法,使用逆矩阵进行转化:
  • ( X T X ) − 1 X T X θ = ( X T X ) − 1 X T y (X^TX)^{-1}X^TX\theta = (X^TX)^{-1}X^Ty (XTX)1XT=(XTX)1XTy
  • I θ = ( X T X ) − 1 X T y I\theta = (X^TX)^{-1}X^Ty Iθ=(XTX)1XTy
  • θ = ( X T X ) − 1 X T y \theta = (X^TX)^{-1}X^Ty θ=(XTX)1XTy

到此为止,公式推导出来了~

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

智能优化算法应用:基于白冠鸡算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于白冠鸡算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于白冠鸡算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.白冠鸡算法4.实验参数设定5.算法结果6.参考文献7.…

dockerfile介绍与使用

文档:https://docs.docker.com/engine/reference/builder/ dockerfile介绍 dockerfile是什么 Dockerfile是一个创建镜像所有命令的文本文件, 包含了一条条指令和说明, 每条指令构建一层, 通过 docker build命令,根据Dockerfile的内容构建镜像,因此每一条指令的内…

【从0配置JAVA项目相关环境1】jdk + VSCode运行java + mysql + Navicat + 数据库本地化 + 启动java项目

从0配置JAVA项目相关环境 写在最前面一、安装Java的jdk环境1. 下载jdk2. 配置jdk3. 配置环境变量 二、在vscode中配置java运行环境1. 下载VSCode2. 下载并运行「Java Extension Pack」 三、安装mysql1.官网下载MySQL2.开始安装如果没有跳过安装成功 3.配置MySQL Server4.环境变…

史上最全,资深老鸟整理-性能测试面试题汇总

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、什么是负载测试…

git 分支的创建与删除

一 创建本地分支 git checkout -b codetwo //创建本地分支 codetwo git branch newcode //创建本地分支newcode创建的分支如下图: 用checkout的方式创建,只是创建的同时还切换到了这个本地分支 二 创建远程分支 git branch newcode //创…

【开源】基于JAVA语言的木马文件检测系统

项目编号: S 041 ,文末获取源码。 \color{red}{项目编号:S041,文末获取源码。} 项目编号:S041,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 木马分类模块2.3 木…

一次整活,暴涨1100万播放!B站内容风向吹到哪了?

高能整活,千万曝光 “我准备打造一个钢铁的地下安全屋。” B站UP主手工耿近期整了一个大活,脑洞大到让B站用户不停地惊掉下巴。 UP主手工耿在B站拥有776.7万粉丝,一直以来以制造一些“看起来没用”的电焊工艺产品为内容看点,灵…

IO多路复用(新)

1.前景回顾 无论是阻塞IO还是非阻塞IO,用户应用在一阶段都需要调用recvfrom来获取数据,差别在于无数据时的处理方案: 如果调用recvfrom时,恰好内核没有数据,那么阻塞IO会使用户进程阻塞,非阻塞IO使CPU进行空…

C语言面试之旅:掌握基础,探索深度(面试实战之单片机——IO)

梦想和自由一样,都有代价,但都值得。 ----小新 引言 单片机是一种微控制器,它包含一个处理器、存储器、定时器和I/O端口等。I/O端口是单片机与外部设备进行通信的接口。通过I/O端口,外部设备可以输入和输出数据到单片机中。 在单…

华为对优秀项目经理的三点要求

大家好,我是老原。 一位优秀的项目经理应该肩负什么样的职责和使命? 华为轮值董事长徐直军在《致研发全体PL的一封信》中表示:Project Leader(项目经理)要从一个独立贡献者转变成为团队贡献者,项目经理带…

【从零认识ECS云服务器 | 快速上线个人网站】二、使用ECS云服务器

第二章 使用ECS 2.1 获取ECS 方式一:通过试用中心免费领取ECS实例 满足以下全部条件的阿里云用户,可免费试用云服务器ECS: 阿里云注册会员用户并完成阿里云企业认证或个人认证用户。申请用户是云服务器ECS产品的新用户,可以申…

电源滤波器如何检测?ATECLOUD-POWER电源自动测试软件如何助力?

电源滤波器常用来对电源中的纹波和干扰信号进行滤波,从而确保元器件不受损坏,是保证系统稳定性的重要方法。因此电源滤波器测试是非常重要的,通过检测来评估其质量、性能和稳定性,从而使电源滤波器可以稳定工作,进行滤…

UniApp H5 跨域代理配置并使用(配置manifest.json、vue.config.js)

UniApp 运行到浏览器的时候,接口会跨域报错,这里通过两种方式解决,第一:修改Uniapp自带的manifest.json 源码视图并进行配置h5设置。第二:在项目根目录新建vue.config.js并配置代理。 二选一即可。 修改或调整配置文件…

[实践总结] Java中读取properties配置文件

读取此key.properties文件 代码实现 import java.io.IOException; import java.io.InputStream; import java.util.Properties;public class PropertyUtils {private static final Properties properties new Properties();static {try (InputStream resourceAsStream Prope…

React--引入第三方插件时,标签名是小写报错问题

报错信息 报错原因 1.组件名得大写 2.缺少 import 语句 解决方案 declare global{namespace JSX{interface IntrinsicElements {micro-app: any}} }

istio为什么能代替传统的SpringCloud 服务网格Istio概述

服务网格Istio概述 什么是服务网格(Service Mesh)?istio简介边车模式(Sidecar)为什么istio能代替传统SpringCloud?整体架构 首先奉上 istio官网 什么是服务网格(Service Mesh)? 服务网格详解 服务网格(Se…

SL4010升压恒压控制器芯片 2.5V启动 最大10A电流 支持300W大功率

SL4010是一款升压恒压控制器芯片,它具有2.5V启动、最大10A电流、支持300W大功率等特点。该芯片采用先进的控制技术,能够实现高效的电能转换,同时保持稳定的输出电压和电流。 SL4010芯片的主要功能是将输入的直流电压升高到所需的电压&#xf…

Http中post和get

get产生一个tcp数据包,服务器只响应一次,而post请求服务器会响应两次(第一次发送请求头响应100,再次响应返回200,成功

配置主机与外网时间服务器同步时间

目录 NTP服务简介 时间管理命令 第一步:更改当前主机所在地的时间 方法一:使用tzselect命令查询需要的时区 1、使用tzselect命令查询需要的时区 2、添加变量到 ~/.bash_profile 文件中,即追加类似的内容: 3、重新连接一个…

HashMap系列-放入元素的流程

1.put public class HashMap<K,V> extends AbstractMap<K,V>implements Map<K,V>, Cloneable, Serializable {//通过key生成hash后&#xff0c;调用putVal方法public V put(K key, V value) {return putVal(hash(key), key, value, false, true);} } 2.put…