【机器学习】(基础篇三) —— 线性回归

news2025/4/4 21:43:58

线性回归

本文介绍最经典的监督学习问题——线性回归,包括单变量线性回归和多变量线性回归

线性回归是回归任务,输入是带有标签的数据,根据数据关系,拟合出一个线性函数,并利用该函数进行预测等操作。线性回归分为单变量(只有一个影响因素)和多变量(多个影响因素)

单变量线性回归

它探讨的是一个自变量(也称为解释变量或预测变量)与一个因变量(也称为响应变量或预测目标)之间的线性关系。一元线性回归的基本模型定义为:

y = β 0 + β 1 x + ε y=\beta_0+\beta_1x+\varepsilon y=β0+β1x+ε

误差项ε是随机变量反映了除 x 和 y 之间的线性关系之外的随机因素对 y 的影响,是不能由 x 和 y 之间的线性关系所解释的变异性。

假定误差项ε是一个期望值为0的随机变量,即E(ε)=0。对于一个给定的 x 值,y 的期望值为E (y ) =β0+ β1x

我们的目标是根据训练样本得到最合适的参数β0和β1,让所有训练样本点到拟合直线函数的距离最小,使用的方法是最小二乘法

最小二乘法(Ordinary Least Squares, OLS):让实际值和估计值(拟合函数)之间的距离总和最小为要求得到估计参数,为了方便及不让正负符号抵消,使用残差平方和表示距离,即

R S S ( β 0 , β 1 ) = ∑ i = 1 n ( y i − ( β 0 + β 1 x i ) ) 2 \mathrm{RSS}(\beta_0,\beta_1)=\sum_{i=1}^n(y_i-(\beta_0+\beta_1x_i))^2 RSS(β0,β1)=i=1n(yi(β0+β1xi))2

目标是让上述函数取到最小值,因为这个函数是在凸优化问题,任何局部最小值都是全局最小值,通过微分并令其等于零来找到极小值点就是全局最小值点。对于一元线性回归问题,可以直接推导出闭式解:

β 1 ^ = ∑ i = 1 n ( x i − x ˉ ) ( y i − y ˉ ) ∑ i = 1 n ( x i − x ˉ ) 2 \hat{\beta_1}=\frac{\sum_{i=1}^n(x_i-\bar{x})(y_i-\bar{y})}{\sum_{i=1}^n(x_i-\bar{x})^2} β1^=i=1n(xixˉ)2i=1n(xixˉ)(yiyˉ)

然后,利用估计出的β1计算出β0

β 0 ^ = y ˉ − β 1 ^ x ˉ \hat{\beta_0}=\bar{y}-\hat{\beta_1}\bar{x} β0^=yˉβ1^xˉ

sklearn是一个机器学习库,其中为我们封装好了很多机器法学系方法,可以让我们直接调用,非常方便,在开发中也是直接调用库而不需要手写算法,但是手写算法可以帮助我们理解算法的底层逻辑。

【示例】手动实现单变量的线性回归并且进行可视化展示

# 一元线性回归分析
import numpy as np
import matplotlib.pyplot as plt

# 准备训练样本数据
x = np.array([1, 2, 3, 4, 5])
y = np.array([1, 3, 2, 3, 5])
# 计算第一个参数,用a保存
d, m = 0, 0
for x_i, y_i in zip(x, y):
    d += (x_i - x.mean()) * (y_i - y.mean())
    m += (x_i - x.mean()) ** 2
a = d / m
# 计算第二个参数,用b保存
b = y.mean() - a * x.mean()
# y_hat作为使用计算出的a和b作为参数得到的拟合函数的估计值
y_hat = a * x + b 
# 可视化
plt.scatter(x, y)
plt.plot(x, y_hat, color='r')
plt.axis([0, 6, 0, 6])

plt.show()

运行结果:

在这里插入图片描述

【示例】使用sklearn中的方法实现线性回归

# 导入包含回归方法的类:
from sklearn.linear_model import LinearRegression

# 将上面的数据转换为列向量使用
x = x.reshape(-1,1)
y = y.reshape(-1,1)

# 创建该类的一个对象:
LR = LinearRegression()

# 训练模型拟合数据,并预测:
LR = LR.fit(x, y)
y_predict = LR.predict(x)

# 可视化
plt.scatter(x, y)
plt.plot(x, y_predict, color='r')
plt.axis([0, 6, 0, 6])

plt.show()

拟合优度与检验

在得到一个模型结果之后,我们需要一些方法或者指标来判断这个模型是否有效,即得到的模型是否能够有效的反映训练样本所表达的关系。

要检验样本和估计值之间的关系,我们经常会使用距离来进行衡量,如果所有的训练样本点到估计值的距离都很小,我们就可以说这个拟合的模型结果很好。

image-20240225102221404

在这里插入图片描述
在这里插入图片描述

回归平方和: S S R = ∑ ( y ^ i − y ˉ ) 2 SSR=\sum(\hat{y}_i-\bar{y})^2 SSR=(y^iyˉ)2

