SlideShare a Scribd company logo
1 of 38
Download to read offline
0	
	
毕业论文(设计)	
	
设计(论文)题目
基于支持向量机的分类方法研
究及仿真	
	
姓	 	 	 	 名:	 张韵偲	
学	 	 	 	 号:	 201200800740	
学	 	 	 	 院:	 机电与信息工程学院	
专	 	 	 	 业:	 自动化	
年	 	 	 	 级	 2012 级	
指导教师:	 张立	
	
	 	 	 	 	 	 	 	 	 	 	 	 年	 	 	 	 	 月	 	 	 	 日
山东大学(威海)毕业论文	 	 目录	
1	
	
目 录	
摘要……………………………………………………………………1
Abstract………………………………………………………………2
一、绪论..............................................1
1.1 选题背景与意义 .................................1
1.2 基于统计学习的机器学习与 SVM 发展历程 ...........1
1.3 SVM 国内外研究现状 .............................2
1.4 论文架构 .......................................3
二. SVM 的理论基础.....................................4
2.1 机器学习与 SVM 的概念 ...........................4
2.1.1 机器学习..................................4
2.1.2SVM .......................................4
2.2VC 维与推广能力 .................................4
2.3 泛化误差界与结构风险最小化 .....................5
2.4 SVM 算法的优点 .................................6
三.SVM 的算法设计与改进................................8
3.1 线性分类器 .....................................8
3.1.1 间隔与最优超平面..........................8
3.1.2 线性分类器的数学模型 .....................9
3.1.3 线性分类器的求解.........................10
山东大学(威海)毕业论文	 	 	 目录	
2	
	
3.2 非线性分类器 ..................................11
3.2.1 引入松弛变量法...........................11
3.2.2 核函数法(kernel methods)...............12
3.3 实际情况下的改进建议 ..........................15
四. SVM 算法的 MATLAB 仿真研究.........................16
4.1 实验前准备与介绍 ..............................16
4.1.1 libsvm 与 matlab .........................16
4.1.2 实验步骤.................................17
4.2SVM 算法在 UCI 数据集上的应用——SVM 算法的二分类简
单应用 ...............................................18
4.2.1UCI 数据集及其中 WINE 数据集介绍...........18
4.2.2wine 数据集实验步骤.......................18
4.3SVM 算法在划分光谱上的应用——核函数的选择和参数选
择 ...................................................20
4.3.1 光谱简介及分析意义.......................20
4.3.2K 折交叉验证法............................20
4.3.3 实验过程.................................20
4.5.4 实验结果及改进...........................24
4.5.5 光谱分类实验中核函数的选择以及参数选择小结
..................................................28
五.总结与展望 ........................................29
山东大学(威海)毕业论文	 	 	 目录	
3	
	
谢辞 .................................................30
参考文献 .............................................31
山东大学(威海)毕业论文	 	 摘要	
1	
摘 要	
支持向量机(SVM)是一种基于统计学习理论的机器学习方法。
它在解决小样本、非线性、高维模式识别的问题时表现出良好的性
能,因此被广泛应用于学术研究与工业发展中的分类分割、模式识
别、函数回归等方面的问题解决。本文主要研究支持向量机的分类
问题。文章将从以下几个方面展开。
首先介绍了 SVM 算法的研究背景及现状和统计学习的基本方法,
再引入机器学习及 SVM 的基本理论,并通过数学推导把 SVM 模型转
化为一个凸规划的问题寻找全局最优解来得到对应的最优分类面。
随后通过在 Matlab 平台上由浅入深的算法验证和参数改进的仿真
实验来研究 SVM 算法的作用效果。先通过对 UCI 标准数据集的 wine
样本集实现最基本的分类和预测,由此进行第一步基础实验验证;
再进阶地通过对于 SDSS 天文数据的分类来加深 SVM 算法的现实研
究意义。最后再对于本论文进行概括总结。
关 键 词
支持向量机 分类 参数选择 核函数
山东大学(威海)毕业论文	 	 Abstract	
2	
Abstract
SVM (Support Vector Machine) is one kind of machine learning
methods based on statistic learning theory. It has the excellent
performance when it is applied to small sample, non-linear and
high-dimensional models. So, SVM is widely adopted in academic
researches and industrial activities, especially the affairs on
classification, pattern recognition, the regression of functions and so
on. The thesis concentrates on the classification problems on SVM.
It develops by these steps:
In the beginning, this thesis originates from the background
information of SVM and basic introduction of Statistic Learning
Theory. Then it introduces the basic theory on machine learning and
SVM. Later on, by using a convex optimization programming model,
the global optimal solution of SVM problems could be found. Then,
based on wine dataset of UCI and spectrum data of SDSS, this paper
focuses on the simulation of classification and optimization
algorithms by using kernel functions and cost function on Matlab
with Libsvm library. Such simulations and applications connect
SVM to real-world problem-solving. Finally, the thesis draws a
山东大学(威海)毕业论文	 	 	 Abstract	
3	
	
conclusion on SVM classification and summarizes the whole
passage.
Key words
SVM (Support Vector Machine) Classification Parameter
selection Kernel
山东大学(威海)毕业论文	 	 第一章	 绪论	
1	
一、绪论	
1.1 选题背景与意义	
随着信息社会的迅速发展,人们获取信息等能力不断增强,应用已有信息来
分析预测的要求也越发迫切。而这些信息通常以各式各样的数据形式存在。在各
行各业中,海量的数据亟待良好的工具来进行分析和预测,以便能从信息中提取
有效信息用于预测和决策。例如近期热点 Google 公司开发的	 AlphaGo 软件可以
和专业级别的围棋选手相抗衡。AlphaGo 是一款 AI 在围棋领域的智能程序,该程
序采用了两个深度神经网络,即通过价值网络计算局面,用决策网络选择落子,
大幅降低了搜索的广度与深度。它曾于 2015 击败欧洲围棋的冠军、职业二段选
手樊麾,并于 2016 年 3 月战胜世界围棋冠军、职业九段选手李世石。再有,在
医疗方面,Google 旗下人工智能公司 DeepMind 已获得许可,能够访问英国国家
医疗服务系统(NHS)的约 160 万病人数据,帮助医生护士诊断急性肾脏损伤病
例。再有例如 IBM 推出的认知商业模式,用	 Watson 计算机处理海量的数据帮助
商业公司进行决策、更精准的预测和发掘市场,并根据客户偏好推荐适合的金融
产品;Watson 计算机同时也结合物联网、云计算技术来提升生活生产质量…这些
前沿的科技和为我们生活带来改变的技术都离不开“机器学习”的领域。如何让
机器通过海量数据的选择、学习后对预测和决策提供科学的依据,并推动社会的
发展产生成为了一个研究热点和信息社会发展的迫在眉睫的焦点。而 SVM 正是
这样一种可以广泛应用于各行各业的表现优良的数据分析和预测的工具。	
1.2 基于统计学习的机器学习与 SVM 发展历程	
由于在信息社会发展中机器学习在数据处理、预测上的重要意义,研究机
器学习及相关知识在现代社会有非常大的应用价值。机器学习的基本思路是根
据样本集的数据来建立模型,找到该样本集的规律,因此,对于那些无法观测
的所需数据或是未来的发展趋势就可以通过此规律进行预测。在经过很长一段
时间的研究后,机器学习的理论框架还没有哪一种被共同接受。	
该理论框架大抵能够分为三种:	
(1)参数估计方法。这是一种非常经典的统计方法。基于该统计方法发
展而出的应用方法有许多,如神经网络法、模式识别。在应用参数估计法时,
必须已知参数的特征,然后通过对选取样本的训练学习去估计其中的参数值。
但也正因为此原理的特征,这个方法在实际应用时局限性很大。①它需要已知
样本分布形式,这在实际中可能难以得到,甚至在某些情况中无法得到这样的
分布形式;②现有学习方法多基于经典统计学,而经典统计的研究对象是样本
数目趋于无穷大情况下的渐近理论,这与实际问题的情况并不相符。因为在实
际问题中样本点通常为有限集,与理论假设是有差别的,因而有些在经典理论
研究上表现良好的学习方法在解决现实问题时并不那么理想。	 	
(2)经验非线性方法。该方法也在业界有广泛的应用,如 ANN(人工神
经网络)。该方法利用已有了解的样本构建非线性模型,能够通过经验学习改
山东大学(威海)毕业论文	 	 	 第一章	 绪论	
2	
	
善上述参数估计方法在处理有关直觉、非结构化数据方面的缺陷,使之能够自
动适应和实时学习。在处理一些传统方法难以处理的问题上有着很好的效果。
但不足之处在于没有一种统一的数学理论对该方法做理论支撑。	 	
(3)统计学习理论。统计学习理论有着坚实的理论基础,	 与前文所提及
的经典统计学相比来看,该理论能够在解决有限数量样本集的学习问题时提供
统一构架。因此在寻找小样本问题的机器学习规律时该理论有很好的适用范围,
也就是在样本有限和要求渐近性能的情况下能够得到最优解。实际上既是数学
家、统计学家又是计算机科学家的 Vapnik	 早在 1963 年就已提出支持向量的概
念;在 1968 年他与另一名苏联数学家 A.Chervonenkis 提出了以他们两命名的
统计学中“VC 维”的概念;在 1974 年瓦普尼克又提出结构风险最小化的原则,
使得统计学习理论在 20 世纪七十年代就已经成型。直到 Vapnik 等诸多苏联科
学家在苏联解体后把这些俄文材料和科学思想带到美国,统计学习的理论才在
西方学术届引起重视,统计学习理论、支持向量机、核方法在 20 世纪末的时
候大红大紫。	
Vapnik 的 VC 维理论是统计学习理论的重要核心概念,它能够描述函数集
或学习机器的复杂性和学习能力,机器学习中许多关于统计学习的一致性、泛
化能力、收敛速率等相关概念都是由 VC 维理论延伸发展而来。而本文研究的
SVM 算法正是基于 VC 维理论和结构风险最小化的原理,因此 SVM 算法在解决
小样本、非线性和高维模式识别的问题中能够表现良好,在某些现实问题的解
决上具有一定的优势。越来越多对 SVM 算法有过研究、应用后的研究人员认
为,SVM 算法正在成为机器学习算法里又一个研讨热点,;再有,因为 SVM 算
法在业界的实践应用表现良好,学者和研究人员也认为该机器学习算法将极大
地推进机器学习理论发展和技术实践。这也是选择本论文致力于研究该课题的
原因。	
1.3	SVM 国内外研究现状	
SVM 算法原本是用于解决一个二分类问题的方法,而在实际应用中 SVM
算法结合其他算法进行改进后可以拓展延伸到各个领域进行应用研究,还可以
进阶地得到 SVM 的多分类算法使该方法能够更为广泛地应用在各行各业,满
足更为具体的需求。	
SVM 在图像分类识别中应用广泛,能够通过分割图像得到人们所关注的重
点内容。它通过图像中像素点的特征信息生成相应的特征向量矩阵,然后对训
练集的样本点进行训练,再通过在测试集上的检验测试来得到分类准确度,最
终可以通对一些算法来实现自动选择最优的分类器,得到图像的划分。比如胡
振邦的基于 Latent	 SVM 算法结合隐变量可以应用在人体的目标检测与跟踪方
法的研究,能够在物联网、城市的安全建设、智能交通、智能机器人、电子娱
乐等多方面应用,造福于人们的生活[1]
。也可以通过基于 SVM 算法的对视频中
图像的识别与诊断技术来检测和保障通信系统。	
SVM 在医疗方面也有相应的应用。通过对大量的药品成分分析可以开发新
的有效药物,还可以根据对大量的病例样本分析得到病理方面的经验结论帮助
人们尽早发现、更好的治疗疾病。如王朝勇提出了一种基于黎曼和相似度量的
核函数改进法,还针对标准 LS-SVM 求解速度慢和易出现病态方程组的问题进
山东大学(威海)毕业论文	 	 	 第一章	 绪论	
3	
	
行了改进,还提出了基于统计学习的特征向量处理方式,把这些算法及其改进
应用到了药品成分和肿瘤诊断方面[2]
。	
SVM 算法在预测方面的应用也有很多。比如何厅厅,赵艳玲等通过对江苏
省 1996-2009 年的耕地变化为例子,利用粒子群算法(PSO)的全局搜索能力
优化 SVM 算法,并结合 LSSVR 和逆学习法对耕地的变化趋势进行预测,为土
地资源可持续发展提供了重要的参考意义[3]
。	
SVM 在现代发达的信息社会中处理网络上的海量数据也非常有用。
Blanzieri 把 SVM 临近算法应用于垃圾邮件分类的应用中,先用 KNN 找到临近
标记信息,再应用这些标记信息作为特征通过 SVM 算法结合得到垃圾邮件的
分类器[4]
。	
SVM 的相关改进与应用还有很多,解决了很多实际问题。因此本文通过对
SVM 算法的设计与改进后应用在 SDSS 光谱数据上分类,从而践行 SVM 的实际
意义。	
1.4 论文架构	
本文旨在研究支持向量机的分类方法以及通过仿真实验来验证分类改进
方法。第一章概括介绍了 SVM 算法研究的现实意义、国内外现状以及对建立
在统计学习方法上的机器学习做了历史回顾;第二章介绍了机器学习中关于
SVM 的相关概念和基础理论;第三章提出了 SVM 的数学模型,并利用核函数
以及松弛变量对算法改进;第四章首先在 matlab 平台上应用 libsvm 函数库对
UCI 标准数据集中 wine 数据集进行二分类,再进阶地对 SDSS 高维光谱数据集
进行分类并选择其最优核函数及参数;第五章对全文进行了概括总结,并对
SVM 的发展和自己的进一步学习做出展望。
山东大学(威海)毕业论文	 	 第二章	 SVM 的理论基础	
4	
二.	SVM 的理论基础	
2.1 机器学习与 SVM 的概念	
2.1.1 机器学习	
机器学习致力于通过计算的手段利用经验来改善系统性能。它的本质上就
是一种对问题真实模型的逼近。在计算机系统里,“经验”常以数据的形式存
在,机器通过模拟人类“学习”的过程由这些数据得到一些模型的算法,然后
能在面对新情况时应用已产生的模型算法得到一个判断。机器学习的目标是使
学得模型能较好地适用于“新样本”,也就是泛化能力强。	
根据训练集是否有标记信息的情况,机器学习的任务可大致划分为两大类:
“监督学习”(supervised	learning)和“无监督学习”(unsupervised	learning)。
监督学习的代表有分类和回归,无监督学习的代表有聚类。本文所研究的 SVM
(Support	Vector	Machine)算法属于监督学习中的二分类问题。	
2.1.2SVM	
机器学习从前期研究的 Fisher	 分类器到如今大热的人工神经网络都是通
过验证模型在训练集上的学习能力来评判分类器的,也就是以“经验风险最小
化原则”(ERM)作为分类目标。然而以经验风险作为原则进行的分类实验存
在着“过拟合”的问题,此时该模型的泛化能力非常不好。而支持向量机(SVM)
是科尔特斯(Cortes)和瓦普尼克(Vapnik)在 1995 年率先提出的一种建立在
统计学习理论上的机器学习方法。SVM 在针对小样本问题、非线性问题和高维
模式识别问题中有着独特的优势和出色的表现,并且在其他机器学习问题中结
合 SVM 算法的推广应用能够有所帮助。SVM 最明显的特征是基于瓦普尼克所
提出的结构风险最小化(SRM)原则,	 即在分类函数复杂性和样本复杂性之间
折中选择,尽量提高得到模型的泛化能力,使该模型分类性能表现良好。	
SVM 问题可以通过数学方式描述成一个凸优化的规划问题来解决,因此已
有的解决凸优化问题的方法都有可以用来进行目标函数的全局最优解搜寻,从
而得到原问题的最优解。相比较而言,其他分类方式(如人工神经网络)通常
只能获得局部最优解而难以找出全局最优解,因为这些分类方式都采用一种基
于“贪心学习”的策略来对假设空间进行搜索。因此 SVM 算法在获取全局最
优解的方面有很好的优势,也因此它逐步被工、业界广泛应用与研究。	
2.2VC 维与推广能力	
VC 维(Vapnik-Chervonenkis	 Dimension)的定义:对一个指示函数集,如
果存在 H 个样本能够被函数集中的函数按所有可能的 2 的 H 次方种形式分为
两类,则称函数集能够把 H 个样本打散;函数集的 VC 维就是它能打散的最大
样本数目 H[5]
。若对任意数目的样本都有函数能将它们打散,则函数集的 VC
维是无穷大[5]
。	
VC 维是能够表现一个函数集学习能力优劣性的最好方式。VC 维越高,原
山东大学(威海)毕业论文	 	 	 第二章	 SVM 的理论基础	
5	
	
