基于WOA优化的svm最优参数计算仿真

news2025/1/12 17:23:09

目录

1.算法描述

2.仿真效果预览

3.MATLAB核心程序

4.完整MATLAB


1.算法描述

       WOA算法设计的既精妙又富有特色,它源于对自然界中座头鲸群体狩猎行为的模拟, 通过鲸鱼群体搜索、包围、追捕和攻击猎物等过程实现优时化搜索的目的。在原始的WOA中,提供了包围猎物,螺旋气泡、寻找猎物的数学模型。在初始每个鲸鱼的位置

 

     代表了一个可行解,通过后期探索和开发两个阶段,逐步找到最佳位置,即最优解。

      首先,座头鲸可以识别猎物的位置并将其包围,但由于最佳位置在搜索空间中不是已的,因此WOA算法假定当前最佳候选解决方案是目标猎物或接近最佳猎物。 确定最佳搜索代理后,其他搜索代理将因此尝试更新其对最佳搜索代理的位置。 此行为由以下方程式表示:

         支持向量机(support vector machines, SVM)是二分类算法,所谓二分类即把具有多个特性(属性)的数据分为两类,目前主流机器学习算法中,神经网络等其他机器学习模型已经能很好完成二分类、多分类,学习和研究SVM,理解SVM背后丰富算法知识,对以后研究其他算法大有裨益;在实现SVM过程中,会综合利用之前介绍的一维搜索、KKT条件、惩罚函数等相关知识。本篇首先通过详解SVM原理,后介绍如何利用python从零实现SVM算法。
         实例中样本明显的分为两类,黑色实心点不妨为类别一,空心圆点可命名为类别二,在实际应用中会把类别数值化,比如类别一用1表示,类别二用-1表示,称数值化后的类别为标签。每个类别分别对应于标签1、还是-1表示没有硬性规定,可以根据自己喜好即可,需要注意的是,由于SVM算法标签也会参与数学运算,这里不能把类别标签设为0。

 

线性核:
主要用于线性可分的情况,我们可以看到特征空间到输入空间的维度是一样的,其参数少速度快,对于线性可分数据,其分类效果很理想
通常首先尝试用线性核函数来做分类,看看效果如何,如果不行再换别的
优点:方案首选、简单、可解释性强:可以轻易知道哪些feature是重要的
缺点:只能解决线性可分的问题

高斯核:

通过调控参数,高斯核实际上具有相当高的灵活性,也是使用最广泛的核函数之一。
如果σ \sigmaσ选得很大的话,高次特征上的权重实际上衰减得非常快,所以实际上(数值上近似一下)相当于一个低维的子空间;
如果σ \sigmaσ选得很小,则可以将任意的数据映射为线性可分——当然,这并不一定是好事,因为随之而来的可能是非常严重的过拟合问题。
优点:可以映射到无限维、决策边界更为多维、只有一个参数
缺点:可解释性差、计算速度慢、容易过拟合

多项式核

多项式核函数可以实现将低维的输入空间映射到高纬的特征空间,
但是多项式核函数的参数多
当多项式的阶数比较高的时候,核矩阵的元素值将趋于无穷大或者无穷小,计算复杂度会大到无法计算。
优点:可解决非线性问题、主观设置
缺点:多参数选择、计算量大
sigmoid核

采用sigmoid核函数,支持向量机实现的就是只包含一个隐层,激活函数为 Sigmoid 函数的神经网络。
应用SVM方法,隐含层节点数目(它确定神经网络的结构)、隐含层节点对输入节点的权值都是在设计(训练)的过程中自动确定的。
而且支持向量机的理论基础决定了它最终求得的是全局最优值而不是局部最小值,也保证了它对于未知样本的良好泛化能力而不会出现过学习现象。
如图, 输入层->隐藏层之间的权重是每个支撑向量,隐藏层的计算结果是支撑向量和输入向量的内积,隐藏层->输出层之间的权重是支撑向量对应的

woa-svm流程图如下所示:

2.仿真效果预览

matlab2022a仿真结果如下:

 

3.MATLAB核心程序

clc;
clear;
close all;
warning off;
addpath(genpath(pwd));
 
global traindata trainlabel
 
% Industrial process data
load ('.\data\data_2.mat')
 
