【SVM分类】基于布谷鸟算法优化实现SVM数据分类matlab源码
一、神经网络-支持向量机
支持向量机(Support Vector Machine)是Cortes和Vapnik于1995年首先提出的,它在解决小样本、非线性及高维模式识别中表现出许多特有的优势,并能够推广应用到函数拟合等其他机器学习问题中。 1 数学部分 1.1 二维空间 2 算法部分
二、布谷鸟算法
受到蜜蜂群体的有组织的觅食过程的启发,Karaboga提出了模拟蜜蜂群体觅食过程的人工蜂群(Artificial Bee Colony) 算法用于解决多维度多峰谷的优化问题。该算法创始之初被用来寻找Sphere、Rosenbrock和Rastrigin函数的最小值。 首先对蜜蜂基于摇摆舞进行觅食的过程特征进行介绍。在图1中,存在两个已发现的食物源A和B。初始时,潜在工蜂以非雇佣蜂的身份进行搜索。它并不知道蜂房附近的任何蜜源的信息。因此,它有以下两个可能的选择: (1)成为一个侦察蜂,秉着自身潜在动力或外在因素自发的搜索蜂房附近的区域(见图1中的S); (2)在观看摆尾舞后,成为一个被招募者,并开始搜索蜜源(见图1中的R)。 在定位蜜源之后,该蜜蜂能够利用自身的能力来记住食物源的位置,并立刻对它进行探索。该蜜蜂现在成为了一个雇佣蜂。雇佣蜂采到蜂蜜后,从蜜源处返回蜂房并将蜂蜜卸载到蜜室中。在卸载完蜂蜜后,雇佣蜂有下列三个选择: (1)放弃已经采集过的蜜源,成为一个受其他摇尾舞招募的跟随者(UF)。 (2)施展摇尾舞技,招募蜂房内的同伴,再次回到原先采集过的食物源(EF1)。 (3)不招募其它的蜜蜂,继续探索采集过的食物源(EF2)。
二、算法流程
人工蜂群算法由连续的四个阶段组成,分别是初始化阶段、引领(雇佣)蜂阶段、跟随蜂阶端和侦察蜂阶段。 人工蜂群算法中将人工蜂群分为引领蜂、跟随蜂和侦察蜂三类,每一次搜索过程中,引领蜂和跟随蜂是先后开采食物源,即寻找最优解,而侦察蜂是观察是否陷入局部最优,若陷入局部最优则随机地搜索其它可能的食物源。每个食物源代表问题一个可能解,食物源的花蜜量对应相应解的质量(适应度值f i t fitfit)。
1、初始化阶段
2、引领蜂阶段
3、跟随蜂阶段
4、侦察蜂阶段
5、食物源
三、代码
clc;
clear;
close all;%% Problem DefinitionCostFunction=@(x) Sphere(x); % Cost FunctionnVar=5; % Number of Decision VariablesVarSize=[1 nVar]; % Decision Variables Matrix SizeVarMin=-10; % Decision Variables Lower Bound
VarMax= 10; % Decision Variables Upper Bound%% ABC SettingsMaxIt=200; % Maximum Number of IterationsnPop=100; % Population Size (Colony Size)nOnlooker=nPop; % Number of Onlooker BeesL=round(0.6*nVar*nPop); % Abandonment Limit Parameter (Trial Limit)a=1; % Acceleration Coefficient Upper Bound%% Initialization% Empty Bee Structure
empty_bee.Position=[];
empty_bee.Cost=[];% Initialize Population Array
pop=repmat(empty_bee,nPop,1);% Initialize Best Solution Ever Found
BestSol.Cost=inf;% Create Initial Population
for i=1:nPoppop(i).Position=unifrnd(VarMin,VarMax,VarSize);pop(i).Cost=CostFunction(pop(i).Position);if pop(i).Cost<=BestSol.CostBestSol=pop(i);end
end% Abandonment Counter
C=zeros(nPop,1);% Array to Hold Best Cost Values
BestCost=zeros(MaxIt,1);%% ABC Main Loopfor it=1:MaxIt% Recruited Beesfor i=1:nPop% Choose k randomly, not equal to iK=[1:i-1 i+1:nPop];k=K(randi([1 numel(K)]));% Define Acceleration Coeff.phi=a*unifrnd(-1,+1,VarSize);% New Bee Positionnewbee.Position=pop(i).Position+phi.*(pop(i).Position-pop(k).Position);% Evaluationnewbee.Cost=CostFunction(newbee.Position);% Comparisionif newbee.Cost<=pop(i).Costpop(i)=newbee;elseC(i)=C(i)+1;endend% Calculate Fitness Values and Selection ProbabilitiesF=zeros(nPop,1);MeanCost = mean([pop.Cost]);for i=1:nPopF(i) = exp(-pop(i).Cost/MeanCost); % Convert Cost to FitnessendP=F/sum(F);% Onlooker Beesfor m=1:nOnlooker% Select Source Sitei=RouletteWheelSelection(P);% Choose k randomly, not equal to iK=[1:i-1 i+1:nPop];k=K(randi([1 numel(K)]));% Define Acceleration Coeff.phi=a*unifrnd(-1,+1,VarSize);% New Bee Positionnewbee.Position=pop(i).Position+phi.*(pop(i).Position-pop(k).Position);% Evaluationnewbee.Cost=CostFunction(newbee.Position);% Comparisionif newbee.Cost<=pop(i).Costpop(i)=newbee;elseC(i)=C(i)+1;endend% Scout Beesfor i=1:nPopif C(i)>=Lpop(i).Position=unifrnd(VarMin,VarMax,VarSize);pop(i).Cost=CostFunction(pop(i).Position);C(i)=0;endend% Update Best Solution Ever Foundfor i=1:nPopif pop(i).Cost<=BestSol.CostBestSol=pop(i);endend% Store Best Cost Ever FoundBestCost(it)=BestSol.Cost;% Display Iteration Informationdisp(['Iteration ' num2str(it) ': Best Cost = ' num2str(BestCost(it))]);end%% Resultsfigure;
%plot(BestCost,'LineWidth',2);
semilogy(BestCost,'LineWidth',2);
xlabel('Iteration');
ylabel('Best Cost');
grid on;
5.参考文献:
书籍《MATLAB神经网络43个案例分析》
【SVM分类】基于布谷鸟算法优化实现SVM数据分类matlab源码相关推荐
- 【预测模型-ELM预测】基于布谷鸟算法优化极限学习机预测matlab代码
1 简介 针对变压器故障的特征,结合变压器油中气体分析法以及三比值法.提出了基于布谷鸟算法改进极限学习机的故障诊断方法.由于输入层与隐含层的权值和阈值是随机产生.传统的极限学习机可能会使隐含层节点过多 ...
- 【PID优化】基于蝗虫算法PID控制器优化设计含Matlab源码
1 内容介绍 该文针对广泛应用的PID控制器,在MATLAB仿真软件环境下,开发出一个过程控制系统的仿真软件包,能够实现模型辨识和PID参数调节,为过程控制系统仿真研究提供了方便. 该软件界面友好,操 ...
- 【SVM分类】基于鲸鱼算法优化支持向量机实现数据分类matlab代码
1 简介 Mirjalili和Lewis在2016年从座头鲸的猎食行为中得到启示,提出一种新的元启发式优化算法--鲸鱼优化算法.该算法仿照座头鲸的泡泡网觅食方法,通过收缩包围.螺旋位置更新以及随机捕食 ...
- 【优化求解-单目标求解】基于黑猩猩算法求解单目标问题matlab源码
一.黑猩猩算法 This article proposes a novel metaheuristic algorithm called Chimp Optimization Algorithm (C ...
- 【优化控制】基于遗传算法实现优化LQR控制器含Matlab源码
1 简介 车辆悬架系统是影响汽车行驶平顺性和乘坐舒适性的重要结构部件.传统的被动悬架由于其弹性元件刚度和减震器阻尼是固定不变的,这导致其只能适应某一特定路面行驶,限制了适应多样性路况的需求以及车辆性能 ...
- 【预测模型】基于遗传算法优化GRNN实现数据分类matlab源码
1 模型 遗传算法和广义回归神经网络结合起来,构建出GA-GRNN方法,利用遗传算法的全局寻优和广义回归神经网络结构简单的特点,自动搜索和匹配最优光滑因子参数,实现数据葡萄酒数据精准分类.通过与实际分 ...
- 基于布谷鸟算法优化的Elman神经网络数据预测-附代码
基于布谷鸟算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于布谷鸟算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电 ...
- 【BP预测】基于布谷鸟算法优化BP神经网络数据回归预测含Matlab源码
1 简介 锂电池健康状态(SOH)的预测是电动汽车锂电池管理系统的最重要的关键技术之一;传统的误差逆向传播(BP)神经网络容易使权值和阈值陷入局部最优,从而导致预测结果不精确;结合布谷鸟搜索算法(CS ...
- 基于灰狼算法优化支持向量机的数据分类算法及其MATLAB实现-附代码
基于灰狼算法优化支持向量机的数据分类算法及其MATLAB实现-附代码 文章目录 基于灰狼算法优化支持向量机的数据分类算法及其MATLAB实现-附代码 1 GWO-SVM 模型 1.1 灰狼优化器GWO ...
最新文章
- Katalon Studio自动化测试框架使用【2】--- 项目设置(MacOS)
- java核心标签库,16.JSTL标签库(我的JavaEE笔记)
- C++ Boost 学习资源列表
- 牛客练习赛 56 E tarjan 割边
- “开发者的面试完全是无稽之谈”
- Java和C的关系及发展历程
- 程序员代码面试指南:IT 名企算法与数据结构题目最优解
- Spark机器学习(一)—Spark相关
- slitaz linux 包管理器,SliTaz
- python求圆锥体的表面积公式_求圆柱和圆锥的体积公式及表面积公式!!
- LTE CAT M1模块为辅助生活系统提供了宽带和智能手机的替代方案
- python对文本文件的读写
- 对N行N列二维数组的每一行排序,偶数行(0当作偶数)由小到大排序,奇数行由大到小排序
- Allegro导出元器件pad坐标和网络(附带ODB++插件下载)
- 万能DOS启动盘制作全攻略!(软盘+光盘+U盘+硬盘+NTFS+……)
- html block属性,css display block属性的意思、作用和效果
- 软考证书什么时候可以领到手?
- js源码分析(一)——Call
- freeswitch与外部网关链接
- 下面为子代选择器结合符的是_奥鹏2014秋福建师范大学《语言学概论》在线作业一答案...