问题越复杂,机器学习也会越发复杂。SVM 是建立在 VC 维理论上的,同时需
要满足 SRM 原则。也正是由于在 SVM 中关注的是 VC 维而不是样本维度,因
此在涉及到样本高维问题时 SVM 能够得到很好地解决。这是 SVM 的特点和优
势。	
2.3 泛化误差界与结构风险最小化	
虽然在选择一个假设对应的分类器后无法得到其真实误差,但是我们可以
用一些能够获得的量来逼近真实误差,从而得到对分类器的优劣性描述。最直
观表示方法就是经验风险 Remp(w),即训练样本在分类器的上的误差。在过去,
经验风险最小化(ERM)是机器学习的训练目标;后来通过不断地实践研究发
现,虽然许多分类器在训练集上能够达到很高的正确率,但是推广应用到真实
的情况下进行分类时却表现泛泛甚至极差。如此表现的原因是:在训练学习样
本集的时候选择了一个较为复杂的分类函数,该分类器的 VC 维非常高,虽然
使模型能准确地记住每一个训练集上的样本点,但却容易误分样本以外的其他
数据。随后研究人员发现 ERM 原则适用的大前提是:经验风险要确实能够逼
近真实风险。而在实际情况中,经验风险不一定能够逼近真实风险,因此仅仅
根据 ERM 作为训练目标是欠妥的。由此引入了泛化误差的概念作为 SVM 的新
的训练目标。	
泛化误差界公式:	
)/()(Re)( hnmpR F+£ ww 	 	 	 	 	 	 	 	 	 	 	 	 	 	 (2.1)	
其中, )(wR 表示真实风险, )(Re wmp 表示经验风险, )/( hnF 表示置信风
险。	
(1)经验风险 )(Re wmp :即分类器在给定样本上的误差,是基于已知经
验的,可确定。	
(2)置信风险 )/( hnF :即多大程度可信分类结果,只能估算置信区间(上
界)。与两个量有关:	
①样本数量 n。样本数量 n 越大,置信风险越小;	
②分类函数的 VC 维数 h。VC 维数 h 越大,分类器在其他样本
上的推广能力就越差,置信风险会变大。	
置信范围∅(n/h)随 n/h 的变化趋势如下图所示:
山东大学(威海)毕业论文	 	 	 第二章	 SVM 的理论基础	
6	
	
	
图 2.1	 	
n 为训练样本数,h 为 VC 维数,∅(n/h)为置信范围。	
3)真实风险 )(wR :即结构风险,使用的拟合模型在任意样本下得到的误
差,实际所得误差:	
真实风险	 =	 经验风险	 +	 置信风险	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 (2.2)	
	
图 2.2	 关于 VC 维与风险的结构风险最小化示意图	
SVM 正是一种 SRM 的算法。	
上图根据泛化误差公式画出了。由该图所描述的 h 与风险的关系可得:随着
VC 维的增加经验风险将减小,置信范围会增加。真实风险比经验风险和置信风
险都更大一些。仅要求经验风险最小化(ERM)会出现“过学习”的状况,不利
于泛化;仅要求置信风险够小又会出现“欠学习”的状态,不能够很好的抓住样
本集的特征进行拟合。而结构风险最小化(SRM)能够保证二者达到一个平衡的
状态,使真实风险尽量小,在实际应用中表现良好。	
2.4	SVM 算法的优点	
1)小样本:与问题的复杂程度相比,SVM 算法要求的真正的样本数相对较
少。这是因为支持向量是 SVM 的训练后得到的结果,最终产生的分类面是由支
持向量决定。
山东大学(威海)毕业论文	 	 	 第二章	 SVM 的理论基础	
7	
	
2)鲁棒性:因为仅由少数的支持向量决定分类面,所以这使得该分类器能
够很好的维持其原有特性。这主要体现在:	
①减少或者增加不是支持向量的样本点对分类模型不会产生任何的影响;	
②支持向量样本集具有一定的鲁棒性;	
③在某些实际情况中,SVM 对核函数的选取并不敏感。	
3)非线性:在线性不可分时,SVM 能够很好的作用找到最优分类面,这可
以通过加入松弛变量得到惩罚函数以及各类核函数技术来实现。在核函数法中,
SVM 利用内积核函数替代向高维空间的非线性映射来实现转化。核函数的应用
与改进有还很大的空间。这样对于非线性问题的处理在实际应用中非常有效。	
4)高维模式的识别:相比样本集处于高维的情况下,SVM 得到的分类器却
十分简洁。这也是因为仅由少数的支持向量就能确定分类器,而与样本空间维数
无关。计算的繁复程度也由此决定,因而能防止“维数灾难”的发生,不会给计
算机和存储带来麻烦。
山东大学(威海)毕业论文	 	 第三章	 SVM 的算法设计与改进	
8	
三.SVM 的算法设计与改进	
支持向量机(SVM)专门针对有限样本集的情况,通过将其转化为一个二
次寻优凸规划问题来得到全局最优解。对于非线性问题,支持向量机算法通过
对现实中的问题进行一系列非线性变换将其映射到高维特征空间里解决,从而
在高维空间中构造对应原问题的线性分类器来实现分类。	
3.1 线性分类器	
3.1.1 间隔与最优超平面	
定义一个数据集 niyxD iii ,...,2,1),,( == ,其中 ix 是特征向量, iy 是分类标
记。以一个二分类问题举例,则 iy 只有两个值+1,-1。	
SVM 分类器的最基本思想就是基于训练集 D 在样本空间中找到一个超平
面的划分,将不同类别的样本分开。划分超平面可由以下线性方程描述;	
0)( =+= bxwxf T
	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	(3.1)	
假设超平面 ),( bw 能将训练集中样本点正确分类,即对于 Dyx ii Î),( ,当
yi 分别等于+1,-1 时,有: 	
î
í
ì
-=<+
+=>+
1,0),(
1,0),(
yibx
yibx
i
i
w
w
	 	 	 	 	 	 	 	 	 	(3.2)	
如果限制样本和超平面最小距离为
||||
1
w
,则可得:	
î
í
ì
-=-£+×
+=³+×
1,1)(
1,1)(
yibx
yibx
i
i
w
w
	 	 	 	 	 	 	 	 	 	 	 	(3.3)	
即:	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 nibxy i
T
i ,...,2,1,1][ =³+×w 	 	 	 	 	 	 	 	 	 	(3.4)	
所有属于正类的点 x+
带入后有 1)( -³xf ,所有属于负类的点 x-
带入后有
1)( -£xf ,所有带入值介于+1 和-1 之间拒绝判断。距离超平面最近的使上式等
号成立的几个训练样本点,被称为“支持向量”(Support	Vector,SV)。(如下图
H1、H2 平面上带双圈的样本点即为支持向量。)
山东大学(威海)毕业论文	 	 	 第三章	 SVM 的算法设计与改进	
9	
	
	
图 3.1	 	 关于分类面、支持向量与分类间隔的图示	
定义一个样本点到某个超平面的间隔:	 	
][ bxy i
T
ii +×= wd 	 	 	 	 	 	 	 	 	 	 	 	(3.5)	
现在把w 和 b 归一化,那么间隔即写为:	
)x(g|
||||
ii
w
d
1
= 	 	 	 	 	 	 	 	 	 	 	 	 	
(3.6)	
式(3.6)为几何间隔,表示点到超平面的欧氏距离。	
这两个不同类别的支持向量到超平面的距离之和,也就是“分类间隔”为:
||||
2
||||
|)(|
2||2 0
ww
=´=´=D
xg
r 	 	 	 	 	 	 	 	 	(3.7)	
而几何间隔与误分次数存在以下关系:	
2
)
2
(
d
R
£误分次数 	 	 	 	 	 	 	 	 	 	 	 	 	 	(3.8)	
其中 δ 是样本集合到分类面的间隔, ||||max ixR = 。	
从式(3.8)可以看出,误分次数的上界是根据几何间隔 id 而定的。由上
式关系可得:当几何间隔越大时,误差上界就越小。因此几何间隔 id 成为衡量
一个解优质与否的标志,几何间隔最大化也成为 SVM 算法的训练目标。	
3.1.2	 线性分类器的数学模型	
求解 SVM 线性分类器的问题可以转化为一个规划问题。一个规划问题需
要找其求解目标和约束条件。
山东大学(威海)毕业论文	 	 	 第三章	 SVM 的算法设计与改进	
10	
	
由几何间隔的定义式可知,最大化几何间隔可以转化为找最小 |||| w ,而求
解 2
||||
2
1
w 与求解 |||| w 的最小完全等价且便于之后的运算与变换。因而规划问
题的目标是:	
2
,
||||
2
1
min w
w b
	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	(3.9)	
而由于归一化后相当于把间隔固定为 1,满足上面得到的:	
nibxy i
T
i ,...,2,1,1][ =³+×w 	 	 	 	 	 	 	 	 	 	 (3.10)	
因此,约束条件则可以写为:	
nibxyts i
T
i ,...,2,1,1][.. =³+×w 	 	 	 	 	 	 (3.11)	
所以,支持向量机的基本模型为:	
n,...,,i,]bx[y.t.s
||||
i
T
i
b,
min
211
2
1 2
=³+×w
w
w 	 	 	 	 	 	(3.12)	
对于如此一个凸二次规划,它一定有全局最优解,并且可以找到。	
3.1.3 线性分类器的求解	
对于上述的优化问题,其实求解的是 f(x),也就是求解w 和 b 两个参数的
进程。而在求得w 后找到某些样本带入后即可求得 b,因此,求解 f(x)也就是
求解w 。	
可以通过拉格朗日对偶问题得到:	
ni
xy
yts
xxyy
i
iii
ii
n
ji
jijiji
n
i
i
,...,2,1,0
0..
)(
2
1
max
1,1
=³
=
=
×-
å
å
åå ==
a
aw
a
aaa
	 	 	 	 	 	 (3.13)	
若 nii ,...,2,1,0 =³a 则称对应 xi	 为支持向量(SV),则最优超平面为:	
åÎ
=+×
SVx
iii
i
bxxy 0)(a 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	(3.14)	
从而将求解w 转化成了求解 ia ,这样的变型少了很大一部分不等式约束。	
最后得到分类决策函数:
山东大学(威海)毕业论文	 	 	 第三章	 SVM 的算法设计与改进	
11	
	
)),(sgn()sgn()(
1
**
å=
+=+×=
l
i
iiii bxxybxxf aw 	 (3.15)	
其中 sgn(.)为符号函数,l 为支持向量数目, *b 为分类阈值。式子中的求
和只对支持向量进行,即拉格朗日乘子中非零的 ia 	 对应的样本向量才会参与
求和运算。可以通过式(3.14)的求解a 得到分类决策函数与最优分类面。	
3.2 非线性分类器	
如果在某些情况下,原始样本空间中的训练集不存在一个能够将两类样本
正确划分的超平面,那么原问题就是线性不可分的。若此时仍用线性分类器来
分类,那么分类误差将会很大,因此这样的问题要求寻找非直线、更高维的分
离曲面。对于这样的问题,上述线性规划模型中的约束条件也不再成立。解决
样本空间非线性的问题有两个办法:	
1)引入松弛变量:对于某些近似线性可分的问题,即待分的两类样本点
仅有少量的交叉、融合的情况时通过线性划分造成的误分点很少,此时仍可考
虑线性划分,但需要对普通的线性分类器做一个改进,引入松弛变量来控制误
分情况。	
2)核函数法:可以将样本集从原始空间映射到一个更高维的特征空间,
使得该样本集在高维的特征空间里线性可分。如果原始空间是有限维的,那么
一定存在一个高维特征空间使样本线性可分,也就能够通过转化得到原问题的
解,找到一个合适的分类器。	
3.2.	1 引入松弛变量法	
3.2.1.1 引入松弛变量正则化	
式(3.12)表示的最基本的 SVM 分类器其实对应于“硬间隔”分类法。该方
法要求所有的样本点与分类面的间距都必须大于某个固定值,这可能会受到少
量距离较远的点(极有可能是“噪声”的点)的控制,反而使分类器不理想。
此时,引入松弛变量ξ加到原本要求的硬性阈值上,增加系统的容错性变为“软
间隔”分类法就能很好的改善这一状况。	
如此,约束条件将变为:	
nibxy T
i ,...,2,1,1])([ =-³+F× xw 	 	 	 	 	 	 	 	 	 	 	 	(3.16)	
描述损失(cost):	
一阶软间隔分类器: å=
l
i
i
1
x ;	 二阶软间隔分类器: å=
l
i
i
1
2
x 。	
如果引入一个成惩罚因子(C,cost),则原来的优化问题变为:
山东大学(威海)毕业论文	 	 	 第三章	 SVM 的算法设计与改进	
12	
	
nibxyts
C
T
i
l
i
i
b
,...,2,1,1])([..
||||
2
1
1
2
,
min
=-³+F×
+ å=
xw
xw
w 	 	 	 	 	(3.17)	
由拉格朗日对偶问题得:	
niCyts
xxyy
i
n
i
ii
n
i
i
n
i
n
j
jijiji
,...,2,1,0,0..
)(
2
1
min
1
11 1
=££=
-×
å
ååå
=
== =
aa
aaa
	 	 	 	 	 	 	 	 	(3.18)	
可得到最优w 与b ,从而找到全局最优解。	
3.2.1.2 引入松弛变量法的改进	
1)惩罚因子 C 的值意义:C 的值决定了对于离群点损失的重视程度。C 越
大,越不愿放弃离群点;若极端化 C 为无穷大,则不会放弃任何一个离群点进
行划分,即为硬间隔分类。	
2)惩罚因子 C 的最优值选取:参数 C 不是变量,而是根据每一个 C 值解
出一个线性分类器,再用测试数据检验分类器质量,之后取下一个 C 值重复以
上步骤。根据多个 C 值得到的线性分类器在测试集上的分类准确度来选取参数
C 的最优值。	
3)惩罚因子 C 的推广引用:求解的目标函数可以根据样本点的重要程度
给出相应不同的 C,则可以用于解决分类问题中的样本偏斜(unbalanced)问
题。	
3.2.2 核函数法(kernel	methods)	
3.2.2.1 核函数法原理	
如果在某些分类问题中不能由线性分类器直接划分,则可以考虑构造一个
新的特征向量使问题能够转化而得到划分。因此我们考虑将低维空间里的特征
向量通过一个映射(非线性变化)向高维空间进行转化,使得转化后能在高维
空间中找到最优分类面。	
	
图 3.2	 从低维空间向高维空间转化
山东大学(威海)毕业论文	 	 	 第三章	 SVM 的算法设计与改进	
13	
	
