【机器学习】——线性回归(自我监督学习)

文章目录

    • 1. 线性回归的定义
    • 2. 线性回归的模型
    • 3. 线性回归的核心思想
    • 4. 线性回归的求解
    • 5. 线性回归的假设
    • 6. 模型评估
    • 7. 线性回归的优缺点
    • 8. 线性回归的扩展
    • 9. 线性回归的实际应用
    • 10. 示例代码(Python实现)

线性回归详细介绍

1. 线性回归的定义

线性回归(Linear Regression)是一种用于建立自变量和因变量之间线性关系的统计方法。它假设两个变量之间具有线性关系,并通过拟合一条直线来预测因变量的值。

线性回归分为两种形式:

简单线性回归:只有一个自变量。
多元线性回归:包含多个自变量。

2. 线性回归的模型

线性回归模型用一个线性方程来表示数据中的关系。其基本形式为:
在这里插入图片描述

其中:
y 是目标变量或因变量(输出)。
x1,x2,…,xn 是输入特征或自变量。
w0是偏置项(截距)。
w1,w2,…,wn是对应自变量的权重(回归系数)。
ϵ 是误差项(通常假设其服从正态分布,且期望值为零)。

3. 线性回归的核心思想

线性回归的核心思想是找到回归系数 w 和截距 w0​,使得预测的输出值与实际的输出值之间的差异最小。为了度量预测值与实际值的差异,通常使用**均方误差(MSE)**作为损失函数:
在这里插入图片描述
其中:
m 是样本数量。
yi 是第 iii 个样本的实际值。
yi​ 是第 iii 个样本的预测值。
通过最小化均方误差,可以找到最佳的回归系数 w和偏置项 w0​,即通过最小二乘法(Ordinary Least Squares, OLS)来实现。

4. 线性回归的求解

线性回归的最优解可以通过解析方法或迭代方法求解。

解析法:通过直接计算公式求解回归系数。
对于简单线性回归,回归系数 𝑤1和截距 𝑤0可以使用以下公式计算:
在这里插入图片描述
其中,xˉ 和 yˉ​ 是自变量和因变量的均值。
对于多元线性回归,最佳参数可以通过矩阵求解:
在这里插入图片描述
X 是设计矩阵(每一行是一个数据样本的输入特征向量)。
𝑦是目标值向量。
迭代法:常用的是梯度下降法,通过逐步调整参数来逼近最优解。其更新规则为:
在这里插入图片描述
其中 𝛼 是学习率。

5. 线性回归的假设

线性回归在使用过程中有以下假设:

线性关系:自变量和因变量之间存在线性关系。
误差项的独立性:数据点之间的误差项相互独立。
同方差性:误差项的方差是常数。
正态性:误差项服从正态分布。
这些假设决定了线性回归适用的场景。违反这些假设可能导致模型效果不佳。

6. 模型评估

线性回归模型可以通过以下指标来评估其性能:R平方(R^2) 用于衡量模型对数据的拟合程度,取值范围为 0 到 1。 R^2 越接近 1,表示模型越好。公式如下:
在这里插入图片描述
其中 𝑦ˉ 是实际输出的平均值。

均方误差(MSE):用于评估模型预测值与实际值之间的平均平方误差。
均方根误差(RMSE):MSE 的平方根,度量误差的大小,单位与因变量一致。

7. 线性回归的优缺点

优点:

简单、易于理解和实现。
可解释性强,系数可以直接反映变量的影响。
计算成本低,适用于大多数小规模或中等规模的数据集。
缺点:

仅适用于线性关系,不能有效处理复杂的非线性问题。
对异常值敏感,容易被离群点干扰。
依赖于假设(如线性性、同方差性、正态性等),如果假设不成立,模型表现可能很差。

8. 线性回归的扩展

线性回归有几种常见的扩展形式,适用于不同场景:

岭回归(Ridge Regression):通过加入正则化项,防止过拟合,特别是在高维数据下有效。
Lasso回归:另一种正则化方法,可以自动进行特征选择,适用于高维稀疏数据。
弹性网络(Elastic Net):结合了岭回归和Lasso回归的优点,适用于更复杂的数据结构。

9. 线性回归的实际应用

线性回归被广泛应用于多个领域:

