Matlab|改进的粒子群算法优化支持向量机(回归拟合)

news2024/10/6 10:35:19

在这里插入图片描述

在这里插入图片描述
作者在前面的文章中介绍了粒子群算法的原理及其2种改进算法,本文将基于这三种优化方法,应用于支持向量机进行预测,并对比改进算法与标准粒子群算法的预测性能,结果显示改进后的方法能够得到更佳的预测效果。

00 文章目录

1 支持向量机
2 粒子群优化算法及其改进
3 支持向量机预测模型建立
4 代码目录
5 仿真
6 源码获取

01 支持向量机

支持向量机(Support Vector Machine, SVM)是由前苏联教授Vapnik最早提出的。支持向量机是一种新型机器学习算法,其基本思想把原有数据训练集映射到高维特征空间,借助损失函数和惩罚因子,从而达到精确度和计算复杂度相平衡,因此,可以将上述问题看作一个在高纬度的二次回归问题来进行求解,其函数表达式为:在这里插入图片描述

其中,ω 为超平面权重向量,b是SVM模型的参数,φ( x) 表示 x 的映射变换。根据文献得到回归支持向量机可以表示为:在这里插入图片描述

其中,ξ_i,ξ_i^*是松弛变量 C,是正实数松弛惩罚因子
非线性回归求解中,可以使用核函数 K(xi,xj)=φ(xi)·φ(xj)把所需要的训练集映射到高维空间,从而就可以将其 变化到线性问题的拟合,可得到一样的效果,非线性拟合函数为:在这里插入图片描述

则将问题转化为对偶求解:

其中,ni,ni*,ai,ai*为拉格朗日乘子,b为阈值。由于高斯径向基核函数拥有处理样本输入与输出之间复杂非线性关系的良好能力,而且参数选取少,计算效率高,因此采用效果更好的RBF为核函数。
惩罚系数 C 和RBF核系数 g 对SVM的性能有重要影响。其中,惩罚系数 C 是模型对误差的容忍度,数值越大,容忍度越差;数值越低,欠拟合越容易; 核系数g的选取对支持向量机的学习能力和预测精度有很大的影响。通常这些参数是通过人工设定,但常会导致拟合的数据出现较大偏差,因此用优化算法对参数进行寻优是必要的。
将SVM应用于拟合回归即为SVR(support vector regression)

02 粒子群优化算法及其改进

粒子群算法及其实现
自适应混沌粒子群算法及其实现
量子粒子群算法及其实现

03 支持向量机预测模型建立

本文使用作者提到的2种改进的粒子群算法来快速寻优到最佳惩罚参数和核函数参数,并与标准粒子群算法进行对比,以c和g的取值作为粒子群的位置参数,用上述的两种改进方法以及标准粒子群算法按照其流程进行迭代寻优。
预测完成后,为了验证所建模型的准确性和精度,分别采用均方根差(Root Mean Square Error,RMSE) 、平均绝对百分误差( Mean Absolute Percentage Error,MAPE) 和平均绝对值误差 ( Mean Absolute Error,MAE) 作为评价标准。在这里插入图片描述

式中 Yi 和Y ^ i分别为真实值和预测值; n 为样本数。

04 代码目录

三种算法文件如下:在这里插入图片描述

IPSO-SVR:
包含libsvm工具包,以及自适应混沌粒子群和标准粒子群算法。在这里插入图片描述

main_ipso.m部分源码如下:在这里插入图片描述

PSOSVR:
包含libsvm工具包,以及标准粒子群算法。在这里插入图片描述

main_pso.m部分源码如下:在这里插入图片描述

QPSO-SVR:
包含libsvm工具包,以及量子粒子群和标准粒子群算法。在这里插入图片描述

main_qpso.m部分源码如下:在这里插入图片描述

05 仿真

由于量子粒子群与自适应混沌粒子群的改进方向大相径庭,量子粒子群省去了粒子群大部分的控制参数,调参简单,而自适应混沌粒子群则将粒子群的控制参数进一步非线性化,因此对于不同的应用问题必然有其不同的优势,故不将这两个算法一起比较,而是分开比较。
这里展示量子粒子群

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