% Parameter setting of WOA
agent = 10;            % Number of search agents
iteration = 30;        % Maximum numbef of iterations
lb = [10^-3,2^-7];     % Lower bound of 'c' and 'g'
ub = [10^0,2^7];       % Upper bound of 'c' and 'g'
dim = 2;               % Number of Parameter
fobj = @woa_obj;       % Objective function
 
% Parameter optimization using WOA
[Best_score, Best_pos, Convergence_curve] = WOA(agent, iteration, lb, ub, dim, fobj);
 
 
% Train SVDD hypersphere using the optimal parameters
cmd = ['-s 5 -t 2 ', '-c ', num2str(Best_pos(1,1)), ' -g ', ...
    num2str(Best_pos(1,2)), ' -q'];
model = libsvmtrain(trainlabel, traindata, cmd);
 
% Test 
[predictlabel, accuracy, ~] = libsvmpredict(testlabel, testdata, model);
 
% Visualize the results
plotResult(testlabel,predictlabel)
 
 
figure
plot(Convergence_curve);

SVM采用的libsvm工具箱,通过测试,在matlab2022a中可以正常运行。

function obj = woa_obj(para)
 
 
global traindata trainlabel
 
c = para(1,1);
 
g = para(1,2);
 
 
cmd = ['-s 5 -t 2 ', '-c ',num2str(c), ' -g ', num2str(g), ' -q'];
 
 
model = libsvmtrain(trainlabel, traindata, cmd); 
 
[~, acc, ~] = libsvmpredict(trainlabel, traindata, model);
 
obj = 1-acc(1,1)/100;
end
A142

4.完整MATLAB

V

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

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

相关文章

数据挖掘期末-图注意力模型

PyGAT图注意力模型 ​  PyGAT实现的分类器: https://www.aliyundrive.com/s/vfK8ndntpyc 还在发烧,不是特别清醒,就简单写了写。用GAT进行关系预测,GAT可能是只做中间层,不过本来在GAT这一层就为了能懂就简化了很多…

基于双闭环PID控制器的永磁同步电机控制系统仿真

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 永磁同步电机(PMSM,permanent magnet synchronous motor)的基本结构主要包括定子、转子以及端盖三个主要模块。其中转子磁路结构是永磁同步电机与其它电机最主…

Verilog刷题HDLBits——Exams/review2015 fsm

Verilog刷题HDLBits——Exams/review2015 fsm题目描述状态转换图代码结果题目描述 This is the fourth component in a series of five exercises that builds a complex counter out of several smaller circuits. See the final exercise for the overall design. You may …

人工智能期末复习:聚类(详细笔记)