即找到非线性变换: pmRxRx mP
>ÎF®ÎF ,)(: ,	
则映射后原问题变为:	
niCyts
xxyy
i
n
i
ii
n
i
i
n
i
n
j
jijiji
,...,2,1,0,0..
))()((
2
1
1
11 1
min
=££=
-F×F
å
ååå
=
== =
aa
aaa
a
	 	 	 	 	 (3.19)	
由之前的数学推导可知,实际上在高维空间的计算过程中,只需要求得向
量的内积 Φ(xi)Φ(xj)就能找到分类面。而由于现实情况中特征向量维数可能会
很高,则在实际运算过程中的内积计算可能会因运算量过大而导致一些问题。
统计学习理论指出,根据 Hilbert-Schmidt 原理。只要一种运算满足	 Mercer 条
件,它就对应某一变换空间中的内积[6]
,基于此前提,可以通过引入核函数 K(.)
的方法来求得高维空间里的向量内积,从而得到高维空间中的最优分类面。而
核函数正是这样一种应用。	
核函数 K(.):	
))()((),( ji xxXjXiK FF= 	 	 	 	 	 	 	 	 	 	 	 	 (3.20)	
引入核函数后原问题写做:	
niCyts
XjXiKyy
i
n
i
ii
n
i
i
n
i
n
j
jiji
,...,2,1,0,0..
)),(
2
1
1
11 1
min
=££=
-
å
ååå
=
== =
aa
aaa
a
	 	 	 	(3.21)	
在求解过程中把该问题当做线性可分来做,而在内积时用核函数 K(.)来计
算,从而求得a ,再与选定的核函数进行结合则可求得最优分类器。引入核函
数的分类决策函数为:	
)),(sgn()sgn()(
1
**
å=
+=+×=
l
i
iiii bxxKybxxf aw 	 	(3.22)	
3.2.2.2 核函数	
只要满足了Mercer条件的函数都可以作为核函数使用。常用的核函数有:	
(1)线性核函数:	
ji xxXjXiK ×=),( 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 (3.23)	
线性核函数是最普通和低级的核函数,当样本在低维空间可分时可用此核
函数计算内积,求得线性分类器。	
(2)多项式核函数:	
q
ji cxxXjXiK ])[(),( +×= 	 	 	 	 	 	 	 	 	 	 	 	 (3.24)	
属于全局核函数,因此其局部特性较差,距离分类面很远的样本点也能对
分类器产生影响。参数 q 是指核函数的维度。q 越大代表映射维度越高越容易
山东大学(威海)毕业论文	 	 	 第三章	 SVM 的算法设计与改进	
14	
	
分类,但计算的复杂程度也因此增加。但需注意,复杂的分类器虽然能够在训
练集上得到很好的学习效果,但有可能因为过拟合而推广性差。	
(3)高斯核函数(RBF 核):	
)||||exp(),( 2
ixxXjXiK --= g 	 	 	 	 	 	 	 	 	 	 	 	 (3.25)	
高斯核函数是适用范围较广的核函数。对于较近的点有很好的分类效果,
局部性能非常好。参数γ为核函数的作用范围,但也需注意γ越大推广性越差,
全局性表现较差。	
以s 为参数的高斯径向基函数形式:	
)
||||
exp(),( 2
2
s
ixx
XjXiK
-
-= 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	(3.26)	
(4)sigmoid 核函数:	
sigmoid 核函数相当于双层神经网络,在 SVM 应用较少,应用时也需要满
足一些条件。	
推广:	
现实问题抽象成 SVM 模型解决的时候,可以通过结合松弛变量与核函数
的方式来达到线性可分的状态,从而找到合适的分类器。	
3.2.2.3 核函数法的改进	
(1)核函数的选取	
在解决实际问题时,要根据以上提及的四种核函数特性以及数据集的特征
来选择合适的核函数。	
①对于规模较小且维数较低的分类问题,上述四种核函数都可以分别采用,
并选取核函数的最优参数使模型达到最好的效果。此时通过这四种核函数得到
的分类器都有很好的泛化能力[7]
;	
②对于样本数目较大的分类问题,高斯径向基核函数及 sigmoid 核函数较
为适用,研究发现这两个函数在收敛方面的特性明显好于多项式函数[8]
;	
③对于输入向量维数较高的模式识别问题,多项式核函数和高斯核函数都
可以用于分类[9]
;	
综合考虑各种情况,无论维度高低、样本数量多少,高斯核函数均被视为
比较合理的理想选择,同时它还具有较宽的收敛域[10]
。并且因为高斯函数会有
较强的非线性映射能力,在实际应用中最为广泛。	
(2)高斯核函数参数的优化选取	
以下的已证明结论用于高斯核函数的参数选定:	
定理 3.1 如果 0®s ,则所有的样本都是支持向量,所有的训练样本都能
够被正确分出[11]
。
定理 3.2	 ¥®s ,高斯核函数对新样本的正确判断能力是零,即把它所有
样本点判为一类[11]
。	
根据以上两个定理可以得知: 0®s 时训练集中所有样本点都能被精确分
类,且每个样本点都是支持向量,然而这会带来“过拟合”的现象,导致在测
试集上的预测非常不准确,泛化能力差;而当 ¥®s 时,高斯核函数平等的对
待每一个样本,把所有的样本点都归为一类,这会产生“欠拟合”的现象,在
山东大学(威海)毕业论文	 	 	 第三章	 SVM 的算法设计与改进	
15	
	
测试集上无法进行推广。	
而在实际情况中当s 小于某一个值的时候,分类正确率反而会下降,说明
s 的取值并非简单的线性变化,需要在实际过程中进行测试调整从而得到最优
的参数值。	
3.3 实际情况下的改进建议	
实际上,在用过 SVM 算法得到一个分类器后,我们会通过测试集在已有
分类器上的表现来确定机器学习的好坏程度。通过对测试误差和训练误差的比
较再结合训练样本点的数量,基于对结构风险的理解上能够提出以下几点初步
改进的建议:	
(1)小样本问题:训练样本点的数量很小而特征维数过大且远远大于训
练样本数量时,容易造成“过拟合”的情况。此时可以增加样本数量或降低样
本维数等方法来改进。	
(2)当训练误差很小、测试误差很大时,考虑为“过拟合”的情况,可
减小拟合函数 VC 维来改进。	
(3)当训练误差与测试误差都很大时,考虑为“欠拟合”的情况,可增
加拟合函数的 VC 维来改进。
山东大学(威海)毕业论文	 	 第四章	 SVM 算法的 MATLAB 仿真研究	
16	
四.	SVM 算法的 MATLAB 仿真研究	
4.1 实验前准备与介绍	
4.1.1	libsvm 与 matlab	
本文 SVM 在 MATLAB 中的仿真研究基于开源软件库 LIBSVM 在 Matlab	 上
的运行。	
LIBSVM 是台湾大学林智仁(Lin	 Chih-Jen)教授等人于 2001 年开发设计的一
个简单、易于使用和快速有效的 SVM 模式识别与回归的软件包。该软件既提
供了已编译完成的可在 Windows	 系列系统的执行文件,同时也提供了对应的
源代码以便研究人员进行改进、修改与在其他操作系统上应用。该软件库能够
能帮助简化在 matlab 平台上的代码编写,使用户能更高效率地应用 SVM 算法
进行分类、预测。	
libsvm 工具箱有 C-SVC,	nu-SVC,	one-class	SVM,	epsilon-SVR,nu-SVR 等多种模
型可供使用。同时支持分类、回归问题。Libsvm 还采用 1v1 算法支持多分类,
比起 matlab 自带的 svm 函数只支持二分类在科学研究上能被更广应用。在研
究 RBF 核函数时 libsvm 可以对参数 gamma 进行调试,这让研究人员更为方便
地研究 RBF 核函数与具体问题的应用。	
libsvm 建立模型时输入参数意义:	
	
表 4.1	 	 libsvm 函数库中 svmtrain 函数参数设置表	
-s	:	SVM 类型设置
(默认 0)	
-t:	 核函数类型(默认2)	 -g(r,gamma)	 -c(cost)	
0	 C-SVC(本文
采用)	
0	 线性核函数 u'v	 核函数中的
gamma 函数
设置(针对
多项式
/RBF/sigmoid
核函数)	
设置
C-SVC,e	
-SVR 和
v-SVR
的参数
(损失函
数)(默
认 1)	
1	 v-SVC	 1	 多项式核函数
(r*u'v	+	
coef0)^degree	
2	 一类 SVM	 2	 RBF 核函数
exp(-r|u-v|^2	
3	 e	-SVR	 3	 Sigmoid 核函数
tanh(r*u'v	+	
coef0)	
4	 v-SVR	
执行上述命令后,可得模型 model:
山东大学(威海)毕业论文	 	 	 第四章	 SVM 算法的 MATLAB 仿真研究	
17	
	
	
图 4.1	 模型参数	
则上图参数的意义如下表所示:	
表 4.2	 模型参数表	
Parameters	
(列向量上到下依次为)	
-s	svm 类型	 SVM 设置类型(默认 0)	
-t	 核函数类型	 核函数设置类型(默认 2)	
-d	degree	
核函数中的 degree 设置(针对
多项式核函数)(默认 3)	
-g	r	(gamma)	
核函数中的 gamma 函数设置
(针对多项式/rbf/sigmoid 核函
数)	(默认类别数目的倒数)	
-r	coef0	 核函数中的 coef0 设置(针对多
项式/sigmoid 核函数)((默认 0)	
nr_class	 分类的类别数	
totalSV	 总支持向量数	
label	 类别标签	
nSV	 对应标签下的支持向量数目	
4.1.2 实验步骤	
(1)数据准备:找到合适的数据集,并把数据转化为 matlab 能够识别的
数据格式。	
(2)数据的前期处理:将数据集导入 matlab 中,对数据进行滤波和归一
化	
(3)matlab 仿真:	 应用 libsvm 里的函数对数据集中选定的训练集进行训
练,再将得到的模型应用在测试集上,根据已有的标签来判断分类情况,从而
得到分类正确率来查看模型质量。	
(4)重复仿真过程,选择核函数并修改相关参数得到该问题的最优分类
面。
山东大学(威海)毕业论文	 	 	 第四章	 SVM 算法的 MATLAB 仿真研究	
18	
	
4.2SVM 算法在 UCI 数据集上的应用——SVM 算法的二分类简单应用	
4.2.1UCI 数据集及其中 WINE 数据集介绍	
UCI 数据集是一个机器学习中常用的标准测试数据集,由加州大学欧文分
校提供。目前此数据库目前共有 349 个数据集,数据源涉及领域非常广,可以
满足多种类的实验和分析需求。	
本文选择 UCI 数据集中 WINE	 dataset 来做一个二分类研究。WINE 数据集
是对三个不同品种的葡萄酒共 178 条记录的化学分析结果,这三种葡萄酒都起
源于意大利但是派生出三个不同的品种。	
表 4.3	wine 葡萄酒数据集的基本信息	
样本类型	 样本数目	 样本维数	
类型一	 59	 13	
类型二	 71	 13	
类型三	 48	 13	
	
分析结果取决于这三种葡萄酒中 13 种化学成分的含量。我将选择其中的
第一类和第二类来做 SVM 的二类划分。需要注意这个数据集的属性特点:所
有属性变量都是连续变量。以下是关于 wine 数据集的属性表格,其中这 13 个
特征属性分别代表着葡萄酒的 13 种化学成分,具体如下表。	
表 4.4	 	 WINE 数据集属性表	
英文名称	 中文名称	
Alcohol 酒精度	
Malic acid 苹果酸	
Ash 灰分	
Alcalinity of ash 灰分碱度	
Magnesium 镁	
Total phenols 总酚含量	
Flavanoids 黄酮含量	
Nonflavanoid phenols 非黄酮类酚含量	
Proanthocyanins 花青素	
Color intensity 色彩亮度	
Hue 色调色彩	
OD280/OD315 of diluted
wines
吸光度	
Proline 脯氨酸	
	
4.2.2wine 数据集实验步骤	
(1)获取 wine 数据集及参数	
>>	load	wine.data;	 	 	 %加载 wine 数据集进入 matlab	
(2)提取数据集	
>>	data	=	wine(1:130,1:13);	 	 %提取一、二类 130 个数据
山东大学(威海)毕业论文	 	 	 第四章	 SVM 算法的 MATLAB 仿真研究	
19	
	
[data,ps]=mapminmax(data);	
ps.ymin=0;	
data=mapminmax(data,ps);	
归一化前后对比:	
	
图 4.2	 数据集 wine 的特征向量值	
	
图 4.3 归一化后的数据集 wine 的特征向量值	
(3)测试集与训练集的选取	
>>	data	=	wine(1:130,2:14);	 %提取 wine 中两类前 130 个数据以及他们的特
征值(其中第一类 59 个样本,第二类 71 个样本点)	
>>	label	=	wine(1:130,1);	%提取 wine 中两类前 130 个数据以及他们的标签	
>>	label	=	[label(1:59,:);-ones(71,1)];	%将标签调整为 1,-1	
>>	traindata	=	[data(1:40,1:13);data(60:110,1:13)];	
>>	trainlabel	=	[label(1:40,:);label(60:110,:)];	
>>	testdata	=	[data(41:59,1:13);data(111:130,1:13)];	
>>	testlabel	=	[label(41:59,:);label(111:130,:)];	
(4)用 libsvm 函数库函数 svmtrain()建立仿真模型,再用 svmpredict()函数
预测模型精确度	
>>	model	=	svmtrain(trainlabel,traindata,'-s	0	-t	0');	%建立 SVM 模型	
>>	[ptrain,acctest]	=	svmpredict(trainlabel,traindata,model);	%查看模型在训练
山东大学(威海)毕业论文	 	 	 第四章	 SVM 算法的 MATLAB 仿真研究	
20	
	
集上的准确率	
Accuracy	=	100%	(91/91)	(classification)	
>>	[ptest,acctest]	=	svmpredict(testlabel,testdata,model);	 %% 查 看 模 型 在 测
试集上的准确率	
Accuracy	=	100%	(39/39)	(classification)	
4.3SVM 算法在划分光谱上的应用——核函数的选择和参数选择	
4.3.1 光谱简介及分析意义	
随着信息社会的发展与天文观测技术的不断提高,人类对宇宙观测到的来
源越来越多、观测波段也越来越广,且观测所产生的数据量也以观测深度的三
次幂形式增长。SDSS,2MASS,	NVSS,	FIRST,2dF 等大型天文望远镜得到的数据堪
称海量。科学家们面临着这样的问题:如何通过大量的观测数据来抽象出天文
模型今儿对宇宙展开更广阔的研究。因而找到一个有效的数据分析方式是非常
必要而急需的。	
SVM 算法提供了一个很好的基于样本的推广模型,而且它的鲁棒性也很好,
这对于研究天文数据来说是一种非常可行的数学模型。而且通过研究发现,
SVM 算法比起 LVQ、SLP 等算法来说性能更加良好。因此用 SVM 算法来进行分
类预测本数据集是非常合适的。	
本实验采用的是 SDSS(Sloan Digital Sky Survey)数据库里的非类星体光
谱与类星体光谱数据进行分类实验。	
表 4.5	 样本数据	
样本类型	 样本数目	 样本维数	
非类星体	 1137	 3522	
类星体	 1000	 3522	
	
4.3.2K 折交叉验证法	
交叉验证(Cross	Validation)是用来验证分类器性能一种统计分析方法。在操
作过程中将原始数据集进行分组,一部分为训练集用于训练后得到分类器,另
一部分为测试集用于对分类器的测试。	
本实验所用验证法为交叉验证法中的“K 折交叉验证法”。	
K 折交叉验证法:将初始样本点分割成 K 个子样本,一个单独的子样本被
保留作为验证模型的数据,其他 K-1 个样本用来训练[12]
。交叉验证重复 K 次,
每个子样本验证一次,平均 K 次的结果或者使用其它结合方式,最终得到一个
单一估测[12]
。这个方法的优势在于,同时重复运用随机产生的子样本进行训练
和验证,每次的结果验证一次,10 折交叉验证是最常用的[12]
。	
(为减少数据验证时间本实验采用 5 折验证来实现,之后的求解最优参数
gamma 时采用的是 3 折交叉验证)	
4.3.3 实验过程	
1)获取类星体光谱数据集以及非光谱数据集;	
2)滤波并归一化数据
山东大学(威海)毕业论文	 	 	 第四章	 SVM 算法的 MATLAB 仿真研究	
21	
	
①对类星体光谱数据集 P1 进行滤波和归一化产生新数据集 Y:	
滤波:	
P1T = P1';
Y=medfilt1(P1T,60);
Y = Y';
归一化:	
[Y,ps]=mapminmax(Y);
ps.ymin=0;	 	
Y=mapminmax(Y,ps);
滤波归一化前后对比(P1 到 Y):	
	
图4.4	 原始类星体数据集P1	
图4.5	 滤波与归一化之后生成的数据集Y	
	 	 	
数据归一化后值在 0~1 之间。	
②对非类星体数据集 P 进行归一化(已滤波):
山东大学(威海)毕业论文	 	 	 第四章	 SVM 算法的 MATLAB 仿真研究	
22	
	
[P,ps]=mapminmax(P);	
ps.ymin=0;	
P=mapminmax(P,ps);	 	
归一化后前后对比(P到P):	
	
图4.6	 原始非类星体数据集P	
图4.7	 滤波与归一化之后的数据集P	
数据归一化后值在 0~1 之间。	
【法一】延续验证 wine 数据集分类的基本方式,通过在确定的训练集与
测试集的学习,不断修改参数 C 或核函数来得到优化模型	
3)选取训练集与测试集:	
>>	label1	=	ones(1137,1);	 %P 数据集的标签,设为 1,为正类	
>>	label2	=	-ones(1000,1);	 	 	 	 	 %Y 数据集的标签,设为-1,
为负类	
>>	traindata	=	[P(1:900,1:3522);Y(1:800,1:3522)];	%选取 P 与 Y 数据集中部分
数据组合为 traindata 矩阵作为训练集	
>>	trainlabel	=	[label1(1:900,:);label2(1:800,:)];	%找到 P 与 Y 数据集对应的标
山东大学(威海)毕业论文	 	 	 第四章	 SVM 算法的 MATLAB 仿真研究	
23	
	
签为训练集标签	
>>	testdata	=	[P(901:1137,1:3522);Y(801:1000,1:3522)];%P与Y余下数据组合
为 testdata 作为测试集	
>>	testlabel	=	[label1(901:1137,:);label2(801:1000,:)];%找到 P 与 Y 数据集对
应的标签为测试集标签	
4)用 libsvm 函数库函数 svmtrain()建立仿真模型,再用 svmpredict()函数
预测模型精确度,并不断修改参数使模型在训练集及测试集上表现良好。	
>>	model	=	svmtrain(trainlabel,traindata,'-s	0	-t	2');	
	
