【漫话机器学习系列】126.多项式回归(Polynomial Regression)

多项式回归(Polynomial Regression)

1. 什么是多项式回归?

多项式回归(Polynomial Regression)是一种用于建模非线性关系的回归分析技术。它是线性回归的一种扩展形式,允许模型通过增加自变量的高次项来更好地拟合数据。多项式回归的数学公式如下:

y_i = \beta_0 + \beta_1 x_i + \beta_2 x_i^2 + \dots + \beta_d x_i^d + e_i

其中:

  • y_i 是因变量(响应变量)。
  • x_i​ 是自变量(解释变量)。
  • \beta_0, \beta_1, \dots, \beta_d 是回归系数。
  • d 是多项式的最高阶次。
  • e_i​ 是误差项。

2. 为什么使用多项式回归?

在实际数据分析中,许多现象并不是单纯的线性关系,而是呈现一定的非线性趋势。例如:

  • 经济数据中的增长趋势可能是指数增长,而非简单的线性增长。
  • 物理现象中的运动轨迹可能遵循二次或更高次的曲线,而不是直线。
  • 生物数据中的生长模式可能符合某种非线性曲线。

多项式回归的一个关键优势是它可以通过引入 x 的高次项来逼近复杂的非线性关系。

3. 线性回归 vs. 多项式回归

从图片中的图示可以看出:

  • 线性回归(左图):数据点之间的关系被一个直线拟合,这种方法适用于变量之间的关系大致呈线性分布的情况。但如果数据呈现弯曲趋势,线性回归的拟合效果可能较差。
  • 低阶多项式回归(中图):通过引入二次项(x^2),模型可以拟合简单的曲线,使其更加符合数据点的趋势。
  • 高阶多项式回归(右图):进一步增加多项式的阶次(如三次、四次),可以更灵活地拟合数据,但过高的阶数可能会导致过拟合(overfitting),即模型在训练数据上表现很好,但在新数据上的泛化能力较差。

4. 过拟合问题

多项式回归的一个潜在问题是过拟合(Overfitting)。当多项式的阶数过高时,模型可能会过于依赖训练数据,导致在新数据上的表现较差。例如:

  • 在训练数据上,模型可能会完全贴合数据点,甚至拟合掉噪声部分。
  • 在测试数据上,由于模型过于复杂,预测结果可能会偏离真实趋势,泛化能力降低。

解决过拟合的方法包括:

  • 选择合适的阶数:使用交叉验证(Cross-validation)选择最佳的多项式阶数。
  • 正则化(Regularization):使用 L1 或 L2 正则化(如 Ridge 或 Lasso 回归)来约束回归系数,防止模型过度复杂化。
  • 数据增强:增加数据量可以提高模型的泛化能力,减少过拟合的影响。

5. 多项式回归的应用

多项式回归在多个领域都有广泛应用,包括但不限于:

  • 经济学:预测市场趋势,例如股市价格的变化。
  • 工程学:模拟物理系统,如流体力学、机械运动轨迹等。
  • 医学:建模药物剂量与患者反应之间的关系。
  • 人工智能:在机器学习中用于数据拟合,如在 RBF(径向基函数)神经网络中使用高次多项式拟合非线性数据。

6. 代码示例(Python 实现多项式回归)

可以使用 sklearn.preprocessing.PolynomialFeatures 轻松实现多项式回归:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures# 生成模拟数据
np.random.seed(42)
x = np.linspace(-3, 3, 100).reshape(-1, 1)
y = 2 + 3 * x - 2 * x**2 + np.random.randn(100, 1) * 2  # 二次曲线 + 噪声# 线性回归拟合
lin_reg = LinearRegression()
lin_reg.fit(x, y)
y_pred_linear = lin_reg.predict(x)# 多项式回归拟合
poly_features = PolynomialFeatures(degree=2)  # 选择二次多项式
x_poly = poly_features.fit_transform(x)
poly_reg = LinearRegression()
poly_reg.fit(x_poly, y)
y_pred_poly = poly_reg.predict(x_poly)# 画图比较
plt.scatter(x, y, color='blue', label='Data')
plt.plot(x, y_pred_linear, color='red', label='Linear Regression')
plt.plot(x, y_pred_poly, color='green', linestyle='dashed', label='Polynomial Regression')
plt.legend()
plt.xlabel('x')
plt.ylabel('y')
plt.title('Linear vs Polynomial Regression')
plt.show()

 