SSR反映了回归模型对数据的解释能力,SSR越大,说明模型能够解释更多的数据变异。当模型完美拟合数据时,SSR等于SST(总平方和),而SSE(残差平方和)则为0。

残差平方和: S S E = ∑ ( y i − y ^ i ) 2 SSE=\sum(y_i-\hat{y}_i)^2 SSE=(yiy^i)2

SSE越小,说明模型的预测值与实际观测值越接近,模型的拟合效果越好。在上一小节的最小二乘法中,目标就是找到使SSE最小化的模型参数。

总平方和: S S T = ∑ ( y i − y ˉ ) 2 = S S R + S S E SST=\sum(y_i-\bar{y})^2 = SSR + SSE SST=(yiyˉ)2=SSR+SSE

SST它衡量了观测值与其平均值之间的差异的平方和,提供了因变量总变异性的一个度量。残差平方和(SSE)代表了模型未能解释的变异部分,回归平方和(SSR)则表示了模型成功解释的变异部分。

判定系数R^2: R 2 = 1 − S S E S S T R^2=1-\frac{SSE}{SST} R2=1SSTSSE

是在回归分析中衡量模型拟合优度的一个统计量。它表示模型解释的变异占总变异的比例,取值范围从0到1。一个较高的 R^2 值表明模型对数据的解释能力较好,反之则较差。

判定系数等于相关系数的平方,即R2=(*r*)2

上述的很多参数中,常用的只有判定系数R2,其余的定义都是为了最终计算出这个值,只需要掌握这个的计算即可。使用sklear包中提供的工具即可实现计算R2,因为底层设计的数据计算比较多,手写容易出错,所以在这里我也直接调用相关方法。

【示例】使用sklearn计算上面例子中的R^2

# 计算R^2和F统计量
# 导入相关工具
from sklearn.metrics import r2_score
# 传入标签值和估计值进行计算
r2 = r2_score(y, y_predict)
print(f"R² Score: {r2}")

输出结果:

R² Score: 0.7272727272727273

多变量线性回归

多元线性回归(Multiple Linear Regression)用于研究一个因变量(dependent variable)与两个或更多个自变量(independent variables)之间的线性关系。相比于一元线性回归,多元线性回归模型允许考虑多个影响因素,这些因素共同作用于预测目标变量。多元线性回归可以写成如下形式:

y = β 0 + β 1 x 1 + β 2 x 2 + . . . + β p x p + ϵ y=\beta_0+\beta_1x_1+\beta_2x_2+...+\beta_px_p+\epsilon y=β0+β1x1+β2x2+...+βpxp+ϵ

利用最小二乘法的思想,对各个参数求偏导,令其等于0,得出估计参数值

使用skelearn实现多变量线性回归和上面单变量的用法相同,都是使用LinearRegression,不同的就是此时传入的x变成了多个维度的数组,以此来表示多个变量。

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

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

相关文章

AirPods Pro新功能前瞻:iOS 18的五大创新亮点

随着科技的不断进步,苹果公司一直在探索如何通过创新提升用户体验。iOS 18的推出,不仅仅是iPhone的一次系统更新,更是苹果生态链中重要一环——AirPods Pro的一次重大升级。 据悉,iOS 18将为AirPods Pro带来五项新功能&#xff0…

LLM 研究方向(一): LLM Prompts--p-tuning、LoRA

