Matlab|改进的粒子群算法优化支持向量机(多分类)

news2024/11/27 22:26:46

在这里插入图片描述

在这里插入图片描述

作者在前面的文章中介绍了粒子群算法的原理及其2种改进算法,本文将基于这三种优化方法,应用于支持向量机进行分类,并对比改进算法与标准粒子群算法的分类性能,结果显示改进后的方法能够得到更佳的分类效果。(在对PSO-SVR的代码分享里我少加了适应度函数,现已补上,在公众号后台回复PSO-SVR即可)

00 文章目录

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

01 支持向量机

支持向量机(SVM) 及其改进算法是一种典型的分类模 型机器学习算法。SVM以结构风险最小化为目标,在解决非线性、小样本及高维模式识别中具有泛化能力和全局寻优强的优点,在分类评价中具有较高的精度和计算效率。通常,多分类评价是一个典型的非线性分类问题。SVM 通过映射函数 φ( x) 、核函数 k( xi,xj) = φ( xi ) ·φ( xj) 将输入样本映射到高维特征空间,根据拉格朗日对偶性,将非线性支持向量机转为求解如下凸二次规划问题:在这里插入图片描述

其中: αi 为拉格朗日乘子。利用二次规划方法和 KKT 条件,得 到拉格朗日乘子的特解 α* ,即可得到分类决策函数为:在这里插入图片描述

若采用高斯径向基核函数, 则最终决策分类函数为:在这里插入图片描述

其中: g>0为高斯核的带宽,即核函数参数。

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

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

03 支持向量机分类模型建立

显然,多分类评价SVM的优劣主要由参数惩罚因子C与高斯核函数宽度g的取值决定。将元启发式算法用于SVM参数的选择,是标准的做法,因此本文采用PSO对 SVM 参数进行寻优,对惩罚因子 C 和核函数参数 g 进行寻优组合,构建 PSO-SVM 多分类模型。同时引入作者介绍过的两种改进粒子群算法以期提升其分类性能。

同时,为量化分类性能以比较算法优劣,本文从混淆矩阵、准确率、精确率、召回率、F1-score这些方面进行衡量。
1、混淆矩阵
混淆矩阵是一种可视化工具,混淆矩阵的每一列代表的是预测类别,其总数是分类器预测为该类别的数据总数,每一行代表了数据的真实类别,其总数是该类别下的数据实例总数。主对角线的元素即为各类别的分类准确的个数,通过混淆矩阵能够直观地看出多分类模型的分类准确率。

2、准确率
最为简单判断 SVM 多分类效果的方法就是用以下公式进行准确率r 的计算在这里插入图片描述

其中 ncorrect代表正确分类的样本个数, N代表测试集中的样本总数。

3、精确度
精度计算的是正类预测正确的样本数,占预测是正类的样本数的比例,公式如下在这里插入图片描述

其中,TP表示的是正样本被预测为正样本的个数,FP表示的是负样本被预测为 正样本的个数。

4、召回率
召回率计算的是预测正类预测正确的样本数,占实际是正类的样本数的比例,公式如下:在这里插入图片描述

其中, FN 表示的是正样本被判定为负样本的个数。

5、F1-score
F1 score是精度和召回率的调和平均值, F1 score越高说明模型越稳健,计算公式为在这里插入图片描述

6、宏平均(macro-averaging)
宏平均(macro-averaging)是指所有类别的每一个统计指标值的算数平均值, 也就是宏精确率(macro  precision),宏召回率( macro recall ),宏 F1 值 (macro F1 score),其计算公式如下:在这里插入图片描述

04 代码目录

IPSO-SVM:在这里插入图片描述

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

QPSO-SVM:在这里插入图片描述

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

PSO-SVM:在这里插入图片描述

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

05 仿真

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

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

在这里插入图片描述

在这里插入图片描述

可以看到改进后的粒子群能够对SVM进行更有效的优化,其各项指标均好于SVM和PSO-SVM,因此该改进能够在一定程度上提升其分类性能。