解释:

  • 先生成一个二次曲线的数据集,并添加噪声。
  • 用普通的线性回归拟合数据,观察效果。
  • 使用 PolynomialFeatures(degree=2) 转换数据,使其包含二次项。
  • 再使用 LinearRegression 进行拟合。
  • 最终绘制结果,可以看到多项式回归曲线(绿色虚线)相比于线性回归(红色实线)更符合数据趋势。

7. 结论

  • 多项式回归可以用于非线性数据拟合,在许多现实问题中非常实用。
  • 选择合适的阶数至关重要,过低会导致欠拟合(underfitting),过高可能导致过拟合(overfitting)。
  • 可以结合正则化方法(如 Ridge 或 Lasso)来防止过拟合,提高模型的泛化能力。

8. 参考

  • Chris Albon 的机器学习笔记
  • scikit-learn 官方文档: Polynomial Regression

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

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

相关文章

python网络爬虫开发实战之基本库使用

目录 第二章 基本库的使用 2.1 urllib的使用 1 发送请求 2 处理异常 3 解析链接 4 分析Robots协议 2.2 requests的使用 1 准备工作 2 实例引入 3 GET请求 4 POST请求 5 响应 6 高级用法 2.3 正则表达式 1 实例引入 2 match 3 search 4 findall 5 sub 6 com…

npm : 无法加载文件 C:\Program Files\nodejs\npm.ps1,因为在此系统上禁止运行脚本。

1、在 vscode 终端执行 get-ExecutionPolicy 返回 Restricted 状态是禁止的 返回 RemoteSigned 状态是可正常执行npm命令 2、更改状态 set-ExecutionPolicy RemoteSigned 如果提示需要管理员权限,可加参数运行 Set-ExecutionPolicy -Scope CurrentUser RemoteSi…

数据结构基础之《(19)—矩阵处理》

一、zigzag打印矩阵 Z字形打印矩阵 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 打印顺序:1,2,7,13,8,3,4,9,14... 核心技巧:找到coding上的宏观调度 左上角有A、B两个点,A往右一步一步走,B往下一步一步走 写一个…

OpenCV计算摄影学(17)两个图像之间执行无缝克隆操作函数 seamlessClone()

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 图像编辑任务涉及全局更改(如颜色/强度校正、滤镜应用、变形)或针对选定区域的局部更改。在这里,我们关注的是…

基于Asp.net的零食购物商城网站

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…

MuBlE:为机器人操作任务规划提供了逼真的视觉观察和精确的物理建模

2025-03-05,由华为诺亚方舟实验室、捷克技术大学和帝国理工学院联合开发的MuBlE(MuJoCo and Blender simulation Environment)模拟环境和基准测试。通过结合MuJoCo物理引擎和Blender高质量渲染,为机器人操作任务规划提供了逼真的视…

文件上传漏洞(upload靶场)

目录 Pass-01:前端绕过 方法一:浏览器禁用js 方法二:直接修改或删除js脚本 方法三:修改后缀绕过 Pass-02:服务器检测 Pess-03:黑名单绕过 Pass-04:.htaccess文件 Pass-05:windows特性和user.ini 方法一:php.自动解析为ph…

blender学习25.3.8

【04-进阶篇】Blender材质及灯光Cycle渲染&后期_哔哩哔哩_bilibili 注意的问题 这一节有一个大重点就是你得打开显卡的渲染,否则cpu直接跑满然后渲染的还十分慢 在这里你要打开GPU计算,但是这还不够 左上角编辑,偏好设置,系…

什么是美颜SDK?从几何变换到深度学习驱动的美颜算法详解

美颜SDK是一种用于处理图像与视频的开发工具,能够提供磨皮、美白、瘦脸、五官优化、动态贴纸等美颜特效。它广泛应用于直播、短视频、社交、在线会议、电商等行业,帮助用户在视频或图片中实现更好的视觉呈现。 一、从几何变换到深度学习:美颜…

【江协科技STM32】ADC数模转换器-学习笔记

ADC简介 ADC(Analog-Digital Converter)模拟-数字转换器ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量,建立模拟电路到数字电路的桥梁,ADC是一种将连续的模拟信号转换为离散的数字信号的设备或模块12位逐次逼近型…