可以看出改进的算法应用于SVR进行预测是有一定提升的

在这里插入图片描述

06 源码获取

PSO-SVR:
在关注作者微信公众号: KAU的云实验台 
后台回复:             PSOSVR            即可(大写字母)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
IPSO-SVR:
https://mbd.pub/o/bread/ZJuTk5lp

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
QPSO-SVR:
https://mbd.pub/o/bread/mbd-ZJuTk5lq

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

如果这篇文章对你有帮助或启发,可以点击右下角的赞 (ง •̀_•́)ง(不点也行),若有定制需求,可私信作者。

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

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

相关文章

Jenkins持续集成,在Linux中安装最新版Jenkins(详细)

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

【计算机视觉 | 图像分割】arxiv 计算机视觉关于图像分割的学术速递(7 月 3 日论文合集)

文章目录 一、分割|语义相关(4篇)1.1 SPAE: Semantic Pyramid AutoEncoder for Multimodal Generation with Frozen LLMs1.2 Achieving RGB-D level Segmentation Performance from a Single ToF Camera1.3 Topological Data Analysis Guided Segment Anything Model Prompt Op…

C++笔记之各种sleep方法总结

C笔记之sleep总结 —— 2023年4月9日 小问 上海 code review 文章目录 C笔记之sleep总结1.std::this\_thread::sleep\_for()附:std::this\_thread::sleep\_for(std::chrono::duration) 2.std::this\_thread::sleep\_until()附:std::this\_thread::sleep\…

c# 与单片机之间 float与byte的相互转化

该章作为 串口调试助手及结构体的收发的补充,主要用于自定义协议中的负数,浮点数等的收发(我们以前用的浮点数等,是直接使用的字符串的收发,从字符串中进行解析的,这里主要使用十六进制,对其收发原理及使用操作进行剖析)。 虚拟串口调试助手 一般来说,电脑的外部设备…

杂记 | 使用keycloak实现SSO单点登录(新手向,概念、原理、逻辑、详细步骤、难点解释)

文章目录 01 单点登录的概念02 keycloak的中的相关概念2.1 概念之间的关系2.2 案例说明 03 如何使用keycloak实现单点登录3.1 步骤与效果说明3.2 环境说明 04 操作步骤4.1 在服务器上创建并启动keycloak服务4.2 创建一个领域4.3 创建一个客户端4.4 获取客户端适配器配置4.5 创建…

C. Logo Turtle (DP,思维)

传送门 题意: 给一个含有T、F的字符串,T表示转向,F表示前进1格。现在可以把其中的T改为F,或F改为T,改变n次(可重复改变某一位置的字母),问相对于起点最远能走多远。 思路&#xff…

quilt data 安装 数据包 框架

安装 Quilt 有两个用户可见的组件: 一个 Python 客户端一个 Web 目录 Python 客户端 需要 Python 3.7 或更高版本。 $ pip install quilt3[pyarrow]Mental Model Quilt 数据包的思维模型 Quilt 将数据集表示为数据包。一个数据包是一个不可变的相关文件集合&a…

Redis的主从复制、哨兵、cluster集群

Redis 主从复制 主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(Master),后者称为从节点(Slave);数据的复制是单向的,只能由主节点到从节点。 默认情况下,每台Redis服务…

JAVA关于多线程的学习

1.创建线程的方法(这里不考虑继承Thread类) 通过实现Runnable接口的方式实现 public class MyRunnable implements Runnable{Overridepublic void run() {for (int i 0; i < 5; i) {System.out.println(Thread.currentThread().getName()"执行了....");}} }pub…

基于.Net Core微服务-第1章:说明及技术栈

微服务是一种架构模式&#xff0c;提倡将单一应用程序划分为一组小的服务&#xff0c;服务相互协调、互相配合&#xff0c;为用户提供最终价值。

vulnhub-ripper(易)

