深度学习常见回归分支算法逐步分析,各种回归之间的优缺点,适用场景,举例演示

文章目录

  • 1、线性回归(Linear Regression)
    • 1.1 优点
    • 1.2 缺点
    • 1.3 适用场景
    • 1.4 图例说明
  • 2、多项式回归(Polynomial Regression)
    • 2.1 优点
    • 2.2 缺点
    • 2.3 适用场景
    • 2.4 图例说明
  • 3、决策树回归(Decision Tree Regression)
    • 3.1 优点
    • 3.2 缺点
    • 3.3 适用场景
  • 4、随机森林回归(Random Forest Regression)
    • 4.1 优点
    • 4.2 缺点
    • 4.3 适用场景
  • 5、逻辑斯蒂回归(Logistic Regression)
    • 5.1 优点
    • 5.2 缺点
    • 5.3 适用场景
  • 6、弹性网络回归(Elastic Net Regression)
    • 6.1 优点
    • 6.2 缺点
    • 6.3 适用场景
  • 7、岭回归(Ridge Regression)
    • 7.1 优点
    • 7.2 缺点
    • 7.3 适用场景
  • 8、Lasso回归(Lasso Regression)
    • 8.1 优点
    • 8.2 缺点
    • 8.3 适用场景

 回归的概念:回归算法是一种用于预测连续数值输出的监督学习算法,可以根据输入特征预测一个或多个目标变量。它有多个分支,每个分支都有其独特的优缺点。下面是深度学习中几类回归变种:

1、线性回归(Linear Regression)

线性回归算法可以说是回归算法里面最简单的一种。

1.1 优点

  • 简单且易于解释。
  • 计算效率高,适用于大规模数据集。
  • 在特征与目标之间存在线性关系时效果良好。

1.2 缺点

  • 无法处理非线性关系。对于一些异常值,无法做到拟合曲线。
  • 对异常值敏感。
  • 需要满足线性回归假设(如线性关系、残差正态分布等)。

1.3 适用场景

适用场景:预测数值型目标,建立输入特征和输出之间的线性关系。
案例:预测房价。根据房屋特征(面积、卧室数量等),建立线性关系来估计房价。

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

1.4 图例说明

代码:

import matplotlib.pyplot as plt
import numpy as np# 设置中文显示
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False# 数据
area = np.array([50, 75, 100, 120, 150])
price = np.array([120, 180, 220, 250, 300])# 执行线性回归
coefficients = np.polyfit(area, price, 1)
m, b = coefficients# 创建预测模型
predict_model = np.poly1d(coefficients)# 生成预测值
predicted_price = predict_model(area)# 绘制原始数据点
plt.scatter(area, price, label='实际数据点')# 绘制线性回归线
plt.plot(area, predicted_price, label=f'线性回归: y = {m:.2f}x + {b:.2f}', color='red')# 添加标签和图例
plt.xlabel('房屋面积(平方米)')
plt.ylabel('价格(万元)')
plt.title('线性回归')
plt.legend()
# 显示图形
plt.show()

生成对应图像:
在这里插入图片描述
深度学习中的线性回归
代码:

import torch
import torch.nn as nn
import torch.optim as optim
import numpy as np
import matplotlib.pyplot as plt# 设置中文显示
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False# 生成模拟数据
np.random.seed(42)
X = 2 * np.random.rand(100, 1)
y = 4 + 3 * X + np.random.randn(100, 1)# 转换为PyTorch的Tensor
X_tensor = torch.from_numpy(X).float()
y_tensor = torch.from_numpy(y).float()# 定义线性回归模型
class LinearRegressionModel(nn.Module):def __init__(self, input_size, output_size):super(LinearRegressionModel, self).__init__()self.linear = nn.Linear(input_size, output_size)def forward(self, x):return self.linear(x)# 实例化模型
input_size = 1
output_size = 1
model = LinearRegressionModel(input_size, output_size)# 定义损失函数和优化器
criterion = nn.MSELoss()
optimizer = optim.SGD(model.parameters(), lr=0.01)# 训练模型
num_epochs = 100
for epoch in range(num_epochs):# Forward passoutputs = model(X_tensor)loss = criterion(outputs, y_tensor)# Backward pass and optimizationoptimizer.zero_grad()loss.backward()optimizer.step()# 打印训练过程中的损失if (epoch+1) % 10 == 0:print(f'Epoch [{epoch+1}/{num_epochs}], Loss: {loss.item():.4f}')# 绘制模型预测结果和真实数据
predicted = model(X_tensor).detach().numpy()
plt.scatter(X, y, label='实际数据点')
plt.plot(X, predicted, label='模型预测', color='red')
plt.xlabel('房屋面积(平方米)')
plt.ylabel('价格(万元)')
plt.title('线性回归')
plt.legend()
plt.show()

