首页 > 编程语言 >基于smo算法的数据分类matlab仿真,对比线性分类和非线性分类

基于smo算法的数据分类matlab仿真,对比线性分类和非线性分类

时间:2023-04-21 23:44:33浏览次数:42  
标签:SMO SVM end 分类 smo 算法 matlab new alpha

1.算法仿真效果

matlab2022a仿真结果如下:

 

 

 

 

2.算法涉及理论知识概要

         SVM通常用对偶问题来求解,这样的好处有两个:1、变量只有N个(N为训练集中的样本个数),原始问题中的变量数量与样本点的特征个数相同,当样本特征非常多时,求解难度较大。2、可以方便地引入核函数,求解非线性SVM。求解对偶问题,常用的算法是SMO,彻底地理解这个算法对初学者有一定难度,本文尝试模拟算法作者发明该算法的思考过程,让大家轻轻松松理解SMO算法。文中的“我”拟指发明算法的大神。

 

        序列最小优化算法(Sequential minimal optimization, SMO)是一种用于解决支持向量机训练过程中所产生优化问题的算法。SMO由微软研究院的约翰·普莱特于1998年发明,被广泛使用于SVM的训练过程中,并在通行的SVM库LIBSVM中得到实现。1998年,SMO算法发表在SVM研究领域内引起了轰动,因为先前可用的SVM训练方法必须使用复杂的方法,并需要昂贵的第三方二次规划工具。而SMO算法较好地避免了这一问题 。

 

        SMO算法由Microsoft Research的John C. Platt在1998年提出,并成为最快的二次规划优化算法,特别针对线性SVM和数据稀疏时性能更优。关于SMO最好的资料就是他本人写的《Sequential Minimal Optimization A Fast Algorithm for Training Support Vector Machines》了。

 

      对偶函数最后的优化问题:

 

 

 

        要解决的是在参数上求最大值W的问题,至于和都是已知数。C由我们预先设定,也是已知数。按照坐标上升的思路,我们首先固定除以外的所有参数,然后在上求极值。等一下,这个思路有问题,因为如果固定以外的所有参数,那么将不再是变量(可以由其他值推出),因为问题中规定了。

 

 

 

3.MATLAB核心程序

 

function alpha = smo(X,y,C,kernel_type,max_iter,epsilon,tolerate)
if (nargin<4)
    kernel_type = 'linear';
end
if (nargin<5)
    max_iter = 20;
end
if (nargin<6)
    epsilon = 1e-3;
end
if (nargin<7)
    tolerate = 1e-5;
end
 
N = size(y,1);
iter_counts = 0;
alpha_change = 100; % a large number
alpha = C*rand(N,1);
 
while (iter_counts < max_iter && alpha_change>epsilon)
   iter_counts  = iter_counts +  1;
   i = choose_work_set(X,y,alpha,C,kernel_type);
   alpha_prev = alpha; % use in check convergence 
   for j=1:size(alpha,1) % second index
       if j==i
           continue
       end
       xi = X(i,:);
       xj = X(j,:);
       yi = y(i);
       yj = y(j);
       
       kappa = K(xi,xi,kernel_type) + K(xj,xj,kernel_type) - 2*K(xi,xj,kernel_type);
       if kappa == 0
           continue
       end
       
       [U,V] = compute_UV(C,alpha(i),alpha(j),yi,yj);
       
       idx = find(alpha>0 & alpha<C);
       if isempty(idx)
           idx = 1;
       else
           idx = idx(1);
       end
       
       b = y(idx) - sum(alpha.*y.*K(X,X(idx,:),kernel_type));
       
       Ei = sum(alpha.*y.*K(X,xi,kernel_type)) + b - yi;
       Ej = sum(alpha.*y.*K(X,xj,kernel_type)) + b - yj;
      
       alpha_j_unc = alpha(j) + (yj*(Ei - Ej))/kappa;
       
       % Fix
       if alpha_j_unc > V
           alpha_j_new = V;
       elseif alpha_j_unc < U
           alpha_j_new = U;
       else
           alpha_j_new = alpha_j_unc;
       end
       
       alpha_i_new = alpha(i) + yi*yj*(alpha(j) - alpha_j_new);    
       
       alpha(i) = alpha_i_new;
       alpha(j) = alpha_j_new;
   end