06 源码获取

PSO-SVM:
在关注作者微信公众号    KAU的云实验台  
 后台回复:             PSOSVM         即可(大写字母)
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
IPSO-SVM:
https://mbd.pub/o/bread/mbd-ZJuTmJZp 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

QPSO-SVM:
https://mbd.pub/o/bread/mbd-ZJuTmJZq
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

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

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

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

相关文章

小程序实现自定义分享微信好友

首先在全局page.json中添加"shareAppMessage": true {"path": "pages/brandCoupon/brandCoupon","style": {"navigationBarTitleText": "霸王餐","navigationStyle": "custom","enable…

3D建模软件、Creo 3D 、Creo8安装、下载教程

PTC Creo 8.0 是一款三维 CAD 软件,适用于多个行业和应用场景,包括机械设计、工业设计、电子设计等等。以下是 PTC Creo 8.0 的功能介绍和安装条件: 功能介绍: 三维建模:可以使用多种工具进行三维建模,包…

【python】生成时间戳+读取csv最后一列+生成一组随机数

1.按照间隔生成时间戳,并保存为csv文件 ##### 按照间隔生成时间戳,并保存为csv文件 import pandas as pd from datetime import datetime, time, timedelta times [] ts datetime(2023, 6, 17, 9, 10, 0) while ts < datetime(2023, 6, 17, 9, 26, 40):# times.append(t…

Leetcode 75算法题( 上)(使用C++实现)

目录 数组 / 字符串 1768.交替合并字符串 1071、字符串中的最大公因子 1431. 拥有最多糖果的孩子 605. 种花问题 345. 反转字符串中的元音字母 151. 反转字符串中的单词 238. 除自身以外数组的乘积 334. 递增的三元子序列 443. 压缩字符串 双指针 283. 移动零 392. 判断…

【狂神】MySQL - 连表查询 Join On 详解

1. 连表查询详解 市面上有 7 种连表查询, 总共归为三大类 : 左查询 LEFT JOIN -- 以左表为基准右查询 RIGHT JOIN -- 以右表为基准交叉查询 INNER JOIN -- 查询两表都有的数据 操作描述inner join如果表中至少有一个匹配, 就返回行left join会从左表中返回所有的值…

基于django的数据可视化展现

今天给大家简单分享一下一个基于python的django的框架写的一个数据可视化的项目。 主要涉及技术&#xff1a;django基础&#xff0c;python基础&#xff0c;前端&#xff08;html&#xff0c;echars&#xff09;基础。 这个项目自然而然是基于python逻辑语言处理的&#xff0…

好选客干货分享:化纤长丝找外贸客户

化纤长丝概述 化纤长丝是将聚合物材料&#xff08;如&#xff1a;聚酯、聚酰胺、聚酰胺酯等&#xff09;通过化学反应和纺丝工艺转化制成的连续的细长纤维&#xff0c;具有低成本、高强度、高弹性的优点&#xff0c;与天然纤维相比&#xff0c;其抗皱性和耐磨性也更胜一筹&…

隐秘的角落——proxychains代理工具

互联网只因你太美&#xff0c;自千禧年之后影响了数十年&#xff0c;无数的弄潮儿和狂热者为你痴迷&#xff0c;也有不尽的黑子们就安全问题而争议。直到现在&#xff0c;HTTPS、SSH、SOCKS、VPN、IPsec等技术逐渐为大众所接受&#xff0c;无法割舍。而这次&#xff0c;我将介绍…

防止网络断联,双机热备这么部署就对了

你们好&#xff0c;我的网工朋友。 防火墙的基本功能、配置案例、怎么提升网络的可靠性&#xff0c;给你说过不少。 但有小友留言说&#xff0c;双机热备的知识点&#xff0c;好像没有系统讲过&#xff0c;我去翻了翻&#xff0c;还真是。 为了保证网络的不间断传输&#xf…

浅谈有源电力滤波器及配电能效平台在污水处理厂中的应用

【摘要】为减少污水处理设备产生的各次谐波&#xff0c;通过确定主要谐波源&#xff0c;检测和计算谐波分量&#xff0c;采用有源电力滤波器进行谐波治理&#xff0c;大幅降低了电力系统中的三相电流畸变率&#xff0c;提高了电能质量&#xff1b;抑制了谐波分量&#xff0c;减…

顺序表与链表

思维导图&#xff1a; 顺序表与链表都是两种线性表&#xff0c;但是两者之间又有着许多的不同。顺序表是一种连续的空间&#xff0c;实际上就是数组。链表是不连续的空间&#xff0c;链表的空间是一块一块的开辟出来的。 两者的优点与缺点&#xff1a; 顺序表&#xff1a; 优点…

86、基于STM32的电动车 小车蓄电池锂电池充电桩系统设计(程序+原理图+PCB源文件+硬件资料+元器件清单等)

单片机主芯片选择方案 方案一&#xff1a;AT89C51是美国ATMEL公司生产的低电压&#xff0c;高性能CMOS型8位单片机&#xff0c;器件采用ATMEL公司的高密度、非易失性存储技术生产&#xff0c;兼容标准MCS-51指令系统&#xff0c;片内置通用8位中央处理器(CPU)和Flash存储单元&a…

云计算——虚拟化层架构

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​ 前言 本章将会讲解云计算的虚拟化层架构&#xff0c;了解云计算虚拟化层都有哪些架构模式…

23. 销售额完成任务指标的商品

文章目录 题目需求存在的疑问实现一题目来源 题目需求 商家要求每个商品每个月需要售卖出一定的销售总额 假设1号商品销售总额大于21000&#xff0c;2号商品销售总额大于10000&#xff0c;其余商品没有要求 请写出SQL从订单详情表中&#xff08;order_detail&#xff09;查询连…

多元分类预测 | Matlab基于深度置信网络DBN的分类预测,多特征输入模型,DBN分类预测

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述

MySQL的match函数在sp中使用的BUG解析

一、问题发现 在一次开发中在sp中使用MySQL PREPARE以后&#xff0c;使用match AGAINST语句作为prepare stmt的参数后&#xff0c;发现执行第二遍call会导致数据库crash&#xff0c;于是开始动手调查问题发生的原因。 注&#xff1a;本次使用的 MySQL 数据库版本为最新的debug…

文件改名神器!简体中文一键翻译为繁体中文并智能保存到指定文件夹!

在这个简繁转换教程中&#xff0c;您将学习如何使用简单的方法将简体中文文件快速翻译为繁体中文&#xff0c;并将其保存至指定的文件夹中。无需复杂的翻译软件或多步操作&#xff0c;只需跟随以下步骤&#xff0c;您就能实现简繁转换的便捷保存。 首先第一步&#xff0c;我们…

机器学习一:线性回归

1 知识预警 1.1 线性代数 ( A T ) T A (A^\mathrm{T})^\mathrm{T}A (AT)TA$ ( A B ) T A T B T (AB)^\mathrm{T}A^\mathrm{T}B^\mathrm{T} (AB)TATBT ( λ A ) T λ A T (\lambda A)^\mathrm{T}\lambda A^\mathrm{T} (λA)TλAT ( A B ) T B T A T (AB)^\mathrm{T}B^…

C#加载 ToolBlock简单示例

可以用visionpro的VPPVersion.exe 工具查看文件格式。 在安装路径最后一个 官方示例文件路径 简单实例 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; …

Spark学习(二)---Spark运行架构和核心概念

1.Spark运行架构 Spark框架的核心是一个计算引擎&#xff0c;它采用了master-slave的结构。 图形中的 Driver 表示 master&#xff0c; 负责管理整个集群中的作业任务调度。图形中的 Executor 则是 slave&#xff0c;负责实际执行任务。 1.1 核心组件 由此可以得出&#xf…