生成对应的图像:
在这里插入图片描述
是不是看着比简单的回归复杂很多,深度模型解决的回归问题还要比这复杂得多。

2、多项式回归(Polynomial Regression)

2.1 优点

  • 可以捕捉特征和目标之间的非线性关系。
  • 相对简单实现。

2.2 缺点

  • 可能会过度拟合数据,特别是高阶多项式。
  • 需要选择适当的多项式阶数。

2.3 适用场景

适用场景:处理非线性关系,通过添加多项式特征来拟合曲线。
案例:预测股票价格。使用多项式回归来拟合价格与时间之间的非线性关系。

2.4 图例说明

代码:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
from sklearn.metrics import mean_squared_error# 设置中文显示
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False# 生成模拟数据
np.random.seed(42)
X = 2 * np.random.rand(100, 1)
y = 4 + 3 * X + np.random.randn(100, 1)# 选择多项式次数
degree = 2# 构建设计矩阵
poly_features = PolynomialFeatures(degree=degree, include_bias=False)
X_poly = poly_features.fit_transform(X)# 使用线性回归拟合多项式特征
lin_reg = LinearRegression()
lin_reg.fit(X_poly, y)# 预测
X_new = np.linspace(0, 2, 100).reshape(-1, 1)
X_new_poly = poly_features.transform(X_new)
y_new = lin_reg.predict(X_new_poly)# 绘制结果
plt.scatter(X, y, label='True data')
plt.plot(X_new, y_new, 'r-', label='Predictions', linewidth=2)
plt.xlabel('X')
plt.ylabel('y')
plt.title('多项式线性回归')
plt.legend()
plt.show()# 评估模型
y_pred = lin_reg.predict(X_poly)
mse = mean_squared_error(y, y_pred)
print(f'Mean Squared Error: {mse:.4f}')

生成对应图像:
在这里插入图片描述

3、决策树回归(Decision Tree Regression)

3.1 优点

  • 能够处理非线性关系。
  • 不需要对数据进行特征缩放。
  • 结果易于可视化和解释。

3.2 缺点

  • 容易过拟合。树越深,越可能发生过拟合现象。
  • 对数据中的噪声敏感。
  • 不稳定,小的数据变化可能导致不同的树结构。

3.3 适用场景

适用场景:适用于非线性数据,创建树状结构进行回归预测。
案例:天气预测。基于多个天气因素,预测温度。

4、随机森林回归(Random Forest Regression)

4.1 优点

  • 降低了决策树回归的过拟合风险。
  • 能够处理高维数据。

4.2 缺点

  • 失去了部分可解释性。
  • 难以调整模型参数。

4.3 适用场景

适用场景:用于回归任务,具有高度的鲁棒性。
案例:股票价格预测。使用多个随机森林树来预测未来的股票价格。

5、逻辑斯蒂回归(Logistic Regression)

5.1 优点

  • 用于二分类问题,广泛应用于分类任务。
  • 输出结果可以解释为概率。

5.2 缺点

  • 仅适用于二分类问题。这是它的优点,也是它的缺点。
  • 对于复杂的非线性问题效果可能不佳。对线性问题解答较好。

5.3 适用场景

适用场景:用于二分类或多分类任务,预测概率分布。
案例:垃圾邮件分类。根据邮件内容来判断是否是垃圾邮件。

6、弹性网络回归(Elastic Net Regression)

6.1 优点

  • 综合了岭回归和Lasso回归的优点。
  • 可以应对多重共线性和特征选择。

6.2 缺点

  • 需要调整两个正则化参数。

6.3 适用场景

适用场景:结合了 Ridge 和 Lasso 的优点,适用于高维数据和特征选择。
案例:医学诊断。处理具有大量特征的患者数据,选择最相关的特征。

7、岭回归(Ridge Regression)

7.1 优点

  • 可以解决多重共线性问题。
  • 对异常值不敏感。

7.2 缺点

  • 不适用于特征选择,所有特征都会被考虑。
  • 参数需要调整。

7.3 适用场景