目录 1. prompt-tuning background 2. Prompt Tuning 模型介绍 2.1 2021 prefix-tuning 2.2 2021 P-tuning v1 2.3 2021 Parameter-efficient prompt tuning (PET) 2.4 2022 P-tuning v2 2.5 2019 Adapter ​2.6 2021 LoRA (Low-Rank Adaptation) 2.7 2024 DoRA (…

剖析自闭症孩子玩手的独特之处

自闭症孩子玩手的行为常常具有一些较为独特的特点。 重复性是一个显著的特征。他们可能会以一种几乎相同的方式、节奏和频率反复地摆弄自己的手,例如不停地握拳、张开,或者持续地旋转手腕。 动作的单调性也是常见的。玩手的方式可能较为单一,…

python怎么求因数

要想做到python语言求因数方法,首先要明白其中的原理: 1、对由123456789这九个数字组成的9位数进行分解质因数。 2、1234576982x3x3x7x13x23x29x113,所以他的值因数是113。 3、总共有362880种可能,从中找出值因数中最小的数字和…

如何将heic格式转换jpg?四种将heic转换成jpg的方法!

如何将heic格式转换jpg?在现今的数字图像处理领域,Heic格式作为一种被吹捧的创新型图像格式,以其先进的压缩技术,迅速减小了图片文件的大小,然而,尽管其有许多优点,实际使用中Heic格式却带来了一…

视频解码故障案例两则

案例1 绿边 故障分析: 这个能明显看到视频上方出现绿色半透明边带。这说明Y数据正常。UV数据不正常。 它显然与视频帧的垂直分辨率设置有关。 UV数据和Y数据是连续放置的,如果上方出现彩色数据失调,说明这部分数据实际仍然是Y数据。也就是…

用微信服务号支付门诊缴费

时间上午10刚过,医院里计价收费处排起了长龙,放眼望去,左边的窗口六条队。右边在原来发药的位置也开辟了收费窗口,数了一下有四条队。一共十条排队付费的长龙,每一条队伍的人数不下20人,也即超过200人在排队…

Jenkins 构建 Web 项目:构建服务器和部署服务器分离, 并且前后端在一起的项目

构建命令 #!/bin/bash cd ruoyi-ui node -v pnpm -v pnpm install pnpm build:prod # 将dist打包成dist.zip zip -r dist.zip dist cp dist.zip ../dist.zip

最新vue3实战开源项目-视频课程售卖系统(1)60+节

很长一段时间自己都没有时间或者时机做一些自己的东西或者和一些志同道合的朋友做属于自己的综合型系统,直到今天才有时间去整理和拿出来这个项目,当然后面还有😄Uniapp / React的项目,主要是小程序和手机端的,希望感兴…

7月10日学习打卡,环形链表+栈OJ

前言 大家好呀,本博客目的在于记录暑假学习打卡,后续会整理成一个专栏,主要打算在暑假学习完数据结构,因此会发一些相关的数据结构实现的博客和一些刷的题,个人学习使用,也希望大家多多支持,有…

实习记录3

1.Mybaits懒加载 MyBatis 延迟加载(懒加载)一篇入门-腾讯云开发者社区-腾讯云 (tencent.com) 2.高级映射 106-高级映射之多对一映射第一种方式_哔哩哔哩_bilibili 3.TableId(type IdType.INPUT) Mybatis-plus 主键生成策略_mybatis-plus 自增主键等于…

基于51单片机的五路抢答器Protues仿真设计

目录 一、设计背景 二、实现功能 三、仿真演示 四、源程序(部分) 一、设计背景 近年来随着科技的飞速发展,单片机的应用正在不断的走向深入。本文阐述了基于51单片机的五路抢答器设计。本设计中,51单片机充当了核心控制器的角…

怎么做好菲律宾TikTok直播带货?

TikTok目前是全球最受欢迎的APP之一,菲律宾TikTok直播已成为品牌出海的新趋势。作为一种新兴的引流渠道,出海电商卖家正通过直播带货模式实现流量变现。 在进行菲律宾TikTok直播时,关键在于能否吸引和留住消费者并促成购买。因此,…

Python基础语法:变量和数据类型详解(整数、浮点数、字符串、布尔值)①

文章目录 变量和数据类型详解(整数、浮点数、字符串、布尔值)一、变量二、数据类型1. 整数(int)2. 浮点数(float)3. 字符串(str)4. 布尔值(bool) 三、类型转换…

高考后暑假新选择:从AI聊天机器人开发入门IT领域

你好,我是三桥君 七月来临,各省高考分数已揭榜完成。而高考的完结并不意味着学习的结束,而是新旅程的开始。对于有志于踏入IT领域的高考少年们,这个假期是开启探索IT世界的绝佳时机。 不知道这些有志于踏入IT领域的高考少年们&…

车载聚合路由器应用场景分析

乾元通QYT-X1z车载式1U多卡聚合路由器,支持最多8路聚合,无论是应急救援,还是车载交通,任何宽带服务商无法覆盖的区域,聚合路由器可提供现场需要的稳定、流畅、安全的视频传输网络,聚合路由器可无缝接入应急…

二四、3d人脸构建

一、下载github项目3dmm_cnn-master https://github.com/anhttran/3dmm_cnn.git 一个使用深度神经网络从单个图像进行 3D 人脸建模的项目,端到端代码,可直接根据图像强度进行 3D 形状和纹理估计;使用回归的 3D 面部模型,从检测到的面部特征点估计头部姿势和表情。…

linux查看目录下的文件夹命令,find 查找某个目录,但是不包括这个目录本身?

linux查看目录下的文件夹命令,find 查找某个目录,但是不包括这个目录本身? Linux中查看目录下的文件夹的命令是使用ls命令。ls命令用于列出指定目录中的文件和文件夹。通过不同的选项可以实现显示详细信息、按照不同的排序方式以及使用不同的…

网络安全防御【防火墙安全策略用户认证综合实验】

目录 一、实验拓扑图 二、实验要求 三、实验思路 四、实验步骤 1、打开ensp防火墙的web服务(带内管理的工作模式) 2、在FW1的web网页中网络相关配置 3、交换机LSW6(总公司)的相关配置: 4、路由器相关接口配置&a…

Java中的锁都有什么

文章目录 锁公平锁与非公平锁可重入锁与不可重入锁共享锁与独占锁悲观锁与乐观锁自旋锁与适应性自旋锁偏向锁轻量级锁与重量级锁可中断锁互斥锁死锁使用资源有序分配法避免死锁使用银行家算法避免死锁使用tryLock进行超时锁定 锁 在Java中根据锁的特性来划分可以分为很多&…