图 4.8	 参数设置与模型参数	
具体参数设置与分类器支持向量结果:	
参数设置为:C-SVC 方式;RBF 核函数;C=3;gamma=2.83938*10-4	 	
为二分类问题	
总的支持向量为 900 个	
二分类问题的标签设置为:-1,1	
对应的-1 标签下的支持向量有 447 个,	
对应的 1 标签下的支持向量有 453 个。	
(关于 libsvm 具体参数设置介绍请见 4.1.1libsvm 相关介绍)	
预测结果:	
>>	[ptrain,acctest]	=	svmpredict(trainlabel,traindata,model);	
Accuracy	=	92.7647%	(1577/1700)	(classification)	
>>	[ptest,acctest]	=	svmpredict(testlabel,testdata,model);	
Accuracy	=	94.0503%	(411/437)	(classification)	
在训练集上的分类正确率为 92.7647%,其中正确分类个数为 1577 个(共
1700 个训练样本);	
在测试集上的正确分类率为 94.0503%,其中正确分类个数为 411 个(共
437 个测试样本)。	
【法二】通过更为科学的交叉验证法来验证分类正确率,并选择合适的核
函数以及不断修改参数 C 和和核函数参数来得到最优化模型	
3)交叉验证法:
山东大学(威海)毕业论文	 	 	 第四章	 SVM 算法的 MATLAB 仿真研究	
24	
	
给两个数据集分别存储一个标签:	
>>	label1	=	ones(1137,1);	 %P 数据集的标签,设为 1,为正类	
>>	label2	=	-ones(1000,1);	 	 	 	 	 %Y 数据集的标签,设为-1,
为负类	
把类星体与非类星体的光谱数据合为一个集合 D,把他们的标签也合为一
个集合 label:	
>>	D	=	[P;Y];	
>>	label	=	[label1;label2];	
再用 svmtrain 命令:	
>>	model11	=	svmtrain(label,D,'-s	0	-t	2	-c	0.1	-v	5');	
此处返回的不是一个模型,而是交叉验证后的得到的平均分类正确率	
-v 参数是设置交叉验证的 k 值,此处为 5	 折	
4)通过上述命令分别建立五个模型后最终得到一个返回值——平均分类
正确率	
	
图 4.9	 	 5 折交叉验证法在模型下的 matlab 仿真	
由此可得得到分类正确率率为 74.5438%。	
4.5.4 实验结果及改进	
用【法二】交叉验证法的结果	
4.5.4.1 核函数选取与参数 C 选取结果对比
山东大学(威海)毕业论文	 	 	 第四章	 SVM 算法的 MATLAB 仿真研究	
25	
	
表 4.6	 核函数的选择与参数 C 选择的准确率情况表格	
C	 线性核函数	 多项式核函数	
高斯径向基
核函数	
0.1	 97.7071%	 54.0945%	 74.5438%	
0.5	 97.6603%	 61.3009%	 89.5648%	
1	 97.5199%	 65.6528%	 92.9808%	
5	 97.1455%	 83.9027%	 97.4731%	
10	 97.1923%	 90.9686%	 98.0346%	
50	 97.1923%	 96.0693%	 99.2045%	
100	 97.1923%	 96.8648%	 99.6724%	
200	 97.1923%	 97.1455%	 99.6724%	
500	 97.1923%	 97.9410%	 99.4385%	
1000	 97.1923%	 98.1282%	 99.4853%	
1500	 97.1923%	 98.0814%	 99.4385%	
2000	 97.1923%	 98.3154%	 99.4853%	
2500	 97.1923%	 98.2218%	 99.4385%	
3000	 97.1923%	 98.2218%	 99.4853%	
对应的参数选择图像为:	
	
图 4.10	 不同核函数参数选择与分类正确率的关系曲线
山东大学(威海)毕业论文	 	 	 第四章	 SVM 算法的 MATLAB 仿真研究	
26	
	
可以由上表与上图知:	
1)线性核函数(蓝色线):随着 C 的增大精确度缓缓升高,并在 C=10 后
C 取更大值时精度保持不变,支持向量的个数也保持不变。并且其精度一直保
持在很高水平,都是 97%以上的精确度。	
2)多项式核函数(红色线):随着 C 的增大精度逐渐增大,并在 C=50 后
增速放缓,精度达到 96%以上;在 C=2500 及以后精度保持不变,维持在 98%
左右。	
3)高斯径向基核函数(绿色线):随着 C 的增大精度逐渐增大,并在 C=5
后增速放缓,精度达到 97%以上;在 C=50 之后精度更是超过了 99%。	
然而由 3.2.1 松弛变量的引入理论来说,C 越大越不愿意放弃离分类面较
远的点,泛化能力会变差,因此 C 的选择通常不会很大。因而在光谱分类的问
题上多项式核函数并不适合该问题,而线性核函数的表现较为良好,精度较高,
还有使用高斯径向基核函数能够在保证 C 较小泛化能力良好的情况下用交叉
验证法验证有比线性核函数更高的精确度。因此选择高斯径向基核函数来得到
决策函数是本问题最恰当的模型建立方式。	
4.5.4.2 通过 faruto 编写的 SVMcg 函数得到高斯径向基核函数参数σ的最
优结果	
1)SVMcg 函数使用如下表所示	
[bestacc,bestc,bestg]	 	
=	SVMcg(train_label,train,cmin,cmax,gmin,gmax,v,cstep,gstep,accstep)	
表 4.7	SVMcg 函数的参数意义表	
train_label	 训练集标签.要求与 libsvm 工具箱中要求一致	
train	 训练集.要求与 libsvm 工具箱中要求一致	
cmin	 惩罚参数 c 的变化范围的最小值(取以 2 为底的对数后),即	 c_min	
=	2^(cmin),默认为	 -5	
cmax	 惩罚参数 c 的变化范围的最大值(取以 2 为底的对数后),即	 c_max	
=	2^(cmax).默认为	 5	
gmin	 参数 g 的变化范围的最小值(取以 2 为底的对数后),即	 g_min	 =	
2^(gmin).默认为	 -5	
gmax	 参数 g 的变化范围的最小值(取以 2 为底的对数后),即	 g_min	 =	
2^(gmax).默认为	 5	
v	 K 折交叉验证的参数,即给测试集分为几部分进行 cross	
validation,	 几折则设置为几,默认为	 3	
cstep	 参数 c 步进的大小.默认为 1	
gstep	 参数 g 步进的大小.默认为 1	
accstep	 最后显示准确率图时的步进大小.	 默认为 1.5	
2)对于非类星体以及类星体的二分类问题寻找最优参数 C 和最优参数 g	
>>	traindata	=	[D];	 %选取 P 与 Y 数据集中部分数据组合为
traindata 矩阵作为训练集	
>>	trainlabel	=	[label];	 %找到 P 与 Y 数据集对应的标签为训
练集标签	
>>	 [bestacc,bestc,bestg]	 =	 SVMcg(trainlabel,traindata)	 %找到该训练集下的
山东大学(威海)毕业论文	 	 	 第四章	 SVM 算法的 MATLAB 仿真研究	
27	
	
分类最优准确率,以及 SVM 算法改进后的参数 C 及核函数参数 gamma 的值。	
该函数生成了 c,g 变化时精度变化的图形:	
	
图 4.11	 参数 c,g 与分类正确率之间的关系图	
可以从图中直观的感受到光谱数据集上 c,g 的变化与分类正确率的关系。	
通过 MATLAB 进行交叉验证法的运算后可得到最优 c,g 以及分类正确率:	
	
图 4.12	 返回结果值	
即最优精度为 99.9064%,最优参数 C=2,最优参数 g=0.0313
山东大学(威海)毕业论文	 	 	 第四章	 SVM 算法的 MATLAB 仿真研究	
28	
	
4.5.5 光谱分类实验中核函数的选择以及参数选择小结	
因此,在对于数据集 P(非类星体光谱)和数据集 P1(类星体光谱)组合
成的 D 数据集进行分类实验模拟的时候最优的模型为选择惩罚因子 C=2,高斯
径向基核函数且其参数 g=0.0313。此时模型的分类准确率为:	
由上述过程我们可以得到如何对 SVM 的基本模型进行改进的方法。	
1)通过不同核函数采用情况下的分类准确率可以帮助选择最合适该数据
及上的核函数;	
2)通过 K 折交叉验证法和 faruto 的 SVMcg 函数的实现,我们得到参数的
最优值,从而确定决策函数,得到最优分类器。
山东大学(威海)毕业论文	 	 第五章	 总结	
29	
五.总结与展望	
在机器学习越发广泛应用于信息社会的今天,SVM 算法的研究越发凸显其
实际意义。本文首先通过对统计学习理论的基础介绍引出了 SVM 算法的理论
基础,指出了该算法的优势和特点。然后通过把算法原理以数学形式推导与建
模得到了 SVM 模型的基本形式。针对于实际情况,本文参考了大量的文献和
书籍对基本的 SVM 算法进行改进,把线性分类器通过加上松弛变量和核函数
推广到普遍的非线性分类器问题研究上。并且通过 matlab 平台和 Libsvm 函数
库进行了由浅入深的验证和改进过程。先通过 UCI 标准数据集的 wine 样本集
实现最基本的分类和预测,由此进行第一步基础实验验证。并通过改变参数 C
的值和其得到模型的准确率来改进参数 C。接着本文通过对于 SDSS 项目获取
的天文数据的处理来加深 SVM 算法的现实研究意义。在对数据的基本处理后,
通过交叉验证法来找到不同核函数对于同一问题的表现情况,并对此作出分析
与归纳。接着,再通过前辈提供的寻找 C,g 参数的函数 SVMcg 来找到该样本
上的最优参数 C 和 g,从而实现了一个现实问题的解决流程,得到了最优决策
函数。	
通过以上实验的 matlab 仿真实验研究我们可以发现 SVM 在“分类”的表
现良好。这也更加印证了有越来越多人开始学习和应用 SVM 算法原理的趋势。
相信经过更深入和更广阔的研究应用,SVM 算法能够给决策和分析在商业、医
疗、人口调查等方面带来更多的现实价值。	
通过这样的从理论到实际研究的研究学习过程,我对 SVM 的算法理解更
为深刻,也让我对研究生学习继续研究数据挖掘、机器学习的目标更为清晰,
同时也为我更深入的在研究生阶段进行学习和研究 data	 science 带来了一个良
好的开端和思维方式。
山东大学(威海)毕业论文	 	 	 谢辞	
30	
	
谢辞	
在毕业论文逐渐完稿的过程中,大学四年的生活也渐渐走到了结尾。我即
将将面对着一个结束,也将迎来一个新的开始。回首四年的时光,我真的在这
四年成长了很多。这些成长除了我自己的努力以外,我的母校、老师、同学们
以及一直陪伴我支持我的父母、朋友们都带给我了很多很多。在此,我希望向
他们表示衷心的感谢,感谢大家对我的支持与关心。	
首先我要感谢我的母校,在这里我接受了良好的教育,不仅是在学业学识
上得到了栽培,也在校园氛围的影响下逐渐成为了一个人格完整、心怀梦想的
成年人。希望我的母校能够在后来人的建设下越来越好,培养更多优质的社会
栋梁,也能够因为曾经培养过的学生感到骄傲。我感念母校的一切,也祝愿母
校的一切。	
进而我想感谢我的指导老师——张立老师。从大学三年的课堂接触,我发
现他是一个在专业学习上严谨负责的好老师,性格温和耐心。是他让我在学习
上细致而透彻,也是他让我发现了我热爱的研究方向进而有研究生的进阶学习。
选择张立老师作为导师是因为我知道他的严谨专注能够让我在毕业设计的时
候学习到更多的东西。然而事实上我得到的比这更多:他悉心指导我如何学习
新的理论知识,跟我一起讨论我毕业设计中遇到的问题,还有指导我如何书写
一篇结构完整内容充实的论文。这些都让我受益匪浅。因此我在这里衷心感谢
张立老师对我的教导,也祝愿和相信他能够在学术路上走得更好。	
还有在大学四年中,身边的同学们与我在生活和学习上互相帮助、互相探
讨、互相鼓励。我很感念他们和我的交流,让我有了学业上思维的碰撞、生活
中最好的帮手。希望他们能够在以后的道路中越走越好,成为一个更棒的自己。	
最后,我很感谢我的家人和朋友。他们给了我最好的关怀。父母给了我最
好的成长环境,通过不断引导我思考和培养我的自立来让我健康成长。他们不
束缚我的思维,相信我的能力,我也因此从一个需要依靠父母的孩子成长为有
自己决断能力和能够承担照顾自己的责任的成熟的人。我感谢他们对我的一切
给予,这样的爱给了我最好的后盾。我的朋友们一路陪我走过。我们一起经历、
一起成长。在此期间,我们既可以辩驳争论,因为对方看到不一样的观点、碰
撞思维,又可以在对方低落的时候给予温暖与关心。这样的真挚的友情让我在
面对挑战的时候面色无惧,也让我的成长更加完整。谢谢我的父母和朋友,是
你们让我成为了越来越好的自己。
山东大学(威海)毕业论文	 	 参考文献	
31	
参考文献	
[1]	 胡振邦.	 基于 Latent	SVM 的人体目标检测与跟踪方法研究[D].	2013	
[2]	 王朝勇.	 支持向量机瑞甘算法研究及应用[D].	2008	
[3]	 何厅厅,赵艳玲,石娟娟,刘亚萍,王亚云,袁军,马和平.	 基于 PSO-OSVM 的
江苏省更低变化预测[J].	 农业经济(2014 年 21 期).	2014	
[4]	 Blanzieri	 E,	 Bryl	 A.	 Instance-Based	 Spam	 Using	 SVM	 Nearest	 Neibor	
Classifier.	American	Association	for	Artificial	Intellegence,	2007	
[5]	 张学工译.统计学习理论的本质.北京:清华大学出版社,2000	
[6]	 	 Vapnik	V.N.The	nature	of	statistical	learning	theory[M].2nd	ed.1999,
New	York:Springer	
[7]	 	 李盼池,许少华.	 	 支持向量机在模式识别中的核函数特性分析[J].	 	
计算机工程与设计,2005,	26	(2):	302—306.	
[8]	 	 郭丽娟,孙世宇,段修生.	 支持向量机及核函数研究	 [J].	 科学技术与工
程	 ,2008,8(2):	487-489.	 	
[9]	 	 吴涛.	 	 核函数的性质、方法及其在障碍检测中的应[D].	 	 国防科学技
术大学博士论文 2003.	 	
[10]	Zhou	Shui-sheng,	Lin	Hong-wei,	Ye	Feng.	Variant	of	Gaussian	Kernel	and	
parameter	 setting	 method	 for	 nonlinear	 SVM[J].	 Neurocomputing,2009,	 72:	
2931-2937.	
[11]	 张 小 云 , 刘 云 才 . 高 斯 核 支 持 向 量 机 的 性 能 分 析 [J]. 计 算 机 工
程,2003,29(8)	
[12]	 范昕炜.支持向量机算法的研究及其应用[D].杭州:浙江大学,2003	
[13]	N	Cristianini,	J	Shawe-Yaylor.	An	Introduction	to	Support	Vector	Machines	
and	Other	Kernel-based	Learning	Methods.	Cambridge,	Cambridge	University	Press,	
2000.	 	
[14]	V.	N.	Vapnik.	Statistical	Learning	Theory.	New	York,	John	Wiley	&	Sons,	
1998.	 	
[15]	V.	N.	Vapnik.	The	Nature	of	Statistical	Learning	Theory	2Nd	edition	 	 New	 	
York:	Springer-Verlag,	2000.	
[16]周志华.	 机器学习.	 北京:清华大学出版社,2016	
[17]李小英.	 支持向量机的分类研究算法[M],2008	
[18]马赫,基于 SDSS 和 UK	IDSS 数据的类星体选源分类器构造[M],2011	
[19]杨海,SVM 核参数优化研究与应用[M],2014

More Related Content

Similar to 张韵偲毕业论文

基于数据挖掘的客户流失预测实证研究
基于数据挖掘的客户流失预测实证研究基于数据挖掘的客户流失预测实证研究
基于数据挖掘的客户流失预测实证研究学峰 司
 
Graduation Thesis
Graduation ThesisGraduation Thesis
Graduation ThesisYifan Zhai
 
Java消息服务
Java消息服务Java消息服务
Java消息服务jinkris
 
[振动、测试与诊断-2022] 基于深度学习的工业装备PHM研究综述.pdf
[振动、测试与诊断-2022] 基于深度学习的工业装备PHM研究综述.pdf[振动、测试与诊断-2022] 基于深度学习的工业装备PHM研究综述.pdf
[振动、测试与诊断-2022] 基于深度学习的工业装备PHM研究综述.pdfssuserb956831
 
基于Mspf的实时监控多目标跟踪算法研究
基于Mspf的实时监控多目标跟踪算法研究基于Mspf的实时监控多目标跟踪算法研究
基于Mspf的实时监控多目标跟踪算法研究s2007s
 