适用场景:处理多重共线性问题,添加L2正则化以防止过拟合。
案例:预测学生成绩。处理多个高度相关的特征,如学习时间、家庭支持等。

8、Lasso回归(Lasso Regression)

8.1 优点

  • 可以用于特征选择,趋向于将不重要的特征的系数推到零。
  • 可以解决多重共线性问题。

8.2 缺点

  • 对于高维数据,可能会选择较少的特征。
  • 需要调整正则化参数。

8.3 适用场景

适用场景:用于特征选择和稀疏性,通过L1正则化将一些特征的权重设为零。
案例:预测产品销量。确定哪些产品特征对销售额的影响最大。

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

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

相关文章

【哈希】49.字母异位词分组

力扣 class Solution {public List<List<String>> groupAnagrams(String[] strs) {Map<String, List<String>> map new HashMap<>();for (String str : strs) {String hash getHash(str);map.computeIfAbsent(hash, k -> new ArrayList<…

2312skia,15vulkan及技巧

ANGLE介绍 ANGLE,把OpenGLES2或3调用转换为DirectX9,11或OpenGL调用.这些说明记录了如何在Windows或Linux上使用ANGLE而不是本地OpenGL后端. 细节 gclient sync下载ANGLE的源码及Skia的其他仅测试依赖项. 要针对ANGLE构建Skia测试工具,请添加skia_use_angletrue到args.gn文件…

Beta冲刺随笔-DAY6-橘色肥猫

这个作业属于哪个课程软件工程A这个作业要求在哪里团队作业–站立式会议Beta冲刺作业目标记录Beta冲刺Day6团队名称橘色肥猫团队置顶集合随笔链接Beta冲刺笔记-置顶-橘色肥猫-CSDN博客 文章目录 SCRUM部分站立式会议照片成员描述 PM报告项目程序&#xff0f;模块的最新运行图片…

boost-filesystem-删除复制文件-设置文件权限-递归创建删除复制文件夹-解析文件名-C++

文章目录 1.简介2.路径合法性3.路径处理及迭代器4.设置权限5.文件操作6.迭代目录6.1. directory_iterator6.1.1.类摘要6.1.2.单层目录迭代6.1.3.directory_iterator深度遍历目录(递归) 6.2.recursive_directory_iterator6.2.1. 类摘要6.2.2 示例代码 7.查找文件、模糊查找文件、…

制作一个RISC-V的操作系统二-RISC-V ISA介绍

文章目录 ISA的基本介绍啥是ISA为什么要设计ISACISCvsRISCISA的宽度知名ISA介绍 RISC-V历史和特点RISC-V发展RISC-V ISA 命名规范模块化的ISA通用寄存器Hart特权级别Control and Status Register&#xff08;CSR&#xff09;内存管理与保护异常和中断 ISA的基本介绍 啥是ISA …

<DB2>《AIX环境下DB2冷备机恢复方案(生产实践)》

《AIX环境下DB2冷备机恢复方案&#xff08;生产实践&#xff09;》 1 DB2数据库常见备份方式简要说明2 方案说明3 实际方案&#xff08;信息已脱敏&#xff09;3.1 基本信息3.2 创建互信3.3 部署scp脚本3.4 在冷备机192.168.16.165上部署恢复脚本3.5 在冷备机192.168.16.165上部…

【UE】UEC++获取屏幕颜色GetPixelFromCursorPosition()

目录 【UE】UE C 获取屏幕颜色GetPixelFromCursorPosition() 一、函数声明与定义 二、函数的调用 三、运行结果 【UE】UE C 获取屏幕颜色GetPixelFromCursorPosition() 一、函数声明与定义 创建一个蓝图方法库方法 GetPixelFromCursorPosition()&#xff0c;并给他指定UF…

【MATLAB】RLMD分解+FFT+HHT组合算法

有意向获取代码&#xff0c;请转文末观看代码获取方式~也可转原文链接获取~ 1 基本定义 RLMD分解FFTHHT组合算法是一种强大的分析方法&#xff0c;结合了局部均值分解&#xff08;LMD&#xff09;、快速傅里叶变换&#xff08;FFT&#xff09;和希尔伯特-黄变换&#xff08;H…

WIN10 WIN11 关闭更新的绝佳办法(极简单无副作用)

WIN10 WIN11 关闭更新的绝佳办法&#xff08;极简单无副作用&#xff09; 极其简单用实用可以关闭更新20年 winr&#xff0c;输入regedit 打开注册表打开注册表的这个路径&#xff1a; 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings 右键空白的地方…

图文深入理解TCP三次握手

前言 TCP三次握手和四次挥手是面试题的热门考点&#xff0c;它们分别对应TCP的连接和释放过程&#xff0c;今天我们先来认识一下TCP三次握手过程&#xff0c;以及是否可以使用“两报文握手”建立连接&#xff1f;。 1、TCP是什么&#xff1f; TCP是面向连接的协议&#xff0c;…

QT 中使用 QTableView 和 QStandardItemModel 实现将数据导出到Excel 和 从Excel导入到 QTableView 的功能

简介 在Qt中&#xff0c;使用QTableView和QStandardItemModel来实现将数据导出到Excel和从Excel导入到QTableView的功能&#xff0c;而不使用第三方库&#xff08;如QXlsx&#xff09;。 效果 将 QTableView 中的数据导出到Excel //从tableview 导出到 EXcle void MainInterfa…

编程中常见的技术难题和解决策略

编程中常见的技术难题有哪些&#xff1f; 编程中常见的技术难题 在编程过程中&#xff0c;我遇到了一些常见的技术难题&#xff0c;这些难题不仅仅是挑战&#xff0c;也是学习和成长的机会。以下是其中的一些例子&#xff1a; 复杂的并发和多线程问题 在一个多用户的系统中&a…

【PTA题目】7-2 完美的素数 分数 20

7-2 完美的素数 分数 20 全屏浏览题目 切换布局 作者 伍建全 单位 重庆科技学院 一个十进制数&#xff0c;如果是素数&#xff0c;而且它的各位数字和也是素数&#xff0c;则称之为“美素数”&#xff0c;如29&#xff0c;本身是素数&#xff0c;而且29 11也是素数&#x…

MQTT协议理解并实践

MQTT是一个轻量的发布订阅模式消息传输协议&#xff0c;专门针对低带宽和不稳定网络环境的物联网应用设计 MQTT协议根据主题来分发消息进行通信&#xff0c;支持通配符匹配&#xff0c;可以低开销的使用数百万Topic进行一对一&#xff0c;一对多双向通信。 协议特点 1. 开放…

Vulhub-信息泄露

1.Jetty WEB-INF 敏感信息泄露漏洞&#xff08;CVE-2021-28164&#xff09; docker-compose up -d 启动环境&#xff0c;显示8080端口被占用 修改 docker-compose.yml 中的映射端口 curl 访问 http://192.168.48.129:8090/WEB-INF/web.xml 显示404&#xff1a; 通过 %2e 绕过…

STlink下载程序不能复位的说明

STLINK在MDK5.28或其他版本中下载程序后不能复位&#xff0c;需要手动按复位键&#xff0c;MCU 才正常运行。 首先判断是不是该MDK版本的问题&#xff0c;按照以下进行 点击魔法棒 点击Debug&#xff0c;Settings 勾选Reset and Run 如果还是不行&#xff0c;取消Enable…

1423. 可获得的最大点数 --力扣 --JAVA

题目 几张卡牌 排成一行&#xff0c;每张卡牌都有一个对应的点数。点数由整数数组 cardPoints 给出。 每次行动&#xff0c;你可以从行的开头或者末尾拿一张卡牌&#xff0c;最终你必须正好拿 k 张卡牌。 你的点数就是你拿到手中的所有卡牌的点数之和。 给你一个整数数组 cardP…

九章量子计算机:引领量子计算的新篇章

九章量子计算机:引领量子计算的新篇章 一、引言 随着科技的飞速发展,量子计算已成为全球科研领域的前沿议题。九章量子计算机作为中国自主研发的量子计算机,具有划时代的意义。本文将深入探讨九章量子计算机的原理、技术特点、应用前景等方面,带领读者领略量子计算的魅力…

初识主力投资者

在股票市场中&#xff0c;真正赚钱的散户并不多。“七亏二平一赚”似乎已经成为了大家公认的一个股市定律。 为什么散户炒股赚的人少呢&#xff1f;原因很简单&#xff0c;就是因为市场上除了散户之外&#xff0c;还存在着一个重要的投资主体——主力。股市交易的过程&#xff…

树_对称二叉树

//给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 // // // // 示例 1&#xff1a; // // //输入&#xff1a;root [1,2,2,3,4,4,3] //输出&#xff1a;true // // // 示例 2&#xff1a; // // //输入&#xff1a;root [1,2,2,null,3,null,3] //输出…