四种支持向量机工具箱使用概念
发布日期:2021-06-29 13:12:51 浏览次数:2 分类:技术文章

本文共 2662 字,大约阅读时间需要 8 分钟。

一、四种支持向量机工具箱的使用概念

[1]模式识别基本概念

模式识别的方法有很多,常用有:贝叶斯决策、神经网络、支持向量机等等。特别说明的是,本文所

谈及的模式识别是指“有老师分类”,即事先知道训练样本所属的类别,然后设计分类器,再用该分

类器对测试样本进行识别,比较测试样本的实际所属类别与分类器输出的类别,进而统计正确识别率。

正确识别率是反映分类器性能的主要指标。

分类器的设计虽然是模式识别重要一环,但是样本的特征提取才是模式识别最关键的环节。试想如果

特征矢量不能有效地描述原样本,那么即使分类设计得再好也无法实现正确分类。工程中我们所遇到

的样本一般是一维矢量,如:语音信号,或者是二维矩阵,如:图片等。特征提取就是将一维矢量或

二维矩阵转化成一个维数比较低的特征矢量,该特征矢量用于分类器的输入。关于特征提取,在各专

业领域中也是一个重要的研究方向,如语音信号的谐振峰特征提取,图片的PCA特征提取等等。

[2]神经网络模式识别

神经网络模式识别的基本原理是,神经网络可以任意逼近一个多维输入输出函数。以三类分类

:I、II、III为例,神经网络输入是样本的特征矢量,三类样本的神经网络输出可以是[1;0;0]、[0;1;0]、

[0;0;1],也可以是[1;-1;-1]、[-1;1;-1]、[-1;-1;1]。将所有样本中一部分用来训练网络,另外一部

分用于测试输出。通常情况下,正确分类的第I类样本的测试输出并不是[1;0;0]或是[1;-1;-1],而

是如[0.1;0;-0.2]的输出。也是就说,认为输出矢量中最大的一个分量是1,其它分量是0或是-1就

可以了。

[3]支持向量机的多类分类

支持向量机的基本理论是从二类分类问题提出的。我想绝大部分网友仅着重于理解二类分类问题

上了,我当初也是这样,认识事物都有一个过程。二类分类的基本原理固然重要,我在这里也不

再赘述,很多文章和书籍都有提及。我觉得对于工具箱的使用而言,理解如何实现从二类分类到

多类分类的过渡才是最核心的内容。下面我仅以1-a-r算法为例,解释如何由二类分类器构造多类

分类器。

二类支持向量机分类器的输出为[1,-1],当面对多类情况时,就需要把多类分类器分解成多个二类

分类器。在第一种工具箱LS_SVMlab中,文件Classification_LS_SVMlab.m中实现了三类分类。

训练与测试样本分别为n1、n2,它们是3 x 15的矩阵,即特征矢量是三维,训练与测试样本数目

均是15;由于是三类分类,所以训练与测试目标x1、x2的每一分量可以是1、2或是3,分别对应

三类,如下所示:

1-a-r算法定义:对于N类问题,构造N个两类分类器,第i个分类器用第i类训练样本作为正的训练

样本,将其它类的训练样本作为负的训练样本,此时分类器的判决函数不取符号函数sign,最后的

输出是N个两类分类器输出中最大的那一类。

在文件Classification_LS_SVMlab.m的第42行:codefct = 'code_MOC',就是设置由二类到多类

编码参数。当第42行改写成codefct ='code_OneVsAll',再去掉第53行最后的引号,按F5运行该

文件,命令窗口输出有:

比较上面的old_codebook与codebook输出,注意到对于第i类,将每i类训练样本做为正的训练样本,

其它的训练样本作为负的训练样本,这就是1-a-r算法定义。这样通过设置codefct ='code_OneVsAll'

就实现了支持向量机的1-a-r多类算法。其它多类算法也与之雷同,这里不再赘述。值得注意的是:对

于同一组样本,不同的编码方案得到的训练效果不尽相同,实际中应结合实际数据,选择训练效果最好

的编码方案。

[4]核函数及参数选择

常用的核函数有:多项式、径向基、Sigmoid型。对于同一组数据选择不同的核函数,基本上都可以得

到相近的训练效果。所以核函数的选择应该具有任意性。对训练效果影响最大是相关参数的选择,如:

控制对错分样本惩罚的程度的可调参数,以及核函数中的待定参数,这些参数在不同工具箱中的变量名

称是不一样的。这里仍以Classification_LS_SVMlab.m为例,在第38、39行分别设定了gam、sig2的值,

这两个参数是第63行trainlssvm函数的输入参数。在工具箱文件夹的trainlssvm.m文件的第96、97行有

这两个参数的定义:

% gam   : Regularization parameter

% sig2   : Kernel parameter (bandwidth in the case of the 'RBF_kernel')

这里gam是控制对错分样本惩罚的程度的可调参数,sig2是径向基核函数的参数。所以在充分理解基本概

念的基础上,将这些概念与工具箱中的函数说明相结合,就可以自如地运用这个工具箱了,因此所以最好

的教科书是函数自带的函数说明。

最佳参数选择目前没有十分好的方法,在Regression_LS_SVMlab.m的第46至49行的代码是演示了交叉验

证优化参数方法,可这种方法相当费时。实践中可以采用网格搜索的方法:如gam=0:0.2:1,sig2=0:0.2:1,

那么gam与sig2的组合就有6x6=36种,对这36种组合训练支持向量机,然后选择正确识别率最大的一组参

数作为最优的gam与sig2,如果结果均不理想,就需要重新考虑gam 与sig2的范围与采样间隔了。

[5]由分类由回归的过渡

LS_SVMlab、SVM_SteveGunn这两个工具箱实现了支持向量机的函数拟合功能。从工具箱的使用角度来看,

分类与回归的最大区别是训练目标不同。回归的训练目标是实际需要拟合的函数值;而分类的训练目标是1,2,

…N(分成N类),再通过适当的编码方案将N类分类转换成多个二类分类。比较文件Regression_LS_SVMlab.m

与Classification_LS_SVMlab.m的前几行就可以注意到这一点。另外,分类算法以正确分类率来作为性能指标,

在回归算法中通常采用拟合的均方误差(mean square error, MSE)来作为性能指标。

二、近期总结

算法代码下载到比较全的,但是成效不是很大还在把别人代码看懂的阶段。又从网上找到SVM的4个PPT课件,

逐步理解了相关步奏。

转载地址:https://chalk.blog.csdn.net/article/details/46842699 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:ibsvm实现简单线性分类
下一篇:matlab求解条件极值对线性数据分类

发表评论

最新留言

很好
[***.229.124.182]2024年05月01日 15时13分16秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

效率提升法则:高效人士不会去做的4件事 2019-04-29
8.PostgreSQL约束 2019-04-29
【技术分享】使用AES加密技术保障数据安全 2019-04-29
【应用实例】布线多?成本高?不可靠?泽耀方案没烦恼! 2019-04-29
数据可视化工具:Matplotlib绘图 2019-04-29
用Python写个超级小恐龙跑酷游戏,上班摸鱼我能玩一天 2019-04-29
闺蜜看我用Python画了一幅樱花图,吵着要我给他介绍程序员小哥哥 2019-04-29
【Python爬虫实战】知乎热榜数据采集,上班工作摸鱼两不误,知乎热门信息一网打尽 2019-04-29
自从我学会了数据挖掘Matplotlib、Numpy、Pandas、Ta-Lib等一系列库,我把领导开除了 2019-04-29
Python抓取哔哩哔哩up主信息:只要爬虫学的好,牢饭吃的早 2019-04-29
有个码龄5年的程序员跟我说:“他连wifi从来不用密码” 2019-04-29
领导让我整理上个季度的销售额,幸好我会Python数据分析,你猜我几点下班 2019-04-29
【Python爬虫实战】为何如此痴迷Python?还不是因为爱看小姐姐图 2019-04-29
2021年6月全国程序员薪资出炉,大佬您上榜了吗? 2019-04-29
零基础自学Python,你也可以实现经济独立! 2019-04-29
ElasticSearch与Mysql对比(ElasticSearch常用方法大全,持续更新) 2019-04-29
数字化转型的主干道上,华为云以“三大关键”成企业智能化推手 2019-04-29
数字化为何不走“捷”“径”? 2019-04-29
和总裁、专家交朋友,华为云助推政企智能化升级又做到前面去了 2019-04-29
BCOP章鱼船长,6月22日晚上8点上线薄饼 2019-04-29