A study on future user needs and innovative smart phone features vanbin fan 2...
A study on future user needs and innovative smart phone features vanbin fan 2...A study on future user needs and innovative smart phone features vanbin fan 2...
A study on future user needs and innovative smart phone features vanbin fan 2...Vanbin Fan, JWMI MBA
 
Chapter01 1 cg_new
Chapter01 1 cg_newChapter01 1 cg_new
Chapter01 1 cg_newZheng Li
 
運用擴增實境技術建立數位學習環境(精簡版)
運用擴增實境技術建立數位學習環境(精簡版)運用擴增實境技術建立數位學習環境(精簡版)
運用擴增實境技術建立數位學習環境(精簡版)Tehuan Chung
 
2009“花旗杯”金融与信息技术应用大赛介绍
2009“花旗杯”金融与信息技术应用大赛介绍2009“花旗杯”金融与信息技术应用大赛介绍
2009“花旗杯”金融与信息技术应用大赛介绍Jianhuan Geng
 
跨領域物理視算:力學與電磁系統之視覺化、模擬與平行運算
跨領域物理視算:力學與電磁系統之視覺化、模擬與平行運算跨領域物理視算:力學與電磁系統之視覺化、模擬與平行運算
跨領域物理視算:力學與電磁系統之視覺化、模擬與平行運算TAAZE 讀冊生活
 
某通信公司软件开发项目管理优化研究_缪镠.pdf
某通信公司软件开发项目管理优化研究_缪镠.pdf某通信公司软件开发项目管理优化研究_缪镠.pdf
某通信公司软件开发项目管理优化研究_缪镠.pdfssuser64da73
 
Sns与系统架构浅谈
Sns与系统架构浅谈Sns与系统架构浅谈
Sns与系统架构浅谈taobaby365
 
互联网舆情管理系统介绍
互联网舆情管理系统介绍互联网舆情管理系统介绍
互联网舆情管理系统介绍J.Y. "MeaCulpa" Hsu
 
香港六合彩
香港六合彩香港六合彩
香港六合彩kaifang
 
5-3 图神经网络在推荐系统中的应用.pdf
5-3 图神经网络在推荐系统中的应用.pdf5-3 图神经网络在推荐系统中的应用.pdf
5-3 图神经网络在推荐系统中的应用.pdfkaihuanglai
 

Similar to 张韵偲毕业论文 (20)

基于数据挖掘的客户流失预测实证研究
基于数据挖掘的客户流失预测实证研究基于数据挖掘的客户流失预测实证研究
基于数据挖掘的客户流失预测实证研究
 
Graduation Thesis
Graduation ThesisGraduation Thesis
Graduation Thesis
 
Java消息服务
Java消息服务Java消息服务
Java消息服务
 
[振动、测试与诊断-2022] 基于深度学习的工业装备PHM研究综述.pdf
[振动、测试与诊断-2022] 基于深度学习的工业装备PHM研究综述.pdf[振动、测试与诊断-2022] 基于深度学习的工业装备PHM研究综述.pdf
[振动、测试与诊断-2022] 基于深度学习的工业装备PHM研究综述.pdf
 
基于Mspf的实时监控多目标跟踪算法研究
基于Mspf的实时监控多目标跟踪算法研究基于Mspf的实时监控多目标跟踪算法研究
基于Mspf的实时监控多目标跟踪算法研究
 
A study on future user needs and innovative smart phone features vanbin fan 2...
A study on future user needs and innovative smart phone features vanbin fan 2...A study on future user needs and innovative smart phone features vanbin fan 2...
A study on future user needs and innovative smart phone features vanbin fan 2...
 
Chapter01 1 cg_new
Chapter01 1 cg_newChapter01 1 cg_new
Chapter01 1 cg_new
 
運用擴增實境技術建立數位學習環境(精簡版)
運用擴增實境技術建立數位學習環境(精簡版)運用擴增實境技術建立數位學習環境(精簡版)
運用擴增實境技術建立數位學習環境(精簡版)
 
2009“花旗杯”金融与信息技术应用大赛介绍
2009“花旗杯”金融与信息技术应用大赛介绍2009“花旗杯”金融与信息技术应用大赛介绍
2009“花旗杯”金融与信息技术应用大赛介绍
 
跨領域物理視算:力學與電磁系統之視覺化、模擬與平行運算
跨領域物理視算:力學與電磁系統之視覺化、模擬與平行運算跨領域物理視算:力學與電磁系統之視覺化、模擬與平行運算
跨領域物理視算:力學與電磁系統之視覺化、模擬與平行運算
 
某通信公司软件开发项目管理优化研究_缪镠.pdf
某通信公司软件开发项目管理优化研究_缪镠.pdf某通信公司软件开发项目管理优化研究_缪镠.pdf
某通信公司软件开发项目管理优化研究_缪镠.pdf
 
Sns与系统架构浅谈
Sns与系统架构浅谈Sns与系统架构浅谈
Sns与系统架构浅谈
 
互联网舆情管理系统介绍
互联网舆情管理系统介绍互联网舆情管理系统介绍
互联网舆情管理系统介绍
 
Etd 1002102-172438
Etd 1002102-172438Etd 1002102-172438
Etd 1002102-172438
 
se0611se
se0611sese0611se
se0611se
 
香港六合彩
香港六合彩香港六合彩
香港六合彩
 
香港六合彩
香港六合彩香港六合彩
香港六合彩
 
香港六合彩
香港六合彩香港六合彩
香港六合彩
 
香港六合彩
香港六合彩香港六合彩
香港六合彩
 
5-3 图神经网络在推荐系统中的应用.pdf
5-3 图神经网络在推荐系统中的应用.pdf5-3 图神经网络在推荐系统中的应用.pdf
5-3 图神经网络在推荐系统中的应用.pdf
 