% Check convergence
alpha_change = norm(alpha - alpha_prev);
end
end

 

  

 

标签:SMO,SVM,end,分类,smo,算法,matlab,new,alpha
From: https://www.cnblogs.com/51matlab/p/17342233.html

相关文章

  • 人工智能的预训练基础模型的分类
    预训练基础模型预训练基础模型是指在大规模语料库上进行预训练的通用人工智能模型。在自然语言处理(NLP)领域,这些模型通常是基于深度神经网络的语言模型,可以用于各种任务,如文本分类、命名实体识别、机器翻译等。目前,人工智能领域的预训练基础模型主要有以下几种:BERT(Bidirection......
  • m基于混合高斯模型和帧间差分相融合的自适应视频背景提取算法matlab仿真
    1.算法仿真效果matlab2013b仿真结果如下:混合高斯模型背景提取:利用混合高斯模型处理这段视频,黑车已经运动离开画面左下角时,左下角仍然有黑车,这种现象我们称为“鬼影”。其产生的原因是由于混合高斯模型是对图像每个像素建立模型,所以算法的更新速度跟不上物体的变化,产生了滞......
  • 基于ACO蚁群优化的世界旅行路线规划matlab仿真
    1.算法仿真效果matlab2022a仿真结果如下:2.算法涉及理论知识概要蚁群算法是通过对自然界中真实蚂蚁的集体行为的观察,模拟而得到一种仿生优化算法,它具有很好的并行性,分布性.根据蚂蚁群体不同的集体行为特征,蚁群算法可分为受蚂蚁觅食行为启发的模型和受孵化分类启发的模型,受......
  • m基于混合高斯模型和帧间差分相融合的自适应视频背景提取算法matlab仿真
    1.算法仿真效果matlab2013b仿真结果如下: 混合高斯模型背景提取:          利用混合高斯模型处理这段视频,黑车已经运动离开画面左下角时,左下角仍然有黑车,这种现象我们称为“鬼影”。其产生的原因是由于混合高斯模型是对图像每个像素建立模型,所以算法的更新速度......
  • 零样本文本分类应用:基于UTC的医疗意图多分类,打通数据标注-模型训练-模型调优-预测部署
    零样本文本分类应用:基于UTC的医疗意图多分类,打通数据标注-模型训练-模型调优-预测部署全流程。1.通用文本分类技术UTC介绍本项目提供基于通用文本分类UTC(UniversalTextClassification)模型微调的文本分类端到端应用方案,打通数据标注-模型训练-模型调优-预测部署全流程,可快速......
  • m厌氧间歇发酵动态控制系统matlab仿真,对比PID控制和MPC控制
    1.算法描述        生物发酵过程,其中稀释速率和供料基质浓度可作为操作变量。出口的细胞浓度或生物浓度、基质浓度以及产品浓度是过程的状态变量。例如在生产酒精的发酵过程中,是酵母浓度,是葡萄糖浓度,而是乙醇浓度。假设发酵培养基是单一均相生长的有机体,则广泛采用的非构......
  • 基于GA遗传优化的列车交路方案matlab仿真
    1.算法描述        列车交路是指列车在规定的运行线路上往返运行的方式,规定了列车运行区段、折返车站以及按不同交路运行的列车对数.        机车交路并不是完全意义的指标或标准,但在运输体系中是一个体现模式作用对运输组织工作重要的技术经济课题。对于新建......
  • m通过手动提取图像特征点实现医学图像配准和拼接matlab仿真
    1.算法描述       图像配准(imageregistration)是对同一场景在不同条件下得到的两幅或多幅图像进行对准、叠加的过程。同一场景的多幅图像会在分辨率、成像模式、灰度属性、位置(平移和旋转)、比例尺度、非线性变形及曝光时间等方面存在很多差异。概括来说,图像配准问题是以在......
  • N1、Pytorch文本分类入门
    一、背景介绍¶本节是一个使用PyTorch实现的简单文本分类实战案例。在这个例子中,我们将使用AGNews数据集进行文本分类。AGNews(AG'sNewsTopicClassificationDataset)是一个广泛用于文本分类任务的数据集,尤其是在新闻领域。该数据集是由AG'sCorpusofNewsArticles收......
  • 【RDH隐藏】基于减少直方图移位中像素的无效移位的可逆数据隐藏附matlab代码
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。......