打靶练习Ripper&#xff0c;这是一个中低的靶场 0x00 部署0x01 信息收集&#xff1a;端口扫描、服务发现0x02路径扫描0x03 总结 0x00 部署 靶机&#xff1a;下载地址 宿主机&#xff1a;kali2021版本 0x01 信息收集&#xff1a;端口扫描、服务发现 sudo arp-scan -l #探测存…

【每日随笔】摩托车驾驶 ④ ( 德州增驾摩托车 D 本记录 | 考场位置 “ 德州市公安局交警支队直属四大队车辆管理所 “ )

文章目录 一、进入考场二、科目一三、科目二1、推车 ( 找准车辆停放位置 )2、上车前检查 ( 开始考试前准备 )3、科目二考试开始4、科目二路线要求5、坡起6、绕桩7、单边桥 四、科目三教学1、推车 ( 找准车辆停放位置 )2、上车前检查 ( 开始考试前准备 )3、科目三考试开始4、科目…

NSS [SWPUCTF 2021 新生赛]Do_you_know_http

NSS [SWPUCTF 2021 新生赛]Do_you_know_http 先看题目&#xff0c;应该是伪造XFF&#xff0c;UA等东西。 postman一把梭。

Bootloader Design of PIC18 series MCU

注意&#xff1a;下列描述是在PIC单片机上启用Bootloader的一个相关知识的近似完备集。所有需要了解的&#xff0c;bootloader与用户态程序交互的理论知识都已给出。 1.概述 嵌入式产品化后&#xff0c;需要考虑现场升级&#xff0c;单片机如果需要添加现场升级功能&#xff…

linux+win——嵌套虚拟机性能测试

参考博文&#xff1a;CSDN-Violent-Ayang&#xff08;作者&#xff09;-UNIX BENCH详细安装及使用步骤 unix bench wget http://175.6.32.4:88/soft/test/unixbench/unixbench-5.1.2.tar.gz tar -xzvf unixbench-5.1.2.tar.gz cd unixbench-5.1.2 vim Makefile # 将 Makefile 中…

虹科方案 | Redis Enterprise:适用于任何企业的矢量数据库解决方案

用户希望他们遇到的每个应用程序和网站都具有搜索功能。然而&#xff0c;超过80%的业务数据是非结构化的&#xff0c;以文本、图像、音频、视频或其他格式存储。因此&#xff0c;我们需要一种跨非结构化数据的搜索方式。 什么是矢量数据库&#xff08;vector database&#xff…

【自动化测试教程】 —— pytest 框架详解 ~

pytest框架 特点: 容易上手, 入门简单, 文档丰富, 文档中有很多参考案例支持简单的单元测试和复杂的功能测试支持参数化执行测试用例过程中, 支持跳过操作支持重复失败的case支持运行Nose, unittest编写测试用例pytest支持很多第三方插件方便和持续集成工具集成 1. pytest断…

如何搭建独享的IP代理池?

随着互联网技术的日趋成熟&#xff0c;爬虫已经成为一种常见的数据获取方法。在采集业务中&#xff0c;建立本地IP代理池是非常重要的。今天将与您探讨IP代理池的选择以及如何搭建独享的IP代理池。 独享IP代理池是指由客户单独使用的IP池&#xff0c;优点是客户可以享受池中所…

关于opencv中cv2.imread函数读取的图像shape问题

图像坐标系是&#xff08;w,h&#xff09;,w为x轴&#xff0c;h为y轴,(x,y) 但opencv读出来的数组却正好相反&#xff0c;是&#xff08;h,w,3&#xff09;,(y,x,3) 所以这里会有一个转换 image cv2.imread(1.jpg) print(image.shape[0:2]) ##输出&#xff08;365,500&#x…

【操作系统】Linux编程 - 多线程的创建和使用 II (临界区 、互斥量、信号量的使用)

临界区的概念 之前的实例中我们只尝试创建了1个线程来处理任务&#xff0c;接下来让我们来尝试创建多个线程。 不过&#xff0c;还是得先拓展一个概念——“临界区” 临界区指的是一个访问共用资源&#xff08;例如&#xff1a;共用设备或是共用存储器&#xff09;的程序片段&…