张韵偲毕业论文

  • 1. 0 毕业论文(设计) 设计(论文)题目 基于支持向量机的分类方法研 究及仿真 姓 名: 张韵偲 学 号: 201200800740 学 院: 机电与信息工程学院 专 业: 自动化 年 级 2012 级 指导教师: 张立 年 月 日
  • 2. 山东大学(威海)毕业论文 目录 1 目 录 摘要……………………………………………………………………1 Abstract………………………………………………………………2 一、绪论..............................................1 1.1 选题背景与意义 .................................1 1.2 基于统计学习的机器学习与 SVM 发展历程 ...........1 1.3 SVM 国内外研究现状 .............................2 1.4 论文架构 .......................................3 二. SVM 的理论基础.....................................4 2.1 机器学习与 SVM 的概念 ...........................4 2.1.1 机器学习..................................4 2.1.2SVM .......................................4 2.2VC 维与推广能力 .................................4 2.3 泛化误差界与结构风险最小化 .....................5 2.4 SVM 算法的优点 .................................6 三.SVM 的算法设计与改进................................8 3.1 线性分类器 .....................................8 3.1.1 间隔与最优超平面..........................8 3.1.2 线性分类器的数学模型 .....................9 3.1.3 线性分类器的求解.........................10
  • 3. 山东大学(威海)毕业论文 目录 2 3.2 非线性分类器 ..................................11 3.2.1 引入松弛变量法...........................11 3.2.2 核函数法(kernel methods)...............12 3.3 实际情况下的改进建议 ..........................15 四. SVM 算法的 MATLAB 仿真研究.........................16 4.1 实验前准备与介绍 ..............................16 4.1.1 libsvm 与 matlab .........................16 4.1.2 实验步骤.................................17 4.2SVM 算法在 UCI 数据集上的应用——SVM 算法的二分类简 单应用 ...............................................18 4.2.1UCI 数据集及其中 WINE 数据集介绍...........18 4.2.2wine 数据集实验步骤.......................18 4.3SVM 算法在划分光谱上的应用——核函数的选择和参数选 择 ...................................................20 4.3.1 光谱简介及分析意义.......................20 4.3.2K 折交叉验证法............................20 4.3.3 实验过程.................................20 4.5.4 实验结果及改进...........................24 4.5.5 光谱分类实验中核函数的选择以及参数选择小结 ..................................................28 五.总结与展望 ........................................29
  • 4. 山东大学(威海)毕业论文 目录 3 谢辞 .................................................30 参考文献 .............................................31
  • 5. 山东大学(威海)毕业论文 摘要 1 摘 要 支持向量机(SVM)是一种基于统计学习理论的机器学习方法。 它在解决小样本、非线性、高维模式识别的问题时表现出良好的性 能,因此被广泛应用于学术研究与工业发展中的分类分割、模式识 别、函数回归等方面的问题解决。本文主要研究支持向量机的分类 问题。文章将从以下几个方面展开。 首先介绍了 SVM 算法的研究背景及现状和统计学习的基本方法, 再引入机器学习及 SVM 的基本理论,并通过数学推导把 SVM 模型转 化为一个凸规划的问题寻找全局最优解来得到对应的最优分类面。 随后通过在 Matlab 平台上由浅入深的算法验证和参数改进的仿真 实验来研究 SVM 算法的作用效果。先通过对 UCI 标准数据集的 wine 样本集实现最基本的分类和预测,由此进行第一步基础实验验证; 再进阶地通过对于 SDSS 天文数据的分类来加深 SVM 算法的现实研 究意义。最后再对于本论文进行概括总结。 关 键 词 支持向量机 分类 参数选择 核函数
  • 6. 山东大学(威海)毕业论文 Abstract 2 Abstract SVM (Support Vector Machine) is one kind of machine learning methods based on statistic learning theory. It has the excellent performance when it is applied to small sample, non-linear and high-dimensional models. So, SVM is widely adopted in academic researches and industrial activities, especially the affairs on classification, pattern recognition, the regression of functions and so on. The thesis concentrates on the classification problems on SVM. It develops by these steps: In the beginning, this thesis originates from the background information of SVM and basic introduction of Statistic Learning Theory. Then it introduces the basic theory on machine learning and SVM. Later on, by using a convex optimization programming model, the global optimal solution of SVM problems could be found. Then, based on wine dataset of UCI and spectrum data of SDSS, this paper focuses on the simulation of classification and optimization algorithms by using kernel functions and cost function on Matlab with Libsvm library. Such simulations and applications connect SVM to real-world problem-solving. Finally, the thesis draws a
  • 7. 山东大学(威海)毕业论文 Abstract 3 conclusion on SVM classification and summarizes the whole passage. Key words SVM (Support Vector Machine) Classification Parameter selection Kernel
  • 8. 山东大学(威海)毕业论文 第一章 绪论 1 一、绪论 1.1 选题背景与意义 随着信息社会的迅速发展,人们获取信息等能力不断增强,应用已有信息来 分析预测的要求也越发迫切。而这些信息通常以各式各样的数据形式存在。在各 行各业中,海量的数据亟待良好的工具来进行分析和预测,以便能从信息中提取 有效信息用于预测和决策。例如近期热点 Google 公司开发的 AlphaGo 软件可以 和专业级别的围棋选手相抗衡。AlphaGo 是一款 AI 在围棋领域的智能程序,该程 序采用了两个深度神经网络,即通过价值网络计算局面,用决策网络选择落子, 大幅降低了搜索的广度与深度。它曾于 2015 击败欧洲围棋的冠军、职业二段选 手樊麾,并于 2016 年 3 月战胜世界围棋冠军、职业九段选手李世石。再有,在 医疗方面,Google 旗下人工智能公司 DeepMind 已获得许可,能够访问英国国家 医疗服务系统(NHS)的约 160 万病人数据,帮助医生护士诊断急性肾脏损伤病 例。再有例如 IBM 推出的认知商业模式,用 Watson 计算机处理海量的数据帮助 商业公司进行决策、更精准的预测和发掘市场,并根据客户偏好推荐适合的金融 产品;Watson 计算机同时也结合物联网、云计算技术来提升生活生产质量…这些 前沿的科技和为我们生活带来改变的技术都离不开“机器学习”的领域。如何让 机器通过海量数据的选择、学习后对预测和决策提供科学的依据,并推动社会的 发展产生成为了一个研究热点和信息社会发展的迫在眉睫的焦点。而 SVM 正是 这样一种可以广泛应用于各行各业的表现优良的数据分析和预测的工具。 1.2 基于统计学习的机器学习与 SVM 发展历程 由于在信息社会发展中机器学习在数据处理、预测上的重要意义,研究机 器学习及相关知识在现代社会有非常大的应用价值。机器学习的基本思路是根 据样本集的数据来建立模型,找到该样本集的规律,因此,对于那些无法观测 的所需数据或是未来的发展趋势就可以通过此规律进行预测。在经过很长一段 时间的研究后,机器学习的理论框架还没有哪一种被共同接受。 该理论框架大抵能够分为三种: (1)参数估计方法。这是一种非常经典的统计方法。基于该统计方法发 展而出的应用方法有许多,如神经网络法、模式识别。在应用参数估计法时, 必须已知参数的特征,然后通过对选取样本的训练学习去估计其中的参数值。 但也正因为此原理的特征,这个方法在实际应用时局限性很大。①它需要已知 样本分布形式,这在实际中可能难以得到,甚至在某些情况中无法得到这样的 分布形式;②现有学习方法多基于经典统计学,而经典统计的研究对象是样本 数目趋于无穷大情况下的渐近理论,这与实际问题的情况并不相符。因为在实 际问题中样本点通常为有限集,与理论假设是有差别的,因而有些在经典理论 研究上表现良好的学习方法在解决现实问题时并不那么理想。 (2)经验非线性方法。该方法也在业界有广泛的应用,如 ANN(人工神 经网络)。该方法利用已有了解的样本构建非线性模型,能够通过经验学习改
  • 9. 山东大学(威海)毕业论文 第一章 绪论 2 善上述参数估计方法在处理有关直觉、非结构化数据方面的缺陷,使之能够自 动适应和实时学习。在处理一些传统方法难以处理的问题上有着很好的效果。 但不足之处在于没有一种统一的数学理论对该方法做理论支撑。 (3)统计学习理论。统计学习理论有着坚实的理论基础, 与前文所提及 的经典统计学相比来看,该理论能够在解决有限数量样本集的学习问题时提供 统一构架。因此在寻找小样本问题的机器学习规律时该理论有很好的适用范围, 也就是在样本有限和要求渐近性能的情况下能够得到最优解。实际上既是数学 家、统计学家又是计算机科学家的 Vapnik 早在 1963 年就已提出支持向量的概 念;在 1968 年他与另一名苏联数学家 A.Chervonenkis 提出了以他们两命名的 统计学中“VC 维”的概念;在 1974 年瓦普尼克又提出结构风险最小化的原则, 使得统计学习理论在 20 世纪七十年代就已经成型。直到 Vapnik 等诸多苏联科 学家在苏联解体后把这些俄文材料和科学思想带到美国,统计学习的理论才在 西方学术届引起重视,统计学习理论、支持向量机、核方法在 20 世纪末的时 候大红大紫。 Vapnik 的 VC 维理论是统计学习理论的重要核心概念,它能够描述函数集 或学习机器的复杂性和学习能力,机器学习中许多关于统计学习的一致性、泛 化能力、收敛速率等相关概念都是由 VC 维理论延伸发展而来。而本文研究的 SVM 算法正是基于 VC 维理论和结构风险最小化的原理,因此 SVM 算法在解决 小样本、非线性和高维模式识别的问题中能够表现良好,在某些现实问题的解 决上具有一定的优势。越来越多对 SVM 算法有过研究、应用后的研究人员认 为,SVM 算法正在成为机器学习算法里又一个研讨热点,;再有,因为 SVM 算 法在业界的实践应用表现良好,学者和研究人员也认为该机器学习算法将极大 地推进机器学习理论发展和技术实践。这也是选择本论文致力于研究该课题的 原因。 1.3 SVM 国内外研究现状 SVM 算法原本是用于解决一个二分类问题的方法,而在实际应用中 SVM 算法结合其他算法进行改进后可以拓展延伸到各个领域进行应用研究,还可以 进阶地得到 SVM 的多分类算法使该方法能够更为广泛地应用在各行各业,满 足更为具体的需求。 SVM 在图像分类识别中应用广泛,能够通过分割图像得到人们所关注的重 点内容。它通过图像中像素点的特征信息生成相应的特征向量矩阵,然后对训 练集的样本点进行训练,再通过在测试集上的检验测试来得到分类准确度,最 终可以通对一些算法来实现自动选择最优的分类器,得到图像的划分。比如胡 振邦的基于 Latent SVM 算法结合隐变量可以应用在人体的目标检测与跟踪方 法的研究,能够在物联网、城市的安全建设、智能交通、智能机器人、电子娱 乐等多方面应用,造福于人们的生活[1] 。也可以通过基于 SVM 算法的对视频中 图像的识别与诊断技术来检测和保障通信系统。 SVM 在医疗方面也有相应的应用。通过对大量的药品成分分析可以开发新 的有效药物,还可以根据对大量的病例样本分析得到病理方面的经验结论帮助 人们尽早发现、更好的治疗疾病。如王朝勇提出了一种基于黎曼和相似度量的 核函数改进法,还针对标准 LS-SVM 求解速度慢和易出现病态方程组的问题进
  • 10. 山东大学(威海)毕业论文 第一章 绪论 3 行了改进,还提出了基于统计学习的特征向量处理方式,把这些算法及其改进 应用到了药品成分和肿瘤诊断方面[2] 。 SVM 算法在预测方面的应用也有很多。比如何厅厅,赵艳玲等通过对江苏 省 1996-2009 年的耕地变化为例子,利用粒子群算法(PSO)的全局搜索能力 优化 SVM 算法,并结合 LSSVR 和逆学习法对耕地的变化趋势进行预测,为土 地资源可持续发展提供了重要的参考意义[3] 。 SVM 在现代发达的信息社会中处理网络上的海量数据也非常有用。 Blanzieri 把 SVM 临近算法应用于垃圾邮件分类的应用中,先用 KNN 找到临近 标记信息,再应用这些标记信息作为特征通过 SVM 算法结合得到垃圾邮件的 分类器[4] 。 SVM 的相关改进与应用还有很多,解决了很多实际问题。因此本文通过对 SVM 算法的设计与改进后应用在 SDSS 光谱数据上分类,从而践行 SVM 的实际 意义。 1.4 论文架构 本文旨在研究支持向量机的分类方法以及通过仿真实验来验证分类改进 方法。第一章概括介绍了 SVM 算法研究的现实意义、国内外现状以及对建立 在统计学习方法上的机器学习做了历史回顾;第二章介绍了机器学习中关于 SVM 的相关概念和基础理论;第三章提出了 SVM 的数学模型,并利用核函数 以及松弛变量对算法改进;第四章首先在 matlab 平台上应用 libsvm 函数库对 UCI 标准数据集中 wine 数据集进行二分类,再进阶地对 SDSS 高维光谱数据集 进行分类并选择其最优核函数及参数;第五章对全文进行了概括总结,并对 SVM 的发展和自己的进一步学习做出展望。
  • 11. 山东大学(威海)毕业论文 第二章 SVM 的理论基础 4 二. SVM 的理论基础 2.1 机器学习与 SVM 的概念 2.1.1 机器学习 机器学习致力于通过计算的手段利用经验来改善系统性能。它的本质上就 是一种对问题真实模型的逼近。在计算机系统里,“经验”常以数据的形式存 在,机器通过模拟人类“学习”的过程由这些数据得到一些模型的算法,然后 能在面对新情况时应用已产生的模型算法得到一个判断。机器学习的目标是使 学得模型能较好地适用于“新样本”,也就是泛化能力强。 根据训练集是否有标记信息的情况,机器学习的任务可大致划分为两大类: “监督学习”(supervised learning)和“无监督学习”(unsupervised learning)。 监督学习的代表有分类和回归,无监督学习的代表有聚类。本文所研究的 SVM (Support Vector Machine)算法属于监督学习中的二分类问题。 2.1.2SVM 机器学习从前期研究的 Fisher 分类器到如今大热的人工神经网络都是通 过验证模型在训练集上的学习能力来评判分类器的,也就是以“经验风险最小 化原则”(ERM)作为分类目标。然而以经验风险作为原则进行的分类实验存 在着“过拟合”的问题,此时该模型的泛化能力非常不好。而支持向量机(SVM) 是科尔特斯(Cortes)和瓦普尼克(Vapnik)在 1995 年率先提出的一种建立在 统计学习理论上的机器学习方法。SVM 在针对小样本问题、非线性问题和高维 模式识别问题中有着独特的优势和出色的表现,并且在其他机器学习问题中结 合 SVM 算法的推广应用能够有所帮助。SVM 最明显的特征是基于瓦普尼克所 提出的结构风险最小化(SRM)原则, 即在分类函数复杂性和样本复杂性之间 折中选择,尽量提高得到模型的泛化能力,使该模型分类性能表现良好。 SVM 问题可以通过数学方式描述成一个凸优化的规划问题来解决,因此已 有的解决凸优化问题的方法都有可以用来进行目标函数的全局最优解搜寻,从 而得到原问题的最优解。相比较而言,其他分类方式(如人工神经网络)通常 只能获得局部最优解而难以找出全局最优解,因为这些分类方式都采用一种基 于“贪心学习”的策略来对假设空间进行搜索。因此 SVM 算法在获取全局最 优解的方面有很好的优势,也因此它逐步被工、业界广泛应用与研究。 2.2VC 维与推广能力 VC 维(Vapnik-Chervonenkis Dimension)的定义:对一个指示函数集,如 果存在 H 个样本能够被函数集中的函数按所有可能的 2 的 H 次方种形式分为 两类,则称函数集能够把 H 个样本打散;函数集的 VC 维就是它能打散的最大 样本数目 H[5] 。若对任意数目的样本都有函数能将它们打散,则函数集的 VC 维是无穷大[5] 。 VC 维是能够表现一个函数集学习能力优劣性的最好方式。VC 维越高,原
  • 12. 山东大学(威海)毕业论文 第二章 SVM 的理论基础 5 问题越复杂,机器学习也会越发复杂。SVM 是建立在 VC 维理论上的,同时需 要满足 SRM 原则。也正是由于在 SVM 中关注的是 VC 维而不是样本维度,因 此在涉及到样本高维问题时 SVM 能够得到很好地解决。这是 SVM 的特点和优 势。 2.3 泛化误差界与结构风险最小化 虽然在选择一个假设对应的分类器后无法得到其真实误差,但是我们可以 用一些能够获得的量来逼近真实误差,从而得到对分类器的优劣性描述。最直 观表示方法就是经验风险 Remp(w),即训练样本在分类器的上的误差。在过去, 经验风险最小化(ERM)是机器学习的训练目标;后来通过不断地实践研究发 现,虽然许多分类器在训练集上能够达到很高的正确率,但是推广应用到真实 的情况下进行分类时却表现泛泛甚至极差。如此表现的原因是:在训练学习样 本集的时候选择了一个较为复杂的分类函数,该分类器的 VC 维非常高,虽然 使模型能准确地记住每一个训练集上的样本点,但却容易误分样本以外的其他 数据。随后研究人员发现 ERM 原则适用的大前提是:经验风险要确实能够逼 近真实风险。而在实际情况中,经验风险不一定能够逼近真实风险,因此仅仅 根据 ERM 作为训练目标是欠妥的。由此引入了泛化误差的概念作为 SVM 的新 的训练目标。 泛化误差界公式: )/()(Re)( hnmpR F+£ ww (2.1) 其中, )(wR 表示真实风险, )(Re wmp 表示经验风险, )/( hnF 表示置信风 险。 (1)经验风险 )(Re wmp :即分类器在给定样本上的误差,是基于已知经 验的,可确定。 (2)置信风险 )/( hnF :即多大程度可信分类结果,只能估算置信区间(上 界)。与两个量有关: ①样本数量 n。样本数量 n 越大,置信风险越小; ②分类函数的 VC 维数 h。VC 维数 h 越大,分类器在其他样本 上的推广能力就越差,置信风险会变大。 置信范围∅(n/h)随 n/h 的变化趋势如下图所示:
  • 13. 山东大学(威海)毕业论文 第二章 SVM 的理论基础 6 图 2.1 n 为训练样本数,h 为 VC 维数,∅(n/h)为置信范围。 3)真实风险 )(wR :即结构风险,使用的拟合模型在任意样本下得到的误 差,实际所得误差: 真实风险 = 经验风险 + 置信风险 (2.2) 图 2.2 关于 VC 维与风险的结构风险最小化示意图 SVM 正是一种 SRM 的算法。 上图根据泛化误差公式画出了。由该图所描述的 h 与风险的关系可得:随着 VC 维的增加经验风险将减小,置信范围会增加。真实风险比经验风险和置信风 险都更大一些。仅要求经验风险最小化(ERM)会出现“过学习”的状况,不利 于泛化;仅要求置信风险够小又会出现“欠学习”的状态,不能够很好的抓住样 本集的特征进行拟合。而结构风险最小化(SRM)能够保证二者达到一个平衡的 状态,使真实风险尽量小,在实际应用中表现良好。 2.4 SVM 算法的优点 1)小样本:与问题的复杂程度相比,SVM 算法要求的真正的样本数相对较 少。这是因为支持向量是 SVM 的训练后得到的结果,最终产生的分类面是由支 持向量决定。
  • 14. 山东大学(威海)毕业论文 第二章 SVM 的理论基础 7 2)鲁棒性:因为仅由少数的支持向量决定分类面,所以这使得该分类器能 够很好的维持其原有特性。这主要体现在: ①减少或者增加不是支持向量的样本点对分类模型不会产生任何的影响; ②支持向量样本集具有一定的鲁棒性; ③在某些实际情况中,SVM 对核函数的选取并不敏感。 3)非线性:在线性不可分时,SVM 能够很好的作用找到最优分类面,这可 以通过加入松弛变量得到惩罚函数以及各类核函数技术来实现。在核函数法中, SVM 利用内积核函数替代向高维空间的非线性映射来实现转化。核函数的应用 与改进有还很大的空间。这样对于非线性问题的处理在实际应用中非常有效。 4)高维模式的识别:相比样本集处于高维的情况下,SVM 得到的分类器却 十分简洁。这也是因为仅由少数的支持向量就能确定分类器,而与样本空间维数 无关。计算的繁复程度也由此决定,因而能防止“维数灾难”的发生,不会给计 算机和存储带来麻烦。
  • 15. 山东大学(威海)毕业论文 第三章 SVM 的算法设计与改进 8 三.SVM 的算法设计与改进 支持向量机(SVM)专门针对有限样本集的情况,通过将其转化为一个二 次寻优凸规划问题来得到全局最优解。对于非线性问题,支持向量机算法通过 对现实中的问题进行一系列非线性变换将其映射到高维特征空间里解决,从而 在高维空间中构造对应原问题的线性分类器来实现分类。 3.1 线性分类器 3.1.1 间隔与最优超平面 定义一个数据集 niyxD iii ,...,2,1),,( == ,其中 ix 是特征向量, iy 是分类标 记。以一个二分类问题举例,则 iy 只有两个值+1,-1。 SVM 分类器的最基本思想就是基于训练集 D 在样本空间中找到一个超平 面的划分,将不同类别的样本分开。划分超平面可由以下线性方程描述; 0)( =+= bxwxf T (3.1) 假设超平面 ),( bw 能将训练集中样本点正确分类,即对于 Dyx ii Î),( ,当 yi 分别等于+1,-1 时,有: î í ì -=<+ +=>+ 1,0),( 1,0),( yibx yibx i i w w (3.2) 如果限制样本和超平面最小距离为 |||| 1 w ,则可得: î í ì -=-£+× +=³+× 1,1)( 1,1)( yibx yibx i i w w (3.3) 即: nibxy i T i ,...,2,1,1][ =³+×w (3.4) 所有属于正类的点 x+ 带入后有 1)( -³xf ,所有属于负类的点 x- 带入后有 1)( -£xf ,所有带入值介于+1 和-1 之间拒绝判断。距离超平面最近的使上式等 号成立的几个训练样本点,被称为“支持向量”(Support Vector,SV)。(如下图 H1、H2 平面上带双圈的样本点即为支持向量。)
  • 16. 山东大学(威海)毕业论文 第三章 SVM 的算法设计与改进 9 图 3.1 关于分类面、支持向量与分类间隔的图示 定义一个样本点到某个超平面的间隔: ][ bxy i T ii +×= wd (3.5) 现在把w 和 b 归一化,那么间隔即写为: )x(g| |||| ii w d 1 = (3.6) 式(3.6)为几何间隔,表示点到超平面的欧氏距离。 这两个不同类别的支持向量到超平面的距离之和,也就是“分类间隔”为: |||| 2 |||| |)(| 2||2 0 ww =´=´=D xg r (3.7) 而几何间隔与误分次数存在以下关系: 2 ) 2 ( d R £误分次数 (3.8) 其中 δ 是样本集合到分类面的间隔, ||||max ixR = 。 从式(3.8)可以看出,误分次数的上界是根据几何间隔 id 而定的。由上 式关系可得:当几何间隔越大时,误差上界就越小。因此几何间隔 id 成为衡量 一个解优质与否的标志,几何间隔最大化也成为 SVM 算法的训练目标。 3.1.2 线性分类器的数学模型 求解 SVM 线性分类器的问题可以转化为一个规划问题。一个规划问题需 要找其求解目标和约束条件。
  • 17. 山东大学(威海)毕业论文 第三章 SVM 的算法设计与改进 10 由几何间隔的定义式可知,最大化几何间隔可以转化为找最小 |||| w ,而求 解 2 |||| 2 1 w 与求解 |||| w 的最小完全等价且便于之后的运算与变换。因而规划问 题的目标是: 2 , |||| 2 1 min w w b (3.9) 而由于归一化后相当于把间隔固定为 1,满足上面得到的: nibxy i T i ,...,2,1,1][ =³+×w (3.10) 因此,约束条件则可以写为: nibxyts i T i ,...,2,1,1][.. =³+×w (3.11) 所以,支持向量机的基本模型为: n,...,,i,]bx[y.t.s |||| i T i b, min 211 2 1 2 =³+×w w w (3.12) 对于如此一个凸二次规划,它一定有全局最优解,并且可以找到。 3.1.3 线性分类器的求解 对于上述的优化问题,其实求解的是 f(x),也就是求解w 和 b 两个参数的 进程。而在求得w 后找到某些样本带入后即可求得 b,因此,求解 f(x)也就是 求解w 。 可以通过拉格朗日对偶问题得到: ni xy yts xxyy i iii ii n ji jijiji n i i ,...,2,1,0 0.. )( 2 1 max 1,1 =³ = = ×- å å åå == a aw a aaa (3.13) 若 nii ,...,2,1,0 =³a 则称对应 xi 为支持向量(SV),则最优超平面为: åÎ =+× SVx iii i bxxy 0)(a (3.14) 从而将求解w 转化成了求解 ia ,这样的变型少了很大一部分不等式约束。 最后得到分类决策函数:
  • 18. 山东大学(威海)毕业论文 第三章 SVM 的算法设计与改进 11 )),(sgn()sgn()( 1 ** å= +=+×= l i iiii bxxybxxf aw (3.15) 其中 sgn(.)为符号函数,l 为支持向量数目, *b 为分类阈值。式子中的求 和只对支持向量进行,即拉格朗日乘子中非零的 ia 对应的样本向量才会参与 求和运算。可以通过式(3.14)的求解a 得到分类决策函数与最优分类面。 3.2 非线性分类器 如果在某些情况下,原始样本空间中的训练集不存在一个能够将两类样本 正确划分的超平面,那么原问题就是线性不可分的。若此时仍用线性分类器来 分类,那么分类误差将会很大,因此这样的问题要求寻找非直线、更高维的分 离曲面。对于这样的问题,上述线性规划模型中的约束条件也不再成立。解决 样本空间非线性的问题有两个办法: 1)引入松弛变量:对于某些近似线性可分的问题,即待分的两类样本点 仅有少量的交叉、融合的情况时通过线性划分造成的误分点很少,此时仍可考 虑线性划分,但需要对普通的线性分类器做一个改进,引入松弛变量来控制误 分情况。 2)核函数法:可以将样本集从原始空间映射到一个更高维的特征空间, 使得该样本集在高维的特征空间里线性可分。如果原始空间是有限维的,那么 一定存在一个高维特征空间使样本线性可分,也就能够通过转化得到原问题的 解,找到一个合适的分类器。 3.2. 1 引入松弛变量法 3.2.1.1 引入松弛变量正则化 式(3.12)表示的最基本的 SVM 分类器其实对应于“硬间隔”分类法。该方 法要求所有的样本点与分类面的间距都必须大于某个固定值,这可能会受到少 量距离较远的点(极有可能是“噪声”的点)的控制,反而使分类器不理想。 此时,引入松弛变量ξ加到原本要求的硬性阈值上,增加系统的容错性变为“软 间隔”分类法就能很好的改善这一状况。 如此,约束条件将变为: nibxy T i ,...,2,1,1])([ =-³+F× xw (3.16) 描述损失(cost): 一阶软间隔分类器: å= l i i 1 x ; 二阶软间隔分类器: å= l i i 1 2 x 。 如果引入一个成惩罚因子(C,cost),则原来的优化问题变为:
  • 19. 山东大学(威海)毕业论文 第三章 SVM 的算法设计与改进 12 nibxyts C T i l i i b ,...,2,1,1])([.. |||| 2 1 1 2 , min =-³+F× + å= xw xw w (3.17) 由拉格朗日对偶问题得: niCyts xxyy i n i ii n i i n i n j jijiji ,...,2,1,0,0.. )( 2 1 min 1 11 1 =££= -× å ååå = == = aa aaa (3.18) 可得到最优w 与b ,从而找到全局最优解。 3.2.1.2 引入松弛变量法的改进 1)惩罚因子 C 的值意义:C 的值决定了对于离群点损失的重视程度。C 越 大,越不愿放弃离群点;若极端化 C 为无穷大,则不会放弃任何一个离群点进 行划分,即为硬间隔分类。 2)惩罚因子 C 的最优值选取:参数 C 不是变量,而是根据每一个 C 值解 出一个线性分类器,再用测试数据检验分类器质量,之后取下一个 C 值重复以 上步骤。根据多个 C 值得到的线性分类器在测试集上的分类准确度来选取参数 C 的最优值。 3)惩罚因子 C 的推广引用:求解的目标函数可以根据样本点的重要程度 给出相应不同的 C,则可以用于解决分类问题中的样本偏斜(unbalanced)问 题。 3.2.2 核函数法(kernel methods) 3.2.2.1 核函数法原理 如果在某些分类问题中不能由线性分类器直接划分,则可以考虑构造一个 新的特征向量使问题能够转化而得到划分。因此我们考虑将低维空间里的特征 向量通过一个映射(非线性变化)向高维空间进行转化,使得转化后能在高维 空间中找到最优分类面。 图 3.2 从低维空间向高维空间转化
  • 20. 山东大学(威海)毕业论文 第三章 SVM 的算法设计与改进 13 即找到非线性变换: pmRxRx mP >ÎF®ÎF ,)(: , 则映射后原问题变为: niCyts xxyy i n i ii n i i n i n j jijiji ,...,2,1,0,0.. ))()(( 2 1 1 11 1 min =££= -F×F å ååå = == = aa aaa a (3.19) 由之前的数学推导可知,实际上在高维空间的计算过程中,只需要求得向 量的内积 Φ(xi)Φ(xj)就能找到分类面。而由于现实情况中特征向量维数可能会 很高,则在实际运算过程中的内积计算可能会因运算量过大而导致一些问题。 统计学习理论指出,根据 Hilbert-Schmidt 原理。只要一种运算满足 Mercer 条 件,它就对应某一变换空间中的内积[6] ,基于此前提,可以通过引入核函数 K(.) 的方法来求得高维空间里的向量内积,从而得到高维空间中的最优分类面。而 核函数正是这样一种应用。 核函数 K(.): ))()((),( ji xxXjXiK FF= (3.20) 引入核函数后原问题写做: niCyts XjXiKyy i n i ii n i i n i n j jiji ,...,2,1,0,0.. )),( 2 1 1 11 1 min =££= - å ååå = == = aa aaa a (3.21) 在求解过程中把该问题当做线性可分来做,而在内积时用核函数 K(.)来计 算,从而求得a ,再与选定的核函数进行结合则可求得最优分类器。引入核函 数的分类决策函数为: )),(sgn()sgn()( 1 ** å= +=+×= l i iiii bxxKybxxf aw (3.22) 3.2.2.2 核函数 只要满足了Mercer条件的函数都可以作为核函数使用。常用的核函数有: (1)线性核函数: ji xxXjXiK ×=),( (3.23) 线性核函数是最普通和低级的核函数,当样本在低维空间可分时可用此核 函数计算内积,求得线性分类器。 (2)多项式核函数: q ji cxxXjXiK ])[(),( +×= (3.24) 属于全局核函数,因此其局部特性较差,距离分类面很远的样本点也能对 分类器产生影响。参数 q 是指核函数的维度。q 越大代表映射维度越高越容易
  • 21. 山东大学(威海)毕业论文 第三章 SVM 的算法设计与改进 14 分类,但计算的复杂程度也因此增加。但需注意,复杂的分类器虽然能够在训 练集上得到很好的学习效果,但有可能因为过拟合而推广性差。 (3)高斯核函数(RBF 核): )||||exp(),( 2 ixxXjXiK --= g (3.25) 高斯核函数是适用范围较广的核函数。对于较近的点有很好的分类效果, 局部性能非常好。参数γ为核函数的作用范围,但也需注意γ越大推广性越差, 全局性表现较差。 以s 为参数的高斯径向基函数形式: ) |||| exp(),( 2 2 s ixx XjXiK - -= (3.26) (4)sigmoid 核函数: sigmoid 核函数相当于双层神经网络,在 SVM 应用较少,应用时也需要满 足一些条件。 推广: 现实问题抽象成 SVM 模型解决的时候,可以通过结合松弛变量与核函数 的方式来达到线性可分的状态,从而找到合适的分类器。 3.2.2.3 核函数法的改进 (1)核函数的选取 在解决实际问题时,要根据以上提及的四种核函数特性以及数据集的特征 来选择合适的核函数。 ①对于规模较小且维数较低的分类问题,上述四种核函数都可以分别采用, 并选取核函数的最优参数使模型达到最好的效果。此时通过这四种核函数得到 的分类器都有很好的泛化能力[7] ; ②对于样本数目较大的分类问题,高斯径向基核函数及 sigmoid 核函数较 为适用,研究发现这两个函数在收敛方面的特性明显好于多项式函数[8] ; ③对于输入向量维数较高的模式识别问题,多项式核函数和高斯核函数都 可以用于分类[9] ; 综合考虑各种情况,无论维度高低、样本数量多少,高斯核函数均被视为 比较合理的理想选择,同时它还具有较宽的收敛域[10] 。并且因为高斯函数会有 较强的非线性映射能力,在实际应用中最为广泛。 (2)高斯核函数参数的优化选取 以下的已证明结论用于高斯核函数的参数选定: 定理 3.1 如果 0®s ,则所有的样本都是支持向量,所有的训练样本都能 够被正确分出[11] 。 定理 3.2 ¥®s ,高斯核函数对新样本的正确判断能力是零,即把它所有 样本点判为一类[11] 。 根据以上两个定理可以得知: 0®s 时训练集中所有样本点都能被精确分 类,且每个样本点都是支持向量,然而这会带来“过拟合”的现象,导致在测 试集上的预测非常不准确,泛化能力差;而当 ¥®s 时,高斯核函数平等的对 待每一个样本,把所有的样本点都归为一类,这会产生“欠拟合”的现象,在
  • 22. 山东大学(威海)毕业论文 第三章 SVM 的算法设计与改进 15 测试集上无法进行推广。 而在实际情况中当s 小于某一个值的时候,分类正确率反而会下降,说明 s 的取值并非简单的线性变化,需要在实际过程中进行测试调整从而得到最优 的参数值。 3.3 实际情况下的改进建议 实际上,在用过 SVM 算法得到一个分类器后,我们会通过测试集在已有 分类器上的表现来确定机器学习的好坏程度。通过对测试误差和训练误差的比 较再结合训练样本点的数量,基于对结构风险的理解上能够提出以下几点初步 改进的建议: (1)小样本问题:训练样本点的数量很小而特征维数过大且远远大于训 练样本数量时,容易造成“过拟合”的情况。此时可以增加样本数量或降低样 本维数等方法来改进。 (2)当训练误差很小、测试误差很大时,考虑为“过拟合”的情况,可 减小拟合函数 VC 维来改进。 (3)当训练误差与测试误差都很大时,考虑为“欠拟合”的情况,可增 加拟合函数的 VC 维来改进。
  • 23. 山东大学(威海)毕业论文 第四章 SVM 算法的 MATLAB 仿真研究 16 四. SVM 算法的 MATLAB 仿真研究 4.1 实验前准备与介绍 4.1.1 libsvm 与 matlab 本文 SVM 在 MATLAB 中的仿真研究基于开源软件库 LIBSVM 在 Matlab 上 的运行。 LIBSVM 是台湾大学林智仁(Lin Chih-Jen)教授等人于 2001 年开发设计的一 个简单、易于使用和快速有效的 SVM 模式识别与回归的软件包。该软件既提 供了已编译完成的可在 Windows 系列系统的执行文件,同时也提供了对应的 源代码以便研究人员进行改进、修改与在其他操作系统上应用。该软件库能够 能帮助简化在 matlab 平台上的代码编写,使用户能更高效率地应用 SVM 算法 进行分类、预测。 libsvm 工具箱有 C-SVC, nu-SVC, one-class SVM, epsilon-SVR,nu-SVR 等多种模 型可供使用。同时支持分类、回归问题。Libsvm 还采用 1v1 算法支持多分类, 比起 matlab 自带的 svm 函数只支持二分类在科学研究上能被更广应用。在研 究 RBF 核函数时 libsvm 可以对参数 gamma 进行调试,这让研究人员更为方便 地研究 RBF 核函数与具体问题的应用。 libsvm 建立模型时输入参数意义: 表 4.1 libsvm 函数库中 svmtrain 函数参数设置表 -s : SVM 类型设置 (默认 0) -t: 核函数类型(默认2) -g(r,gamma) -c(cost) 0 C-SVC(本文 采用) 0 线性核函数 u'v 核函数中的 gamma 函数 设置(针对 多项式 /RBF/sigmoid 核函数) 设置 C-SVC,e -SVR 和 v-SVR 的参数 (损失函 数)(默 认 1) 1 v-SVC 1 多项式核函数 (r*u'v + coef0)^degree 2 一类 SVM 2 RBF 核函数 exp(-r|u-v|^2 3 e -SVR 3 Sigmoid 核函数 tanh(r*u'v + coef0) 4 v-SVR 执行上述命令后,可得模型 model:
  • 24. 山东大学(威海)毕业论文 第四章 SVM 算法的 MATLAB 仿真研究 17 图 4.1 模型参数 则上图参数的意义如下表所示: 表 4.2 模型参数表 Parameters (列向量上到下依次为) -s svm 类型 SVM 设置类型(默认 0) -t 核函数类型 核函数设置类型(默认 2) -d degree 核函数中的 degree 设置(针对 多项式核函数)(默认 3) -g r (gamma) 核函数中的 gamma 函数设置 (针对多项式/rbf/sigmoid 核函 数) (默认类别数目的倒数) -r coef0 核函数中的 coef0 设置(针对多 项式/sigmoid 核函数)((默认 0) nr_class 分类的类别数 totalSV 总支持向量数 label 类别标签 nSV 对应标签下的支持向量数目 4.1.2 实验步骤 (1)数据准备:找到合适的数据集,并把数据转化为 matlab 能够识别的 数据格式。 (2)数据的前期处理:将数据集导入 matlab 中,对数据进行滤波和归一 化 (3)matlab 仿真: 应用 libsvm 里的函数对数据集中选定的训练集进行训 练,再将得到的模型应用在测试集上,根据已有的标签来判断分类情况,从而 得到分类正确率来查看模型质量。 (4)重复仿真过程,选择核函数并修改相关参数得到该问题的最优分类 面。
  • 25. 山东大学(威海)毕业论文 第四章 SVM 算法的 MATLAB 仿真研究 18 4.2SVM 算法在 UCI 数据集上的应用——SVM 算法的二分类简单应用 4.2.1UCI 数据集及其中 WINE 数据集介绍 UCI 数据集是一个机器学习中常用的标准测试数据集,由加州大学欧文分 校提供。目前此数据库目前共有 349 个数据集,数据源涉及领域非常广,可以 满足多种类的实验和分析需求。 本文选择 UCI 数据集中 WINE dataset 来做一个二分类研究。WINE 数据集 是对三个不同品种的葡萄酒共 178 条记录的化学分析结果,这三种葡萄酒都起 源于意大利但是派生出三个不同的品种。 表 4.3 wine 葡萄酒数据集的基本信息 样本类型 样本数目 样本维数 类型一 59 13 类型二 71 13 类型三 48 13 分析结果取决于这三种葡萄酒中 13 种化学成分的含量。我将选择其中的 第一类和第二类来做 SVM 的二类划分。需要注意这个数据集的属性特点:所 有属性变量都是连续变量。以下是关于 wine 数据集的属性表格,其中这 13 个 特征属性分别代表着葡萄酒的 13 种化学成分,具体如下表。 表 4.4 WINE 数据集属性表 英文名称 中文名称 Alcohol 酒精度 Malic acid 苹果酸 Ash 灰分 Alcalinity of ash 灰分碱度 Magnesium 镁 Total phenols 总酚含量 Flavanoids 黄酮含量 Nonflavanoid phenols 非黄酮类酚含量 Proanthocyanins 花青素 Color intensity 色彩亮度 Hue 色调色彩 OD280/OD315 of diluted wines 吸光度 Proline 脯氨酸 4.2.2wine 数据集实验步骤 (1)获取 wine 数据集及参数 >> load wine.data; %加载 wine 数据集进入 matlab (2)提取数据集 >> data = wine(1:130,1:13); %提取一、二类 130 个数据
  • 26. 山东大学(威海)毕业论文 第四章 SVM 算法的 MATLAB 仿真研究 19 [data,ps]=mapminmax(data); ps.ymin=0; data=mapminmax(data,ps); 归一化前后对比: 图 4.2 数据集 wine 的特征向量值 图 4.3 归一化后的数据集 wine 的特征向量值 (3)测试集与训练集的选取 >> data = wine(1:130,2:14); %提取 wine 中两类前 130 个数据以及他们的特 征值(其中第一类 59 个样本,第二类 71 个样本点) >> label = wine(1:130,1); %提取 wine 中两类前 130 个数据以及他们的标签 >> label = [label(1:59,:);-ones(71,1)]; %将标签调整为 1,-1 >> traindata = [data(1:40,1:13);data(60:110,1:13)]; >> trainlabel = [label(1:40,:);label(60:110,:)]; >> testdata = [data(41:59,1:13);data(111:130,1:13)]; >> testlabel = [label(41:59,:);label(111:130,:)]; (4)用 libsvm 函数库函数 svmtrain()建立仿真模型,再用 svmpredict()函数 预测模型精确度 >> model = svmtrain(trainlabel,traindata,'-s 0 -t 0'); %建立 SVM 模型 >> [ptrain,acctest] = svmpredict(trainlabel,traindata,model); %查看模型在训练
  • 27. 山东大学(威海)毕业论文 第四章 SVM 算法的 MATLAB 仿真研究 20 集上的准确率 Accuracy = 100% (91/91) (classification) >> [ptest,acctest] = svmpredict(testlabel,testdata,model); %% 查 看 模 型 在 测 试集上的准确率 Accuracy = 100% (39/39) (classification) 4.3SVM 算法在划分光谱上的应用——核函数的选择和参数选择 4.3.1 光谱简介及分析意义 随着信息社会的发展与天文观测技术的不断提高,人类对宇宙观测到的来 源越来越多、观测波段也越来越广,且观测所产生的数据量也以观测深度的三 次幂形式增长。SDSS,2MASS, NVSS, FIRST,2dF 等大型天文望远镜得到的数据堪 称海量。科学家们面临着这样的问题:如何通过大量的观测数据来抽象出天文 模型今儿对宇宙展开更广阔的研究。因而找到一个有效的数据分析方式是非常 必要而急需的。 SVM 算法提供了一个很好的基于样本的推广模型,而且它的鲁棒性也很好, 这对于研究天文数据来说是一种非常可行的数学模型。而且通过研究发现, SVM 算法比起 LVQ、SLP 等算法来说性能更加良好。因此用 SVM 算法来进行分 类预测本数据集是非常合适的。 本实验采用的是 SDSS(Sloan Digital Sky Survey)数据库里的非类星体光 谱与类星体光谱数据进行分类实验。 表 4.5 样本数据 样本类型 样本数目 样本维数 非类星体 1137 3522 类星体 1000 3522 4.3.2K 折交叉验证法 交叉验证(Cross Validation)是用来验证分类器性能一种统计分析方法。在操 作过程中将原始数据集进行分组,一部分为训练集用于训练后得到分类器,另 一部分为测试集用于对分类器的测试。 本实验所用验证法为交叉验证法中的“K 折交叉验证法”。 K 折交叉验证法:将初始样本点分割成 K 个子样本,一个单独的子样本被 保留作为验证模型的数据,其他 K-1 个样本用来训练[12] 。交叉验证重复 K 次, 每个子样本验证一次,平均 K 次的结果或者使用其它结合方式,最终得到一个 单一估测[12] 。这个方法的优势在于,同时重复运用随机产生的子样本进行训练 和验证,每次的结果验证一次,10 折交叉验证是最常用的[12] 。 (为减少数据验证时间本实验采用 5 折验证来实现,之后的求解最优参数 gamma 时采用的是 3 折交叉验证) 4.3.3 实验过程 1)获取类星体光谱数据集以及非光谱数据集; 2)滤波并归一化数据
  • 28. 山东大学(威海)毕业论文 第四章 SVM 算法的 MATLAB 仿真研究 21 ①对类星体光谱数据集 P1 进行滤波和归一化产生新数据集 Y: 滤波: P1T = P1'; Y=medfilt1(P1T,60); Y = Y'; 归一化: [Y,ps]=mapminmax(Y); ps.ymin=0; Y=mapminmax(Y,ps); 滤波归一化前后对比(P1 到 Y): 图4.4 原始类星体数据集P1 图4.5 滤波与归一化之后生成的数据集Y 数据归一化后值在 0~1 之间。 ②对非类星体数据集 P 进行归一化(已滤波):
  • 29. 山东大学(威海)毕业论文 第四章 SVM 算法的 MATLAB 仿真研究 22 [P,ps]=mapminmax(P); ps.ymin=0; P=mapminmax(P,ps); 归一化后前后对比(P到P): 图4.6 原始非类星体数据集P 图4.7 滤波与归一化之后的数据集P 数据归一化后值在 0~1 之间。 【法一】延续验证 wine 数据集分类的基本方式,通过在确定的训练集与 测试集的学习,不断修改参数 C 或核函数来得到优化模型 3)选取训练集与测试集: >> label1 = ones(1137,1); %P 数据集的标签,设为 1,为正类 >> label2 = -ones(1000,1); %Y 数据集的标签,设为-1, 为负类 >> traindata = [P(1:900,1:3522);Y(1:800,1:3522)]; %选取 P 与 Y 数据集中部分 数据组合为 traindata 矩阵作为训练集 >> trainlabel = [label1(1:900,:);label2(1:800,:)]; %找到 P 与 Y 数据集对应的标
  • 30. 山东大学(威海)毕业论文 第四章 SVM 算法的 MATLAB 仿真研究 23 签为训练集标签 >> testdata = [P(901:1137,1:3522);Y(801:1000,1:3522)];%P与Y余下数据组合 为 testdata 作为测试集 >> testlabel = [label1(901:1137,:);label2(801:1000,:)];%找到 P 与 Y 数据集对 应的标签为测试集标签 4)用 libsvm 函数库函数 svmtrain()建立仿真模型,再用 svmpredict()函数 预测模型精确度,并不断修改参数使模型在训练集及测试集上表现良好。 >> model = svmtrain(trainlabel,traindata,'-s 0 -t 2'); 图 4.8 参数设置与模型参数 具体参数设置与分类器支持向量结果: 参数设置为:C-SVC 方式;RBF 核函数;C=3;gamma=2.83938*10-4 为二分类问题 总的支持向量为 900 个 二分类问题的标签设置为:-1,1 对应的-1 标签下的支持向量有 447 个, 对应的 1 标签下的支持向量有 453 个。 (关于 libsvm 具体参数设置介绍请见 4.1.1libsvm 相关介绍) 预测结果: >> [ptrain,acctest] = svmpredict(trainlabel,traindata,model); Accuracy = 92.7647% (1577/1700) (classification) >> [ptest,acctest] = svmpredict(testlabel,testdata,model); Accuracy = 94.0503% (411/437) (classification) 在训练集上的分类正确率为 92.7647%,其中正确分类个数为 1577 个(共 1700 个训练样本); 在测试集上的正确分类率为 94.0503%,其中正确分类个数为 411 个(共 437 个测试样本)。 【法二】通过更为科学的交叉验证法来验证分类正确率,并选择合适的核 函数以及不断修改参数 C 和和核函数参数来得到最优化模型 3)交叉验证法:
  • 31. 山东大学(威海)毕业论文 第四章 SVM 算法的 MATLAB 仿真研究 24 给两个数据集分别存储一个标签: >> label1 = ones(1137,1); %P 数据集的标签,设为 1,为正类 >> label2 = -ones(1000,1); %Y 数据集的标签,设为-1, 为负类 把类星体与非类星体的光谱数据合为一个集合 D,把他们的标签也合为一 个集合 label: >> D = [P;Y]; >> label = [label1;label2]; 再用 svmtrain 命令: >> model11 = svmtrain(label,D,'-s 0 -t 2 -c 0.1 -v 5'); 此处返回的不是一个模型,而是交叉验证后的得到的平均分类正确率 -v 参数是设置交叉验证的 k 值,此处为 5 折 4)通过上述命令分别建立五个模型后最终得到一个返回值——平均分类 正确率 图 4.9 5 折交叉验证法在模型下的 matlab 仿真 由此可得得到分类正确率率为 74.5438%。 4.5.4 实验结果及改进 用【法二】交叉验证法的结果 4.5.4.1 核函数选取与参数 C 选取结果对比
  • 32. 山东大学(威海)毕业论文 第四章 SVM 算法的 MATLAB 仿真研究 25 表 4.6 核函数的选择与参数 C 选择的准确率情况表格 C 线性核函数 多项式核函数 高斯径向基 核函数 0.1 97.7071% 54.0945% 74.5438% 0.5 97.6603% 61.3009% 89.5648% 1 97.5199% 65.6528% 92.9808% 5 97.1455% 83.9027% 97.4731% 10 97.1923% 90.9686% 98.0346% 50 97.1923% 96.0693% 99.2045% 100 97.1923% 96.8648% 99.6724% 200 97.1923% 97.1455% 99.6724% 500 97.1923% 97.9410% 99.4385% 1000 97.1923% 98.1282% 99.4853% 1500 97.1923% 98.0814% 99.4385% 2000 97.1923% 98.3154% 99.4853% 2500 97.1923% 98.2218% 99.4385% 3000 97.1923% 98.2218% 99.4853% 对应的参数选择图像为: 图 4.10 不同核函数参数选择与分类正确率的关系曲线
  • 33. 山东大学(威海)毕业论文 第四章 SVM 算法的 MATLAB 仿真研究 26 可以由上表与上图知: 1)线性核函数(蓝色线):随着 C 的增大精确度缓缓升高,并在 C=10 后 C 取更大值时精度保持不变,支持向量的个数也保持不变。并且其精度一直保 持在很高水平,都是 97%以上的精确度。 2)多项式核函数(红色线):随着 C 的增大精度逐渐增大,并在 C=50 后 增速放缓,精度达到 96%以上;在 C=2500 及以后精度保持不变,维持在 98% 左右。 3)高斯径向基核函数(绿色线):随着 C 的增大精度逐渐增大,并在 C=5 后增速放缓,精度达到 97%以上;在 C=50 之后精度更是超过了 99%。 然而由 3.2.1 松弛变量的引入理论来说,C 越大越不愿意放弃离分类面较 远的点,泛化能力会变差,因此 C 的选择通常不会很大。因而在光谱分类的问 题上多项式核函数并不适合该问题,而线性核函数的表现较为良好,精度较高, 还有使用高斯径向基核函数能够在保证 C 较小泛化能力良好的情况下用交叉 验证法验证有比线性核函数更高的精确度。因此选择高斯径向基核函数来得到 决策函数是本问题最恰当的模型建立方式。 4.5.4.2 通过 faruto 编写的 SVMcg 函数得到高斯径向基核函数参数σ的最 优结果 1)SVMcg 函数使用如下表所示 [bestacc,bestc,bestg] = SVMcg(train_label,train,cmin,cmax,gmin,gmax,v,cstep,gstep,accstep) 表 4.7 SVMcg 函数的参数意义表 train_label 训练集标签.要求与 libsvm 工具箱中要求一致 train 训练集.要求与 libsvm 工具箱中要求一致 cmin 惩罚参数 c 的变化范围的最小值(取以 2 为底的对数后),即 c_min = 2^(cmin),默认为 -5 cmax 惩罚参数 c 的变化范围的最大值(取以 2 为底的对数后),即 c_max = 2^(cmax).默认为 5 gmin 参数 g 的变化范围的最小值(取以 2 为底的对数后),即 g_min = 2^(gmin).默认为 -5 gmax 参数 g 的变化范围的最小值(取以 2 为底的对数后),即 g_min = 2^(gmax).默认为 5 v K 折交叉验证的参数,即给测试集分为几部分进行 cross validation, 几折则设置为几,默认为 3 cstep 参数 c 步进的大小.默认为 1 gstep 参数 g 步进的大小.默认为 1 accstep 最后显示准确率图时的步进大小. 默认为 1.5 2)对于非类星体以及类星体的二分类问题寻找最优参数 C 和最优参数 g >> traindata = [D]; %选取 P 与 Y 数据集中部分数据组合为 traindata 矩阵作为训练集 >> trainlabel = [label]; %找到 P 与 Y 数据集对应的标签为训 练集标签 >> [bestacc,bestc,bestg] = SVMcg(trainlabel,traindata) %找到该训练集下的
  • 34. 山东大学(威海)毕业论文 第四章 SVM 算法的 MATLAB 仿真研究 27 分类最优准确率,以及 SVM 算法改进后的参数 C 及核函数参数 gamma 的值。 该函数生成了 c,g 变化时精度变化的图形: 图 4.11 参数 c,g 与分类正确率之间的关系图 可以从图中直观的感受到光谱数据集上 c,g 的变化与分类正确率的关系。 通过 MATLAB 进行交叉验证法的运算后可得到最优 c,g 以及分类正确率: 图 4.12 返回结果值 即最优精度为 99.9064%,最优参数 C=2,最优参数 g=0.0313
  • 35. 山东大学(威海)毕业论文 第四章 SVM 算法的 MATLAB 仿真研究 28 4.5.5 光谱分类实验中核函数的选择以及参数选择小结 因此,在对于数据集 P(非类星体光谱)和数据集 P1(类星体光谱)组合 成的 D 数据集进行分类实验模拟的时候最优的模型为选择惩罚因子 C=2,高斯 径向基核函数且其参数 g=0.0313。此时模型的分类准确率为: 由上述过程我们可以得到如何对 SVM 的基本模型进行改进的方法。 1)通过不同核函数采用情况下的分类准确率可以帮助选择最合适该数据 及上的核函数; 2)通过 K 折交叉验证法和 faruto 的 SVMcg 函数的实现,我们得到参数的 最优值,从而确定决策函数,得到最优分类器。
  • 36. 山东大学(威海)毕业论文 第五章 总结 29 五.总结与展望 在机器学习越发广泛应用于信息社会的今天,SVM 算法的研究越发凸显其 实际意义。本文首先通过对统计学习理论的基础介绍引出了 SVM 算法的理论 基础,指出了该算法的优势和特点。然后通过把算法原理以数学形式推导与建 模得到了 SVM 模型的基本形式。针对于实际情况,本文参考了大量的文献和 书籍对基本的 SVM 算法进行改进,把线性分类器通过加上松弛变量和核函数 推广到普遍的非线性分类器问题研究上。并且通过 matlab 平台和 Libsvm 函数 库进行了由浅入深的验证和改进过程。先通过 UCI 标准数据集的 wine 样本集 实现最基本的分类和预测,由此进行第一步基础实验验证。并通过改变参数 C 的值和其得到模型的准确率来改进参数 C。接着本文通过对于 SDSS 项目获取 的天文数据的处理来加深 SVM 算法的现实研究意义。在对数据的基本处理后, 通过交叉验证法来找到不同核函数对于同一问题的表现情况,并对此作出分析 与归纳。接着,再通过前辈提供的寻找 C,g 参数的函数 SVMcg 来找到该样本 上的最优参数 C 和 g,从而实现了一个现实问题的解决流程,得到了最优决策 函数。 通过以上实验的 matlab 仿真实验研究我们可以发现 SVM 在“分类”的表 现良好。这也更加印证了有越来越多人开始学习和应用 SVM 算法原理的趋势。 相信经过更深入和更广阔的研究应用,SVM 算法能够给决策和分析在商业、医 疗、人口调查等方面带来更多的现实价值。 通过这样的从理论到实际研究的研究学习过程,我对 SVM 的算法理解更 为深刻,也让我对研究生学习继续研究数据挖掘、机器学习的目标更为清晰, 同时也为我更深入的在研究生阶段进行学习和研究 data science 带来了一个良 好的开端和思维方式。
  • 37. 山东大学(威海)毕业论文 谢辞 30 谢辞 在毕业论文逐渐完稿的过程中,大学四年的生活也渐渐走到了结尾。我即 将将面对着一个结束,也将迎来一个新的开始。回首四年的时光,我真的在这 四年成长了很多。这些成长除了我自己的努力以外,我的母校、老师、同学们 以及一直陪伴我支持我的父母、朋友们都带给我了很多很多。在此,我希望向 他们表示衷心的感谢,感谢大家对我的支持与关心。 首先我要感谢我的母校,在这里我接受了良好的教育,不仅是在学业学识 上得到了栽培,也在校园氛围的影响下逐渐成为了一个人格完整、心怀梦想的 成年人。希望我的母校能够在后来人的建设下越来越好,培养更多优质的社会 栋梁,也能够因为曾经培养过的学生感到骄傲。我感念母校的一切,也祝愿母 校的一切。 进而我想感谢我的指导老师——张立老师。从大学三年的课堂接触,我发 现他是一个在专业学习上严谨负责的好老师,性格温和耐心。是他让我在学习 上细致而透彻,也是他让我发现了我热爱的研究方向进而有研究生的进阶学习。 选择张立老师作为导师是因为我知道他的严谨专注能够让我在毕业设计的时 候学习到更多的东西。然而事实上我得到的比这更多:他悉心指导我如何学习 新的理论知识,跟我一起讨论我毕业设计中遇到的问题,还有指导我如何书写 一篇结构完整内容充实的论文。这些都让我受益匪浅。因此我在这里衷心感谢 张立老师对我的教导,也祝愿和相信他能够在学术路上走得更好。 还有在大学四年中,身边的同学们与我在生活和学习上互相帮助、互相探 讨、互相鼓励。我很感念他们和我的交流,让我有了学业上思维的碰撞、生活 中最好的帮手。希望他们能够在以后的道路中越走越好,成为一个更棒的自己。 最后,我很感谢我的家人和朋友。他们给了我最好的关怀。父母给了我最 好的成长环境,通过不断引导我思考和培养我的自立来让我健康成长。他们不 束缚我的思维,相信我的能力,我也因此从一个需要依靠父母的孩子成长为有 自己决断能力和能够承担照顾自己的责任的成熟的人。我感谢他们对我的一切 给予,这样的爱给了我最好的后盾。我的朋友们一路陪我走过。我们一起经历、 一起成长。在此期间,我们既可以辩驳争论,因为对方看到不一样的观点、碰 撞思维,又可以在对方低落的时候给予温暖与关心。这样的真挚的友情让我在 面对挑战的时候面色无惧,也让我的成长更加完整。谢谢我的父母和朋友,是 你们让我成为了越来越好的自己。
  • 38. 山东大学(威海)毕业论文 参考文献 31 参考文献 [1] 胡振邦. 基于 Latent SVM 的人体目标检测与跟踪方法研究[D]. 2013 [2] 王朝勇. 支持向量机瑞甘算法研究及应用[D]. 2008 [3] 何厅厅,赵艳玲,石娟娟,刘亚萍,王亚云,袁军,马和平. 基于 PSO-OSVM 的 江苏省更低变化预测[J]. 农业经济(2014 年 21 期). 2014 [4] Blanzieri E, Bryl A. Instance-Based Spam Using SVM Nearest Neibor Classifier. American Association for Artificial Intellegence, 2007 [5] 张学工译.统计学习理论的本质.北京:清华大学出版社,2000 [6] Vapnik V.N.The nature of statistical learning theory[M].2nd ed.1999, New York:Springer [7] 李盼池,许少华. 支持向量机在模式识别中的核函数特性分析[J]. 计算机工程与设计,2005, 26 (2): 302—306. [8] 郭丽娟,孙世宇,段修生. 支持向量机及核函数研究 [J]. 科学技术与工 程 ,2008,8(2): 487-489. [9] 吴涛. 核函数的性质、方法及其在障碍检测中的应[D]. 国防科学技 术大学博士论文 2003. [10] Zhou Shui-sheng, Lin Hong-wei, Ye Feng. Variant of Gaussian Kernel and parameter setting method for nonlinear SVM[J]. Neurocomputing,2009, 72: 2931-2937. [11] 张 小 云 , 刘 云 才 . 高 斯 核 支 持 向 量 机 的 性 能 分 析 [J]. 计 算 机 工 程,2003,29(8) [12] 范昕炜.支持向量机算法的研究及其应用[D].杭州:浙江大学,2003 [13] N Cristianini, J Shawe-Yaylor. An Introduction to Support Vector Machines and Other Kernel-based Learning Methods. Cambridge, Cambridge University Press, 2000. [14] V. N. Vapnik. Statistical Learning Theory. New York, John Wiley & Sons, 1998. [15] V. N. Vapnik. The Nature of Statistical Learning Theory 2Nd edition New York: Springer-Verlag, 2000. [16]周志华. 机器学习. 北京:清华大学出版社,2016 [17]李小英. 支持向量机的分类研究算法[M],2008 [18]马赫,基于 SDSS 和 UK IDSS 数据的类星体选源分类器构造[M],2011 [19]杨海,SVM 核参数优化研究与应用[M],2014