文章目录聚类的概述常见的聚类算法原型聚类K均值聚类算法K均值聚类算法顺序前导聚类(Sequential leader clustering)高斯混合聚类(KMM)密度聚类DBSCAN聚类算法层次聚类AGNES聚类算法谱聚类聚类的评价(轮廓系数&#xf…

深度学习—00入门 神经网络

1、深度学习简介 深度学习是机器学习的一个分支,简单来说就是通过人工神经网络,强行在业务的 输入 和 输出 之间,暴力耦合一个出一个数学模型。 1.1 深度学习特点 1、由于是暴力耦合出来的模型,自然模型可解释性很差&#xff0c…

kkfile在线文件预览部署(Linux服务器版本)

一:kkfile部署指南 KKfile文件预览是一款开源的文档在线预览项目。项目使用流行的spring boot搭建,易上手和部署,基本支持主流办公文档的在线预览,如doc,docx,Excel,pdf,txt,zip,rar,图片等等。 如果你是在windows系统中可以不用…

第二证券|锂离子聚合物电池的分类和使用注意事项

根据锂离子电池所用电解质资料的不同,锂离子电池分为液态锂离子电池和聚合物锂离子电池。聚合物锂离子电池所用的正负极资料与液态锂离子都是相同的,正极资料分为钴酸锂、锰酸锂、三元资料和磷酸铁锂资料,负极为石墨,电池工作原理…

RabbitMQ 第一天 基础 6 SpringBoot 整合RabbitMQ

RabbitMQ 【黑马程序员RabbitMQ全套教程,rabbitmq消息中间件到实战】 文章目录RabbitMQ第一天 基础6 SpringBoot 整合RabbitMQ6.1 SpringBoot 整合 RabbitMQ【生产者】6.1.1 生产者6.2 SpringBoot 整合 RabbitMQ【消费者】6.2.1 消费者6.3 小结第一天 基础 6 Spri…

ESP32-CAM 使用 MicroPython 进行开发

ESP32-CAM 开发工具 ESP32-CAM是安信可发布小尺寸的摄像头模组。该模块可以作为最小系统独立工作,尺寸仅为2740.54.5mm。 ESP32-CAM可广泛应用于各种物联网场合,适用于家庭智能设备、工业无线控制、无线监控、人脸识别以及其它物联网应用,是…

stm32f407VET6 系统学习 day02 GPIO 引脚的按键 中断,中断设置 (配置)

1.中断基本知识 1.知识点: STM32的所有中断(内部或外部)都是由NVIC(嵌套向量中断控制器)控制 注意:在KEIL5工程中的fwlib分组中,misc.c文件提供了NVIC相关的固件库函数。 2.中断源 :引起CPU中断的根源&am…

DirectX12_API流程入门篇

本部分主要记录下使用D3D12入门所涉及到的API,记录简单使用方式供后期快速查找使用(数据参照龙书实现)。 首先看一下DX12中拥有的管线能力: Raster Graphics PipelineCompute Graphics PipelineRay Tracing PipelineMesh Geometry Pipeline 具体管线示…

【数据结构】链式二叉树的实现

作者:一个喜欢猫咪的的程序员 专栏:《数据结构》 喜欢的话:世间因为少年的挺身而出,而更加瑰丽。 ——《人民日报》 目录 1.二叉树的概念及结构 1.1二叉树的概念 1.2二叉树的类型分类&#xff…

腾讯焦虑了,一向温文尔雅的马化腾也发脾气了

大家好,我是校长。昨天小马哥内部讲话在互联网上疯传,这应该是,腾讯这家公司创办以来,马化腾最焦虑也最外露的一次讲话了,重点大概涉及 3 大方面,8 大项内容:1、所有业务线 ROI 化,再…

【关于时间序列的ML】项目 9 :机器学习中的 ARIMA 模型

🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃 🎁欢迎各位→点赞…

<Linux线程概念及线程控制>——《Linux》

目录 1. Linux线程概念 什么是线程 线程的优点 线程的缺点 线程异常 线程用途 2. Linux进程VS线程 进程和线程 进程的多个线程共享 关于进程线程的问题 3. Linux线程控制 POSIX线程库 创建线程 线程ID及进程地址空间布局 线程终止 线程等待 4. 分离线程 后记:●由于…

ArcGIS 制作这种“清新设计风”的地图海报封面

这种图怎么做?下面是星球研究所制作的一张地图海报,那么究竟是如何制作的呢? 星球研究所 制作 一通鼓捣之下,使用 ArcGIS Pro 制作出了风格相近的成都市区位及地形示意图地图(其实 QGIS 也能做)。 下面教程一并分享给大家。 完全使用 ArcGIS Pro 制作的成果图 1.全国区位…

Python——几个常用的数学函数

1. min()函数:取出给定参数的最小值 说明:获取指定数值或者指定序列中最小值。 print(min(1, 5)) print(min(1, 2, 3, 4, 5, 6)) print(min([2, 3, 4, 5])) 2.max()函数:取出给定参数的最大值 说明:获取指定数值或者指定序列中…

CSS初级教程【第一天】

CSS初级教程【第一天】【1】CSS初识【2】CSS简介【3】CSS语法【4】CSS 选择器【5】CSS使用【6】CSS 注释【7】CSS 颜色【8】CSS RGB 颜色【9】CSS HEX 颜色【10】CSS HSL 颜色(色相| 饱和度 | 明度)【0】末尾声名【1】CSS初识 CSS 是一种描述 HTML 文档样…

【青岛大学·王卓】第3章_栈和队列

【青岛大学王卓】第3章_栈和队列 20221107-20221119 3.1 栈和队列的定义和特点 普通线性表插入和删除可以是线性表中的任意为位置; 3.1.1 栈 栈的概念 栈和队列是两种常用的、重要的数据结构。栈和队列是限定插入和删除只能在表的端点进行的线性表。 栈特点 后…

Anki学习之路

【常规操作】: 【自定义卡片进度】: [右键单击] -> [重设学习进度] //选择放到哪一个队列中( 新卡片队列 / 复习队列 )。 【重新学一遍】: //然后再进行上面的操作步骤。 【牌组齿轮按钮】: 【每日新…