精华内容
下载资源
问答
  • 2022-04-20 18:04:33

    更新一下:以下代码是优化高斯核函数的惩罚因子和g参数的。因为在svmtrain函数中没有给-v赋值,所以是默认值2,若要优化其他核函数,可以修改svmtrain中的-v参数的值以及增加其他参数的粒子更新代码。此代码的目标函数是svmtrain三折交叉验证返回的准确率,读者可根据实际情况做修改。

    粒子群算法是模拟鸟群觅食过程中的迁徙和群集行为时提出的一种基于群体智能的优化算法。粒子群算法是一种随机全局优化技术,通过粒子间的相互作用发现复杂搜索空间中的最优区域。用粒子群算法优化支持向量机的结构参数,可以快速收敛寻得最优解,提高支持向量机的学习能力。在粒子群算法中,可以把所有的优化问题的解想象为D维搜索空间上的一个点,而这个点就是一个“粒子”。通过目标函数来评估当前粒子所处位置的好坏,得到相应的适应度值。在种群中粒子的随机初始化形成后,会按照某种方式进行迭代,直到终止条件符合要求,从而寻得最优解。
    基于粒子群算法的支持向量机参数选择的具体步骤如下:
    (1)设置待优化的惩罚因子C和核参数γ的取值范围,以及参数局部搜索能力、种群最大数量等其他初始化参数。
    (2)在惩罚因子C和核参数γ的取值范围随机初始化一群粒子。初始化每个粒子的位置信息和速度信息,然后将每个粒子的历史最优位置[Pbest]_i设为当前位置,群体中最好粒子的当前位置设为Gbest。
    (3)将样本数据的回归误差作为目标函数,计算每个粒子的适应度。
    (4)对每个粒子,若其适应度值优于上一轮的历史最优值,就是当前位置取代历史最优位置,成为新的[Pbest]_i。
    (5)对每个粒子,若其适应度值优于上一轮的全局最优适应度值,就用当前位置取代全局最优位置,成为新的Gbest。
    (6)按照以下公式分别对粒子的速度和位置进行更新。
    在这里插入图片描述

    (7)判读是否满足终止条件,满足时则停止运算,否则返回步骤(3)继续迭代。

    function [bestCVaccuarcy,bestc,bestg,pso_option] = psoSVMcgForClass(train_label,train,pso_option)
    % psoSVMcgForClass
    %% 参数初始化
    if nargin == 2   %当输入两个参数时执行下面的语句
        pso_option = struct('c1',1.5,'c2',1.7,'maxgen',200,'sizepop',20, ...
            'k',0.6,'wV',1,'wP',1,'v',3, ...
            'popcmax',10^4,'popcmin',10^(-1),'popgmax',10^3,'popgmin',10^(-2));
    end
    % c1:初始为1.5,pso参数局部搜索能力
    % c2:初始为1.7,pso参数全局搜索能力
    % maxgen:初始为200,最大进化数量
    % sizepop:初始为20,种群最大数量
    % k:初始为0.6(k belongs to [0.1,1.0]),速率和x的关系(V = kX)
    % wV:初始为1(wV best belongs to [0.8,1.2]),速率更新公式中速度前面的弹性系数
    % wP:初始为1,种群更新公式中速度前面的弹性系数
    % v:初始为3,SVM Cross Validation参数
    % popcmax:初始为100,SVM 参数c的变化的最大值.
    % popcmin:初始为0.1,SVM 参数c的变化的最小值.
    % popgmax:初始为1000,SVM 参数g的变化的最大值.
    % popgmin:初始为0.01,SVM 参数c的变化的最小值.
    
    Vcmax = pso_option.k*pso_option.popcmax;
    Vcmin = -Vcmax ;
    Vgmax = pso_option.k*pso_option.popgmax;
    Vgmin = -Vgmax ;
    
    eps = 1e-1;
    
    %% 产生初始粒子和速度
    for i=1:pso_option.sizepop
        
        % 随机产生种群和速度
        pop(i,1) = (pso_option.popcmax-pso_option.popcmin)*rand+pso_option.popcmin;
        pop(i,2) = (pso_option.popgmax-pso_option.popgmin)*rand+pso_option.popgmin;
        V(i,1)=Vcmax*rands(1,1);
        V(i,2)=Vgmax*rands(1,1);
        
        % 计算初始适应度
        cmd = ['-v ',num2str(pso_option.v),' -c ',num2str( pop(i,1) ),' -g ',num2str( pop(i,2) )];
        fitness(i) = svmtrain(train_label, train, cmd);    %保存的是三折交叉验证的准确率
        fitness(i) = -fitness(i);
    end
    
    % 找极值和极值点
    [global_fitness bestindex]=min(fitness); % 全局极值   第一个是值 第二个是索引
    local_fitness=fitness;   % 个体极值初始化
    
    global_x=pop(bestindex,:);   % 全局极值点
    local_x=pop;    % 个体极值点初始化
    
    % 每一代种群的平均适应度  零矩阵
    avgfitness_gen = zeros(1,pso_option.maxgen);  
    
    %% 迭代寻优
    for i=1:pso_option.maxgen
        
        for j=1:pso_option.sizepop
            
            %速度更新
            V(j,:) = pso_option.wV*V(j,:) + pso_option.c1*rand*(local_x(j,:) - pop(j,:)) + pso_option.c2*rand*(global_x - pop(j,:));
           
            %较大的ω使粒子更易跳出局部最优解,获得更强的全局寻优能力,但也会使效率降低,不宜收敛;较小的ω容易陷入局部最优解,但更易收敛。
            %c1=0时,为无私型粒子群算法,丧失群体多样性,容易陷入局部最优解。
            %c2=0时,为自私型粒子群算法,没有信息的社会共享,收敛速度减慢。
            %粒子最大速度:维护算法探索能力和开发能力的平衡。速度增大,粒子的探索能力增强,但容易飞过最优解。速度减小,开发能力较大,但容易陷入局部最优。
            if V(j,1) > Vcmax
                V(j,1) = Vcmax;
            end
            if V(j,1) < Vcmin
                V(j,1) = Vcmin;
            end
            if V(j,2) > Vgmax
                V(j,2) = Vgmax;
            end
            if V(j,2) < Vgmin
                V(j,2) = Vgmin;
            end
            
            %种群更新
            pop(j,:)=pop(j,:) + pso_option.wP*V(j,:);
            if pop(j,1) > pso_option.popcmax
                pop(j,1) = pso_option.popcmax;
            end
            if pop(j,1) < pso_option.popcmin
                pop(j,1) = pso_option.popcmin;
            end
            if pop(j,2) > pso_option.popgmax
                pop(j,2) = pso_option.popgmax;
            end
            if pop(j,2) < pso_option.popgmin
                pop(j,2) = pso_option.popgmin;
            end
            
            % 自适应粒子变异
            if rand>0.5
                k=ceil(2*rand);
                if k == 1
                    pop(j,k) = (20-1)*rand+1;
                end
                if k == 2
                    pop(j,k) = (pso_option.popgmax-pso_option.popgmin)*rand + pso_option.popgmin;
                end
            end
            
            %适应度值
            cmd = ['-v ',num2str(pso_option.v),' -c ',num2str( pop(j,1) ),' -g ',num2str( pop(j,2) )];
            fitness(j) = svmtrain(train_label, train, cmd);
            fitness(j) = -fitness(j);
            
            cmd_temp = ['-c ',num2str( pop(j,1) ),' -g ',num2str( pop(j,2) )];
            model = svmtrain(train_label, train, cmd_temp);
            
            if fitness(j) >= -65
                continue;
            end
            
            %个体最优更新
            if fitness(j) < local_fitness(j)
                local_x(j,:) = pop(j,:);
                local_fitness(j) = fitness(j);
            end
            
            if abs( fitness(j)-local_fitness(j) )<=eps && pop(j,1) < local_x(j,1)
                local_x(j,:) = pop(j,:);
                local_fitness(j) = fitness(j);
            end
            
            %群体最优更新
            if fitness(j) < global_fitness
                global_x = pop(j,:);
                global_fitness = fitness(j);
            end
            
            if abs( fitness(j)-global_fitness )<=eps && pop(j,1) < global_x(1)
                global_x = pop(j,:);
                global_fitness = fitness(j);
            end
            
        end
        
        fit_gen(i) = global_fitness;
        avgfitness_gen(i) = sum(fitness)/pso_option.sizepop;
    end
    
    %% 结果分析
    figure;
    hold on;
    plot(-fit_gen,'r*-','LineWidth',1.5);
    plot(-avgfitness_gen,'o-','LineWidth',1.5);
    legend('最佳适应度','平均适应度',3);
    xlabel('进化代数','FontSize',12);
    ylabel('适应度','FontSize',12);
    grid on;
    
    bestc = global_x(1);
    bestg = global_x(2);
    bestCVaccuarcy = -fit_gen(pso_option.maxgen);
    
    line1 = '适应度曲线Accuracy[PSOmethod]';
    line2 = ['(参数c1=',num2str(pso_option.c1), ...
        ',c2=',num2str(pso_option.c2),',终止代数=', ...
        num2str(pso_option.maxgen),',种群数量pop=', ...
        num2str(pso_option.sizepop),')'];
    % line3 = ['Best c=',num2str(bestc),' g=',num2str(bestg), ...
    %     ' CVAccuracy=',num2str(bestCVaccuarcy),'%'];
    % title({line1;line2;line3},'FontSize',12);
    title({line1;line2},'FontSize',12);
    

    效果图如下
    在这里插入图片描述

    更多相关内容
  • 将神经网络与粒子群优化算法相结合并用于支持向量机核函数的参数优化。该方法能够同时具有神经网络较强的非线性拟合能力和粒子群优化算法的寻优能力。数值实验结果表明该算法对支持向量机核参数优化是可行的、有效...
  • 改进粒子群算法优化SVM参数的遥感图像分类.pdf
  • 基于神经网络的粒子群算法优化SVM参数问题.pdf
  • 粒子群算法优化支持向量机模型参数代码,代码包含注释和数据文件
  • 基于细菌觅食特征改进粒子群算法优化SVM模型参数研究.pdf
  • matlab环境下使用PSO算法SVM多分类器的参数进行优化的案例,代码有详细的注释,另有一篇博客对算法的大致过程有介绍.
  • 一、粒子群算法优化SVM简介 支持向量机(support vector machine,SVM)是针对有限样本情况的机器学习方法,它的提出根据统计学习理论的VC理论和结构风险最小化原则。支持向量机已经成为智能技术领域研究的热点。它有着...

    一、粒子群算法优化SVM简介

    支持向量机(support vector machine,SVM)是针对有限样本情况的机器学习方法,它的提出根据统计学习理论的VC理论和结构风险最小化原则。支持向量机已经成为智能技术领域研究的热点。它有着泛化能力强,识别率高,算法灵活等诸多优点,但是支持向量机对内部参数有着极高的依赖性,核参数的选取和惩罚因子的设定这两个因素直接影响着分类的准确率,并且针对不同物种的数据集,需要设定不同的参数来适应数据集。因此参数的选择直接决定分类的准确率。
    为了提高识别的准确度,本研究提出了粒子群优化算法和支持向量机相结合的支持向量机粒子群优化算法,建立最优的鱼类识别模型。粒子群优化算法最早是由Eberhart和Kennedy提出的,该算法源自对鸟类捕食问题的研究。
    粒子群优化支持向量机的步骤如下。

    1. 设鱼类种类粒子数为m。
    2. 粒子速度
      Vi=(Vi1,Vi2,Vi3,…,Vi m) (5)
      粒子位置
      Xi=(Xi1,Xi2,Xi3,…,Xi m) (6)
      并将各粒子本身找到的最优解记为Pb,粒子全区域最优解记为Gb。
    3. 根据得到的粒子数,更新SVM算法中的惩罚系数C和核参数宽度g。
    4. 利用训练集训练SVM算法鱼类分类模型。
    5. 计算适应度函数值
      在这里插入图片描述
      式中:Zs——类内平均距离;
      Zo——类外中心距离;
      n——测试样本数量。
    6. 每个粒子根据式(8),更新速度和位置。
      Vi m=W×Vi m+C1×r1×(Pi m-xi m)+C2×r2×(gi m-xi m) (8)
      Xi=Xi m+Vi m (9)
      式中:W——惯性权重;
      r1,r2——[0,1]范围内的随机数;
      i——当前迭代次数,初始值为1;
      Pi m——第i代个体最优位置;
      gi m——第i代全局最优位置;
      C1,C2——常数;
      Vi m——速度;
      X——粒子位置。
    7. 更新每个粒子的适应度,及选取最好的Pb和Gb。
    8. 若没有达到要求则回到步骤3,直至满足条件时结束。
      将鱼的特征向量投影到高纬度特征空间,在此空间中进行差值运算(同一类中平均距离和同一类外中心距离),其结果作为参数的适应值,最后利用全局寻优能力,进行最优参数搜索。将结果带入SVM进行样本训练。试验结果表明用粒子群优化后的支持向量机分类准确率提高。

    二、部分源代码

     %% I. 清空环境
    clc
    clear
    
    %% II. 声明全局变量
    global data
    data=xlsread('BreastCancer_data');
    
    %% III. 参数初始化
    c1 = 0.25;
    c2 = 0.25;
    
    maxgen = 16;   % 进化次数  
    sizepop = 4;   %种群规模
    
    Vmax = 0.25;
    Vmin = -0.25;
    popmax = 1;
    popmin = 0;
    
    %% IV. 产生初始粒子和速度
    for i = 1:sizepop
        % 随机产生一个种群
        pop(i,:) = rand(1,9);    %初始种群
        V(i,:) = 0.25*rands(1,9);  %初始化速度
     
    
    %% V. 个体极值和群体极值
    [bestfitness bestindex] = max(fitness);
    zbest = pop(bestindex,:);   %全局最佳
    fitnessgbest = fitness;   %个体最佳适应度值
    fitnesszbest = bestfitness;   %全局最佳适应度值
    
    %% VI. 迭代寻优
    for i = 1:maxgen
        
        for j = 1:sizepop
            % 速度更新
            V(j,:) = V(j,:) + c1*rand*(gbest(j,:) - pop(j,:)) + c2*rand*(zbest - pop(j,:));
            V(j,find(V(j,:)>Vmax)) = Vmax;
            V(j,find(V(j,:)<Vmin)) = Vmin;
            
            % 种群更新
            pop(j,:) = pop(j,:) + V(j,:);
            pop(j,find(pop(j,:)>popmax)) = popmax;
            pop(j,find(pop(j,:)<popmin)) = popmin;
            
            % 适应度值更新
            fitness(j) = fun(pop(j,:)); 
        end
        
      
            % 个体最优更新
            if fitness(j) > fitnessgbest(j)
                gbest(j,:) = pop(j,:);
                fitnessgbest(j) = fitness(j);
            end
            
            % 群体最优更新
            if fitness(j) > fitnesszbest
                zbest = pop(j,:);
                fitnesszbest = fitness(j);
            end
        end 
        yy(i) = fitnesszbest;  
        
    end
    
    %% VII.输出结果
    n=1;
    for m=1:9
        if zbest(m)>=0.5
            selection(n)=m;
          
        end
    end
    disp(['基于粒子群算法的SVM特征选择的结果为:特征  ',num2str(selection)]);
    disp(['基于粒子群算法的SVM特征选择的分类准确率为:',num2str(fitnesszbest),'%']);
    
    figure
    plot(yy)
    title('最优个体适应度','fontsize',12);
    xlabel('进化代数','fontsize',12);ylabel('适应度','fontsize',12);
    
    

    三、运行结果

    在这里插入图片描述

    四、matlab版本及参考文献

    1 matlab版本
    2014a

    2 参考文献
    [1] 包子阳,余继周,杨杉.智能优化算法及其MATLAB实例(第2版)[M].电子工业出版社,2016.
    [2]张岩,吴水根.MATLAB优化算法源代码[M].清华大学出版社,2017.
    [3]丁顺荣,肖珂.基于粒子群优化SVM和多特征融合的鱼类分类方法研究[J].中国农机化学报. 2020,41(11)

    展开全文
  • 从论域中各个元素之间所具有的客观关系出发,利用集值映射的原理在论域上得到一个覆盖,构造了一种新的覆盖粗糙集模型;研究了与之相关的基本性质,并将其与现有的5种主要的覆盖粗糙集模型进行比较研究。...
  • 利用粒子群算法优化SVM分类器的超参数.pdf
  • 改进的粒子群算法及其SVM参数优化应用.pdf
  • 基于自适应均值粒子群算法SVM参数优化方法.pdf
  • 基于佳点集粒子群算法SVM参数优化方法.pdf
  • 亲测有效,可以来看看,大家一起学习。
  • ​ 一、神经网络-支持向量机 支持向量机(Support Vector Machine)是Cortes和... 1 数学部分 1.1 二维空间 ​​​ ​​​ ​​​ ​​​ ​​​ ​​​ ​​​ ​​​ ​​​ 2 算法部分 ​​​ ​​​ ​​​ ​ ...

     一、神经网络-支持向量机

    支持向量机(Support Vector Machine)是Cortes和Vapnik于1995年首先提出的,它在解决小样本、非线性及高维模式识别中表现出许多特有的优势,并能够推广应用到函数拟合等其他机器学习问题中。 1 数学部分 1.1 二维空间 ​ 2 算法部分

    二、粒子群算法

    粒子群算法是在1995年由Eberhart博士和Kennedy博士一起提出的,它源于对鸟群捕食行为的研究。它的基本核心是利用群体中的个体对信息的共享从而使整个群体的运动在问题求解空间中产生从无序到有序的演化过程,从而获得问题的最优解。设想这么一个场景:一群鸟进行觅食,而远处有一片玉米地,所有的鸟都不知道玉米地到底在哪里,但是它们知道自己当前的位置距离玉米地有多远。那么找到玉米地的最佳策略,也是最简单有效的策略就是搜寻目前距离玉米地最近的鸟群的周围区域。

    在PSO中,每个优化问题的解都是搜索空间中的一只鸟,称之为"粒子",而问题的最优解就对应于鸟群中寻找的"玉米地"。所有的粒子都具有一个位置向量(粒子在解空间的位置)和速度向量(决定下次飞行的方向和速度),并可以根据目标函数来计算当前的所在位置的适应值(fitness value),可以将其理解为距离"玉米地"的距离。在每次的迭代中,种群中的例子除了根据自身的经验(历史位置)进行学习以外,还可以根据种群中最优粒子的"经验"来学习,从而确定下一次迭代时需要如何调整和改变飞行的方向和速度。就这样逐步迭代,最终整个种群的例子就会逐步趋于最优解。

    上面的解释可能还比较抽象,下面通过一个简单的例子来进行说明

    在一个湖中有两个人他们之间可以通信,并且可以探测到自己所在位置的最低点。初始位置如上图所示,由于右边比较深,因此左边的人会往右边移动一下小船。

    现在左边比较深,因此右边的人会往左边移动一下小船

    一直重复该过程,最后两个小船会相遇

    得到一个局部的最优解

    将每个个体表示为粒子。每个个体在某一时刻的位置表示为,x(t),方向表示为v(t)

    p(t)为在t时刻x个体的自己的最优解,g(t)为在t时刻所有个体的最优解,v(t)为个体在t时刻的方向,x(t)为个体在t时刻的位置

    下一个位置为上图所示由x,p,g共同决定了

    种群中的粒子通过不断地向自身和种群的历史信息进行学习,从而可以找到问题的最优解。

    但是,在后续的研究中表表明,上述原始的公式中存在一个问题:公式中V的更新太具有随机性,从而使整个PSO算法的全局优化能力很强,但是局部搜索能力较差。而实际上,我们需要在算法迭代初期PSO有着较强的全局优化能力,而在算法的后期,整个种群应该具有更强的局部搜索能力。所以根据上述的弊端,shi和Eberhart通过引入惯性权重修改了公式,从而提出了PSO的惯性权重模型:

    每一个向量的分量表示如下

    其中w称为是PSO的惯性权重,它的取值介于【0,1】区间,一般应用中均采用自适应的取值方法,即一开始令w=0.9,使得PSO全局优化能力较强,随着迭代的深入,参数w进行递减,从而使的PSO具有较强的局部优化能力,当迭代结束时,w=0.1。参数c1和c2称为学习因子,一般设置为1,4961;而r1和r2为介于[0,1]之间的随机概率值。

    整个粒子群优化算法的算法框架如下:

    step1种群初始化,可以进行随机初始化或者根据被优化的问题设计特定的初始化方法,然后计算个体的适应值,从而选择出个体的局部最优位置向量和种群的全局最优位置向量。

    step2 迭代设置:设置迭代次数,并令当前迭代次数为1

    step3 速度更新:更新每个个体的速度向量

    step4 位置更新:更新每个个体的位置向量

    step5 局部位置和全局位置向量更新:更新每个个体的局部最优解和种群的全局最优解

    step6 终止条件判断:判断迭代次数时都达到最大迭代次数,如果满足,输出全局最优解,否则继续进行迭代,跳转至step 3。

      对于粒子群优化算法的运用,主要是对速度和位置向量迭代算子的设计。迭代算子是否有效将决定整个PSO算法性能的优劣,所以如何设计PSO的迭代算子是PSO算法应用的研究重点和难点。

    ​三、代码

    clc;clear;close all;
    %% 初始化种群
    N = 500;                         % 初始种群个数
    d = 24;                          % 空间维数
    ger = 300;                      % 最大迭代次数   
    
              % 设置位置参数限制(矩阵的形式可以多维)
    vlimit = [-0.5, 0.5;-0.5, 0.5;-0.5, 0.5;-0.5, 0.5;-0.5, 0.5;-0.5, 0.5;
        -0.5, 0.5;-0.5, 0.5;-0.5, 0.5;-0.5, 0.5;-0.5, 0.5;-0.5, 0.5;
        -0.5, 0.5;-0.5, 0.5;-0.5, 0.5;-0.5, 0.5;-0.5, 0.5;-0.5, 0.5;
        -0.5, 0.5;-0.5, 0.5;-0.5, 0.5;-0.5, 0.5;-0.5, 0.5;-0.5, 0.5;];               % 设置速度限制
    c_1 = 0.8;                        % 惯性权重
    c_2 = 0.5;                       % 自我学习因子
    c_3 = 0.5;                       % 群体学习因子 
     for i = 1:d
        x(:,i) = limit(i, 1) + (limit(i, 2) - limit(i, 1)) * rand(N, 1);%初始种群的位置
    end    
    v = 0.5*rand(N, d);                  % 初始种群的速度
    xm = x;                          % 每个个体的历史最佳位置
    ym = zeros(1, d);                % 种群的历史最佳位置
    fxm = 100000*ones(N, 1);               % 每个个体的历史最佳适应度
    fym = 10000;                      % 种群历史最佳适应度
    %% 粒子群工作
    iter = 1;
    times = 1; 
    record = zeros(ger, 1);          % 记录器
    while iter <= ger
        for i=1:N
         fx(i) = calfit(x(i,:)) ; % 个体当前适应度 
        end
         for i = 1:N      
            if fxm(i) > fx(i)
                fxm(i) = fx(i);     % 更新个体历史最佳适应度
                xm(i,:) = x(i,:);   % 更新个体历史最佳位置
            end 
         end
    if fym > min(fxm)
            [fym, nmax] = min(fxm);   % 更新群体历史最佳适应度
            ym = xm(nmax, :);      % 更新群体历史最佳位置
     end
        v = v * c_1 + c_2 * rand *(xm - x) + c_3 * rand *(repmat(ym, N, 1) - x);% 速度更新
        % 边界速度处理
        for i=1:d 
            for j=1:N
            if  v(j,i)>vlimit(i,2)
                v(j,i)=vlimit(i,2);
            end
            if  v(j,i) < vlimit(i,1)
                v(j,i)=vlimit(i,1);
            end
            end
        end       
        x = x + v;% 位置更新
        % 边界位置处理
        for i=1:d 
            for j=1:N
            if  x(j,i)>limit(i,2)
                x(j,i)=limit(i,2);
            end
            if  x(j,i) < limit(i,1)
                x(j,i)=limit(i,1);
            end
            end
        end
        record(iter) = fym;%最大值记录
        iter = iter+1;
        times=times+1;
    end
    disp(['最小值:',num2str(fym)]);
    disp(['变量取值:',num2str(ym)]);
    figure
    plot(record)
    xlabel('迭代次数');
    ylabel('适应度值')
    
    

    在这里插入图片描述

    5.参考文献:

    书籍《MATLAB神经网络43个案例分析》

     

    展开全文
  • 一、粒子群算法优化支持向量机简介 1 SVM SVM是监督学习中最有影响力的方法之一。其基本模型是定义在空间上最大间隔的线性分类器,由于其遵循经验风险与置信风险之和最小化(即结构风险)原理,因此SVM泛化能力强。...

    一、粒子群算法优化支持向量机简介

    1 SVM
    SVM是监督学习中最有影响力的方法之一。其基本模型是定义在空间上最大间隔的线性分类器,由于其遵循经验风险与置信风险之和最小化(即结构风险)原理,因此SVM泛化能力强。SVM学习策略是使间隔最大化,对于已知数据集:T={(x1,y1),(x2,y2),……(xn,yn)}其中,xi属于Rn,yi属于{+1,-1},i=1,2,…N,xi为第i个特征向量,yi为类标记。如若yi>0,则xi属于正类,若yi<0,则xi属于负类。可形式化为凸二次规划问题:
    在这里插入图片描述
    其中,ξ为松弛变量,w为超平面权系数向量,b是偏移量,C是惩罚参数。引入拉格朗日乘子法,得到最优分类决策函数。
    在这里插入图片描述
    本文取径向基核函数为:
    在这里插入图片描述
    其中ai为拉格朗日乘子,K(x,xi)本文取径向基核函数,式(3)中g为核函数参数。核函数参数g的取值对样本划分精细程度有重要影响,g越小,低维空间中选择的曲线越复杂,容易出现过拟合;反之分类结果粒度越粗从而欠拟合。惩罚因子C的取值综合考虑了经验风险与结构风险,C越大,经验风险越小,结构风险越大,容易出现过拟合;C越小,经验风险越大结构风险越小。从而出现欠拟合。由此可见,惩罚因子C与核函数参数g的取值对支持向量机的结果精度有着至关重要的作用。

    二、部分源代码

    
    

    三、运行结果

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

    四、matlab版本及参考文献

    1 matlab版本
    2014a

    2 参考文献
    [1] 包子阳,余继周,杨杉.智能优化算法及其MATLAB实例(第2版)[M].电子工业出版社,2016.
    [2]张岩,吴水根.MATLAB优化算法源代码[M].清华大学出版社,2017.
    [3]周品.MATLAB 神经网络设计与应用[M].清华大学出版社,2013.
    [4]陈明.MATLAB神经网络原理与实例精解[M].清华大学出版社,2013.
    [5]方清城.MATLAB R2016a神经网络设计与应用28个案例分析[M].清华大学出版社,2018.
    [6]张沫,郑慧峰,倪豪,王月兵,郭成成.基于遗传算法优化支持向量机的超声图像缺陷分类[J].计量学报. 2019,40(05)

    展开全文
  • 标准粒子群算法(含有自适应变异),代码添加注释,供初学者学习使用。优化svm预测能较好的跟踪实测值。
  • SVM粒子群优化参数

    2021-04-22 10:56:22
    我现在要用粒子群算法优化支持向量机的参数,请哪位大神告诉我怎么调用svmtrain函数的语法怎么写,将优化的参数传进去? 谢谢各位大神!!!!!!!!============================实例研究====================...
  • 针对支持向量机(SVM)参数难以选择和确定的问题,采用一种新式元启发式优化算法——多元宇宙优化算法(MVO).并在传统多元宇宙优化...研究结果表明:采用改进多元宇宙优化算法优化的支持向量机有较强的寻优性能,稳定性较好.
  • 粒子群算法 SVM

    2021-01-21 11:00:48
    #运用粒子群算法优化SVM正则参数C,以及核函数RBF函数的gamma的问题 import random import numpy as np from sklearn import svm from sklearn import model_selection import matplotlib.pyplot as plt #设置PSO...
  • 一、粒子群算法优化SVM预测简介 1 支持向量机方法 支持向量机的理论基础是结构风险最小化原则和VC维理论, 它是一种新型的机器学习方法, 并不是单纯地考虑经验风险, 还考虑了置信风险, 相比于传统的统计方法, 具有更...
  • 粒子群优化算法进行特征选择和SVM参数优化(Using Particle Swarm Optimization algorithm of feature selection and SVM parameter optimization) 文件列表: 用优化算法进行特征选择 ......................\...
  • 一、粒子群算法SVM简介 2 SVM简介 支持向量机(Support Vector Machine)是Cortes和Vapnik于1995年首先提出的,它在解决小样本、非线性及高维模式识别中表现出许多特有的优势,并能够推广应用到函数拟合等其他机器...
  • ​ 一、神经网络-支持向量机 支持向量机(Support Vector Machine)是Cortes和... 1 数学部分 1.1 二维空间 ​​​ ​​​ ​​​ ​​​ ​​​ ​​​ ​​​ ​​​ ​​​ 2 算法部分 ​​​ ​​​ ​​​ ​ ...
  • 因此,采用粒子群优化(Particle Swarm Optimization,PSO)算法对LS-SVM算法寻找最优超参数,进一步提高LS-SVM对电动机断条故障诊断的效率和准确率有着重要作用。实验结果表明,综合PSO与LS-SVM两种算法的优点,可有效减少...
  • 粒子群算法优化RBF-SVM沙尘暴预报模型参数.pdf
  • 通过研究电力负荷预测中支持向量机的参数优化问题,将改进后新的粒子群算法导入支持向量机参数中,从而建立一种新的电力负荷预测模型(IPSO-SVM)。首先将支持向量机参数编码为粒子初始位置向量,然后通过对粒子个体...
  • 一、粒子群算法简介 1 引言 自然界中的鸟群和鱼群的群体行为一直是科学家的研究兴趣所在。生物学家Craig Reynolds在1987年提出了一个非常有影响的鸟群聚集模型,在他的仿真中,每一个个体都遵循:避免与邻域个体相撞...
  • SVM模型中参数对相对应,对沙尘暴进行预报,为解决SPSO算法易陷入局部解的缺陷,提出了惯性权值自适应调节的改进粒子群算法(WPSO算法),并对沙尘暴RBF-SVM模型参数进行了优化。仿真结果表明,无论是SPSO算法,还是WPSO算法...
  • 基于一种改进粒子群算法SVM参数选取,主要介绍一种新的优化算法

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 712
精华内容 284
热门标签
关键字:

粒子群算法优化svm参数