Docker 安装 Nacos 2.1.1(单机版)

一、拉取镜像 docker pull nacos/nacos-server:v2.1.1 二、新建数据库 官网上下载 对应版本的 nacos zip 包,在 nacos\conf 目录下有 mysql脚本: 新建一个数据库 nacos_config,在数据库中依次执行 nacos-mysql.sql、1.4.0-ipv6_support-up…

【计算机网络入门】初学计算机网络(九)

目录 1.令牌传递协议 2. 局域网&IEEE802 2.1 局域网基本概念和体系结构 3. 以太网&IEEE802.3 3.1 MAC层标准 3.1.1 以太网V2标准 ​编辑 3.2 单播广播 3.3 冲突域广播域 4. 虚拟局域网VLAN 1.令牌传递协议 先回顾一下令牌环网技术,多个主机形成…

国产化替换案例:CACTER邮件网关为Groupwise系统加固邮件安全防线

电子邮件作为企业信息流转的命脉,承载着商业机密与客户数据。然而,网络攻击手段日益复杂,钓鱼邮件等威胁正快速侵蚀企业安全防线。据《2024年第四季度企业邮箱安全性研究报告》显示,2024年Q4企业邮箱用户遭遇的钓鱼邮件数量激增至…

在Linux中开发OpenGL——检查开发环境对OpenGL ES的支持

由于移动端GPU规模有限,厂商并没有实现完整的OpenGL特性,而是实现了它的子集——OpenGL ES。因此如果需要开发的程序要支持移动端平台,最好使用OpenGL ES开发。 1、 下载支持库、OpenGL ES Demo 1.1、下载PowerVRSDK支持库作为准备&#xff…

【GoTeams】-5:引入Docker

本文目录 1. Dokcer-compose回顾下Docker知识编写docker-compose.yaml运行docker 2. 部署go服务编写dockerfile 1. Dokcer-compose 这里简单先用一下win版本的Docker,后期开发好了部署的时候再移植到服务器下进行docker部署。 输入命令docker-compose version 就可…

YOLOv8改进SPFF-LSKA大核可分离核注意力机制

YOLOv8改进------------SPFF-LSKA 1、LSAK.py代码2、添加YAML文件yolov8_SPPF_LSKA.yaml3、添加SPPF_LSKA代码4、ultralytics/nn/modules/__init__.py注册模块5、ultralytics/nn/tasks.py注册模块6、导入yaml文件训练 1、LSAK.py代码 论文 代码 LSKA.py添加到ultralytics/nn/…

10.RabbitMQ集群

十、集群与高可用 RabbitMQ 的集群分两种模式,一种是默认集群模式,一种是镜像集群模式; 在RabbitMQ集群中所有的节点(一个节点就是一个RabbitMQ的broker服务器) 被归为两类:一类是磁盘节点,一类是内存节点; 磁盘节点会把集群的所有信息(比如交换机、绑…

DeepSeek-R1:使用KTransformers实现高效部署指南

KTransformers作为一个开源框架,专门为优化大规模语言模型的推理过程而设计。它支持GPU/CPU异构计算,并针对MoE架构的稀疏性进行了特别优化,可以有效降低硬件要求,允许用户在有限的资源下运行像DeepSeek-R1这样庞大的模型。 硬件…

回归预测 | Matlab实现GWO-BP-Adaboost基于灰狼算法优化BP神经网络结合Adaboost思想的回归预测

回归预测 | Matlab实现GWO-BP-Adaboost基于灰狼算法优化BP神经网络结合Adaboost思想的回归预测 目录 回归预测 | Matlab实现GWO-BP-Adaboost基于灰狼算法优化BP神经网络结合Adaboost思想的回归预测回归效果基本介绍GWO-BP-Adaboost:基于灰狼算法优化BP神经网络结合Adaboost思想…

基于websocket的多用户网页五子棋 --- 测试报告

目录 功能测试自动化测试性能测试 功能测试 1.登录注册页面 2.游戏大厅页面 3.游戏房间页面 自动化测试 1.使用脑图编写web自动化测试用例 2.创建自动化项目,根据用例通过selenium来实现脚本 根据脑图进行测试用例的编写: 每个页面一个测试类&am…