经济学:预测价格、需求等。
医疗:预测病人的疾病发展或治疗效果。
工程:预测系统中的性能变化或故障发生的可能性。
市场分析:根据历史数据预测未来销售额。

10. 示例代码(Python实现)

以下是一个使用 Python 和 scikit-learn 实现简单线性回归的示例:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split# 生成示例数据
X = np.array([[1], [2], [3], [4], [5]])
y = np.array([1.2, 1.9, 3.2, 3.9, 5.1])# 分割训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 创建线性回归模型
model = LinearRegression()# 训练模型
model.fit(X_train, y_train)# 预测
y_pred = model.predict(X_test)# 打印结果
print(f"预测值: {y_pred}")
print(f"模型系数: {model.coef_}")
print(f"截距: {model.intercept_}")# 可视化回归直线
plt.scatter(X, y, color='blue')
plt.plot(X, model.predict(X), color='red')
plt.xlabel('X')
plt.ylabel('y')
plt.title('线性回归示例')
plt.show()

总结
线性回归是监督学习中最基础的算法之一,适用于线性关系的回归任务。虽然简单易用,但在面对复杂非线性问题时,通常需要使用更加复杂的模型或对数据进行预处理。

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

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

相关文章

53 语言模型(和之后用来训练语言模型的数据集)_by《李沐:动手学深度学习v2》pytorch版

系列文章目录 文章目录 系列文章目录理论部分使用计数来建模N元语法总结 代码读取长序列数据随机采样顺序分区 小结练习 理论部分 在上一部分中,我们了解了如何将文本数据映射为词元,以及将这些词元可以视为一系列离散的观测,例如单词或字符…

.bixi勒索病毒数据恢复|金蝶、用友、管家婆、OA、速达、ERP等软件数据库恢复

导言 在当今数字化时代,勒索软件已成为企业和个人面临的重大安全威胁。.bixi勒索病毒作为其中一种新型恶意软件,以其快速加密文件的能力和高效传播机制引发了广泛关注。该病毒不仅能够迅速锁定用户的关键数据,还常常在感染后施加极大的心理压…

邀请功能的实现分析

邀请功能 功能分析 场景:项目中出现用户邀请其他用户加入群组的功能 需求:用户点击生成邀请链接可以生成一个url,将这个url分享给其他用户,其他用户点击后对用户登录状态进行校验,校验通过即可加入群组,未…

江协科技STM32学习- P16 实验-TIM输出比较(PWD驱动LED呼吸灯,舵机,直流电机)

🚀write in front🚀 🔎大家好,我是黄桃罐头,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流 🎁欢迎各位→点赞👍 收藏⭐️ 留言📝​…

如何访问字符串中某个字符

在Java中,你可以使用字符串的charAt(int index)方法来查看字符串中第index个位置的字符。index是从0开始的,也就是说,字符串的第一个字符的索引是0,第二个字符的索引是1,以此类推。如果索引超出了字符串的长度&#xf…

IO多路转接:select、poll、epoll

目录 非阻塞读取 fcntl函数 I/O多路转接之select select函数 fd_set结构 select的模拟实现 select的优缺点 I/O多路转接之poll poll函数 struct pollfd结构体 poll函数的使用示例 poll的模拟实现 poll的优缺点 I/O多路转接之epoll epoll的三个系统调用 epoll的…

当你在Linux系统中使用MySQL命令行工具查询数据库时,如果中文显示为问号(?)或其他乱码,简单解决办法。(2)

文章目录 1、问题出现2、解决办法 1、问题出现 2、解决办法 mysql -u [username] -p --default-character-setutf8 [database_name]rootab66508d9441:/# mysql -uroot -p123456 --default-character-setutf8 tingshu_album mysql: [Warning] Using a password on the command …

Redis 字符串类型的典型应用场景

目录 1. 缓存功能 2. 计数功能 3. 共享会话(Session) 4. 手机验证码 前言 这里将详细介绍 Redis 字符串类型在实际开发中的几个典型应用场景,并提供相应的伪代码示例。 1. 缓存功能 场景描述 在许多Web应用中,数据通常需要…

使用AVL树实现Map

一、数组在裂变扩容时可能会出现环、在数组元素转为链表之后选择尾插法插入节点、数组到链表到AVL到RBT的转换 1、数组在裂变扩容时链表中的节点计算出来的位置可能也会发生变化,在多线程情况下调整节点位置可能会出现环。 2、数组中的数组元素转为链表后插入新节点…

在大模型训练中,为什么GPU 通常比 CPU 更重要

在大模型训练中,GPU 通常比 CPU 更重要,原因主要有以下几点: 一、并行计算能力 GPU 拥有强大的并行计算能力。在大模型训练中,需要处理海量的数据和复杂的计算任务。例如,深度学习模型中的矩阵运算、卷积运算等&…

13. 了解人工智能可能存在的偏见

这篇文章没有太多技术和代码细节,更多的是作为一份有趣的报告。 这里没有任何模型会被训练。 这篇文章也为生成式人工智能导论课程中 HW8: Safety Issues of Generative AI 提供中文引导。 代码文件下载 文章目录 为什么人工智能存在偏见?动手试试加载模…

算法_BFS解决多源最短路问题---持续更新

文章目录 前言引入矩阵题目要求题目解析代码如下 飞地的数量题目要求题目解析代码如下 地图中的最高点题目要求题目解析代码如下 地图分析题目要求题目解析代码如下 前言 本文将会向你介绍有关宽度优先搜索(BFS)解决多源最短路问题的相关题型&#xff1…

故障诊断│GWO-DBN灰狼算法优化深度置信网络故障诊断

1.引言 随着人工智能技术的快速发展,深度学习已经成为解决复杂问题的热门方法之一。深度置信网络(DBN)作为深度学习中应用比较广泛的一种算法,被广泛应用于分类和回归预测等问题中。然而,DBN的训练过程通常需要大量的…

机器人速度雅可比矩阵(机器人动力学)

博途PLC矩阵求逆 矩阵求逆 博图SCL_博图矩阵运算-CSDN博客文章浏览阅读839次。本文介绍如何用C语言实现矩阵求逆的过程,详细解析了相关代码,适合线性代数和编程爱好者学习。https://rxxw-control.blog.csdn.net/article/details/122367883 1、二自由度平面关节机器人速度雅…

项目第十二弹:功能联调

项目第十二弹:功能联调 一、发布订阅功能测试1.生产者2.消费者3.演示4.持久化信息查看1.消息2.SQLite3数据库 二、持久化恢复测试1.代码2.gc3.演示 三、虚拟机和信道隔离测试1.责任划分2.如何测试3.生产者4.消费者5.演示 一、发布订阅功能测试 我们直接上TOPIC交换…

MySQL中的逻辑条件

逻辑条件组合两个比较条件的结果来产生一个基于这些条件的单个的结果,或者逆转一个单个条件的结果。当所有条件的结果为真时,返回行。 SQL的三个逻辑运算符是: AND、OR、NOT 可以在WHERE子句中用AND和OR运算符使用多个条件。 示例一&#…

惊爆!高通要收购英特尔,巨头也会被时代抛弃!

今天看到的外媒消息,高通要收购英特尔,看到消息的时候,其实,还是挺吃惊的。 高通是移动芯片的王者,英特尔是 PC 芯片的王者。当然了,英特尔这个可能需要再加上两个字:曾经的 PC 芯片王者。 其实…

植物大战僵尸【源代码分享+核心思路讲解】

植物大战僵尸已经正式完结,今天和大家分享一下,话不多说,直接上链接!!!(如果大家在运行这个游戏遇到了问题或者bug,那么请私我谢谢) 大家写的时候可以参考一下我的代码思…

在VMware16中安装Windows 10:完整教程

在VMware中安装Windows 10:完整教程 1.安装环境准备2.创建虚拟机 1.安装环境准备 1.虚拟机: VMware-workstation-full-16.2.2-19200509 2.系统镜像:win10 2.创建虚拟机 1.自定义 2.下一步 3.稍后安装系统 3.默认下一步 4.虚拟机取名和选择存放路径(按需更改…

利士策分享,江西新余悲剧背后的深思:安全与责任的重构

利士策分享,江西新余悲剧背后的深思:安全与责任的重构 在这个信息瞬息万变的时代,每一次突发事件都能迅速触动社会的神经, 而江西新余近期发生的悲剧,更是让我们在悲痛之余,不得不深刻反思安全管理与社会…