1、基于MATLAB的SVR回归模型的设计与实现The Design and Implementation of SVR Regression Model Based on MATLAB学生姓名:王新蕾学生学号:10780232专业名称:电子信息科学与技术指导教师:张艳(讲师)计算机与信息工程学院2014年6月10日独创性声明本人声明所呈交的毕业论文是本人在指导教师指导下进行的研究工作和取得的研究成果,除了文中特别加以引用标注之处外,论文中不包含其他人已经发表或撰写过的研究成果,没有伪造数据的行为。毕业论文作者签名: 签字日期: 毕业论文版权使用授权书本毕业论文作者完全了解学校有关保留、使用论文的
2、规定。同意学校保留并向有关管理部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权天津城建大学可以将本论文的全部或部分内容编入有关数据进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本论文。(保密的毕业论文在解密后适用本授权说明)毕业论文作者签名: 指导教师签名:签字日期: 签字日期: 摘 要 支持向量机是根据统计学习理论提出的一种新的学习方法,近年来受到了国内外学术界的广泛重视,并已在模式识别和函数估计中得到广泛应用。支持向量机理论的最大特点是由有限的训练集样本得到的小的误差保证对独立的测试集仍保持小的误差。从而通过支持向量机(SVM)理论,可以建立支持向量回归(SVR)
3、预测模型,以解决各种实际问题。SVR算法是模式识别中应用比较广泛的算法模型之一,它是支持向量机在函数逼近和回归估计中的应用。在SVR回归分析中,使用支持向量机可以使回归函数尽量平滑,其泛化能力强。本文论述了支持向量回归的基本原理和思想,介绍了支持向量回归算法以及所用到的几种常见的核函数(即线性内核、多项式内核、径向基函数内核、高斯内核)。本设计主要实现的功能有:数据集的创建、内核函数的选取、参数的设置、训练集的回归、数据集的保存与打开。通过不同核函数的选取以及相应参数的设置对输入数据集进行回归。此模型主要解决非线性回归模型的预测。通过实验改变各个参数的不同取值对训练集进行回归,并分别统计出支持
4、向量的个数,回归性能,程序运行时间。最后对回归的结果进行分析,得出各参数对回归性能的影响。关键词:支持向量回归; 训练算法; 核函数; 线性判别ABSTRACTSupport vector machine (SVM) is a new method of study based on statistical learning theory which has attracted extensive attentions by academic circles both at home and abroad in recent years. It has been widely used in
5、pattern recognition and function estimation. The biggest characteristic of support vector machine (SVM) theory is that a small error limited by the training set of sample can ensure the independent test sets small error. Thus a support vector regression (SVR) forecasting model can be built by suppor
6、t vector machine (SVM) theory and it can solve various practical problems.SVR algorithm model is one of pattern recognition algorithm, which is more widely used in approximation of function and the application of the regression estimate. In the SVR regression analysis, using support vector machine (
7、SVM) can smooth regression function as far as possible. Its generalization ability is strong.This paper discusses the basic principle of support vector regression and introduces support vector regression algorithm and several common kernel functions (the linear kernel, polynomial kernel and radial b
8、asis function (RBF) kernel, the Gaussian kernel etc.). This essay successfully makes these functions work: the creation of data sets, the selection of kernel function, parameter settings, return of the training set, the preservation and open of the data set. We accomplish the return of input of data
9、 set through the selection of different kernel functions and the setting of corresponding parameter. This model is mainly to solve the nonlinear regression model prediction. Then, the same issue is done through the experiment to change the values of different parameters, and the statistics, the numb
10、er of support vector regression, performance of program running time are accounted. Finally, we have analysis the results of regression and gained the influence of various parameters on the return performance.Key words: Support Vector Regression; Training Algorithms; Kernel Function; Linear Discrimi
11、nation Analysis目 录第1章 绪论11.1 课题研究背景11.2 国内外研究现状11.3 课题研究目的21.4 课题研究使用的开发工具31.5论文组织结构3第2章 支持向量机回归原理52.1 支持向量机52.2 支持向量回归52.2.1 回归初步形式52.2.2 线性支持向量回归62.2.3 非线性支持向量回归62.3支持向量回归核函数72.4 支持向量回归算法82.4.1 支持向量回归的算法的基础82.4.2 回归算法102.4.3 关于算法的几点说明11第3章 基于Matlab实现SVR的总体设计133.1 总体设计思想133.2 功能模块的划分及相关流程图133.2.1 主
12、要功能模块的划分133.2.2 实现程序的主要框架图133.2.3 支持向量回归模型的流程图14第4章 基于支持向量回归模型的实现164.1模型的功能描述164.2 运行结果174.2.1 主界面174.2.2 功能描述界面174.2.3运行过程及结果184.2.4 命令窗口的显示结果244. 3系统的性能分析及结论24第5章 总结27致 谢28参考文献29第1章绪论第1章 绪论支持向量机(SVM)是在统计学习理论基础上提出的一种新的学习方法。支持向量机( SVM )是一种比较好的实现了结构风险最小化思想的方法。它的优点是理论完备、训练时间短、全局优化强、适应性好、泛化性能好等。SVM已经成为
13、目前国内外研究的热点。本课题研究的SVR是支持向量机在函数回归中的应用。1.1 课题研究背景基于支持向量的学习是现代智能技术中的重要方面,研究从观测数据(样本)出发寻找规律,利用这些规律对未来数据或无法观测的数据进行预测.包括模式识别、神经网络等在内,现有支持向量机器学习方法共同的重要理论基础之一是统计学.传统统计学研究的是样本数目趋于无穷大时的渐近理论,现有学习方法也多是基于此假设.但在实际问题中,样本数往往是有限的,因此一些理论上很优秀的学习方法实际中表现却可能不尽人意。与传统统计学相比,统计学习理论(Statistical Learning Theory或SLT)是一种专门研究小样本情况
14、下机器学习规律的理论.V. Vapnik等人从六、七十年代开始致力于此方面研究,到九十年代中期,随着其理论的不断发展和成熟,也由于神经网络等学习方法在理论上缺乏实质性进展,统计学习理论开始受到越来越广泛的重视。统计学习理论是建立在一套较坚实的理论基础之上的,为解决有限样本学习问题提供了一个统一的框架.它能将很多现有方法纳入其中,有望帮助解决许多原来难以解决的问题(比如神经网络结构选择问题、局部极小点问题等);同时,在这一理论基础上发展了一种新的通用学习方法支持向量机(Support Vector Machine或SVM),它已初步表现出很多优于已有方法的性能。通过结果风险最小化准则和核函数方法
15、,较好地解决了模式分类器复杂性核推广性之间的矛盾,引起了模式识别领域学者的极大关注。从此迅速的发展起来,现在已经在许多领域(生物信息学,文本分类、手写体识别、人脸检测等) 都取得了成功的应用,并且在研究过程中,取得了与传统方法可比或更好的结果,还丰富了自身的内容(如快速训练算法等),从而更加推动了它在其他模式识别领域的应用。由于其出色的学习性能,该技术已成为当前国际机器学习界的研究热点,在模式识别、回归估计、函数逼近等领域有了广泛的应用。本课题就是研究它在回归估计中的应用。1.2 国内外研究现状支持向量机一经提出,就得到国内外学者的高度关注。虽然支持向量机发展时间很短,但是由于它的产生是基于统
16、计学习理论的,因此具有坚实的理论基础。近几年涌现出的大量令人瞩目的理论研究成果,更为其应用研究奠定了坚实基础。如Anthony et al.(1999)等人给出了关于硬邻域支持向量机学习误差的严格理论界限,Shawe-Taylor(2000)和Cristianini (2000)也给出了类似的关于软邻域支持向量机和回归情况下的误差界限;Weston et al.(1998)和Vapnik(1995,1998)等研究了支持向量机的泛化性能及其在多值分类和回归问题的扩展问题;Smola(1998)和Schoelkopf(1999)提出了支持向量机一般意义下的损失函数数学描述;脊回归是由Tikhon
17、ov 提出的一种具有特殊形式的正则化网络,Girosi(1990)、Poggio(1975)等将其应用到正则化网络的学习中, Smola et al.(1999)研究了状态空间中脊回归的应用,Girosi(1990)、Smola(1998)、Schoelkopf(1999)等讨论了正则化网络和支持向量机的关系。随着支持向量机理论上深入研究,出现了许多变种支持向量机,如Smolaetal.(1999)提出的用于分类和回归支持向量机。另外,一些学者还扩展了支持向量机概念,如Mangasarian(1997)等人的通用支持向量机(GeneralisedSVMs)。虽然SVM 方法在理论上具有很突出的
18、优势, 但与其理论研究相比,应用研究尚相对比较滞后, 到目前,SVM已用于数据分类、回归估计、函数逼近等领域.应用最为广泛的当属模式识别领域,在模式识别方面最突出的应用研究是贝尔实验室对美国邮政手写数字库进行的实验,这是一个可识别性较差的数据库, 人工识别平均错误率是2.5% , 用决策树方法识别错误率是16.2% , 两层神经网络中错误率最小的是5.9% , 专门针对该特定问题设计的五层神经网络错误率为5.0% (其中利用了大量先验知识) , 而用三种SVM 方法得到的错误率分别为4.0%、4.1% 和4.2% , 且其中直接采用了1616的字符点阵作为SVM 的输入, 并没有进行专门的特征
19、提取。说明了SVM方法较传统方法有明显的优势, 同时也得到了不同的SVM 方法可以得到性能相近的结果。实验还观察到,三种SVM求出的支持向量中有80%以上是重合的,它们都只是总样本中很少的一部分,说明支持向量本身对不同方法具有一定的不敏感性(遗憾的是这些结论仅仅是有限的实验中观察到的现象,如果能得到证明,将会使SVM的理论和应用有更大的突破)。围绕这一字符识别实验,还提出了一些对SVM的改进,比如引入关于不变性的知识、识别和去除样本集中的野值、通过样本集预处理提高识别速度等,相关的应用还包括SVM与神经网络相结合对笔迹进行在线适应.除此之外,MIT用SVM进行的人脸检测实验也取得了较好的效果,
20、可以较好地学会在图像中找出可能的人脸位置.其它有报道的实验领域还包括文本识别、人脸识别、三维物体识别、遥感图像分析等,在函数回归估计方面主要用于非线性系统识别问题、时间序列预测、机场游客吞吐量的预测问题及多维自由曲面的重建问题等。1.3 课题研究目的此课题的设计目的在于训练及提高自己能综合运用所学专业知识分析、解决实际问题的能力;掌握文献检索、资料查询的基本方法以及获取新知识的能力;系统的利用支持向量回归相关理论知识和编程技能,利用MATLAB开发平台和相关的统计学工具箱及支持向量回归算法,设计改进并实现基于MATLAB的SVR回归模型的实验系统,通过运用M文件编写回归算法、GUI组件编写主界
21、面、编写程序和装载数据文件完成实验界面的各个功能。从而熟悉了MATLAB编程、GUI组件编写用户界面以及回归算法的程序实现,同时也了解了支持向量回归算法在实际问题预测模型中的应用。1.4 课题研究使用的开发工具此课题主要运用MATLAB开发平台,MATLAB既是一种直观、高效的计算机语言,同时又是一个科学计算平台。它为数据分析和数据可视化、算法和应用程序开发提供了最核心的数学和高级图形工具。根据它提供的500多个数学和工程函数,工程技术人员和科学工作者可以在它的集成环境中交互或编程以完成各自的计算。本课题研究用MATLAB程序编写回归算法和GUI组件编写用户界面来实现支持向量回归模型的设计。开
22、发工具的优点:1编程效率高:Matlab是一种面向科学与工程计算的高级语言,允许用数学形式的语言来编写程序,这样就更接近我们书写计算算法公式的思维方式。Matlab语言是一种解释执行的语言,与其他语言相比,它把编辑,编译,连接和执行融为一体,提高了程序的运行速度,同时也便于修改和调试。2高效方便的矩阵和数组运算:在回归过程中,输入的数据集,运算的变量以及很多参数都是以数组,向量形式出现的,运算这些数据复杂,易出错而且费时,所以方便高效的数组向量运算就显得尤为重要,而Matlab恰好具有这样便利的功能。并且Matlab语言还像其他语言一样规定了矩阵的算术运算符,关系运算符,逻辑运算符,条件运算符
23、及赋值运算符。这给编写程序带来很大方便。在支持向量回归算法中包含了大量的数学模型和复杂的运算公式,所以用Matlab语言进行代码编写比较简单,编程效率比较高。3方便的绘图功能:本课题借助于Matlab的绘图功能,能较为方便的建立支持向量回归过程中的演示图形。Matlab有一系列绘图函数命令,功能强大,使用方便。在执行绘图函数时是通过使用不同的图形对象来实现图形创建功能的这些图形对象包括直线、文本、曲面等等。Matlab创建一个图形对象时总会给该对象制定一个独一无二的标识符,这个标识符就称为句柄。通过使用句柄,用户可以方便地访问句柄所指定的对象,通过修改对象的属性使图形完全符合用户的要求。1.5
24、论文组织结构本论文主要针对回归型SVM在算法性能和推广能力两方面进行一些探讨,全文共分5章,安排如下:第1章主要研究SVM研究背景和国内外研究现状,介绍了课题研究背景以及可以研究所用的开发工具。第2章详细推导了线性情况下回归机算法,然后引入了核函数将线性算法推广到非线性算法。还介绍了VC维数、结构风险最小化。第3章此章介绍了本课题的总体设计思路和功能模块的划分及相关流程图。第4章介绍支持向量回归模型的实现,及结果分析。第5章对支持向量回归进行了分析与总结。4第2章支持向量机回归原理第2章 支持向量机回归原理回归预测研究从观测数据出发寻找规律,利用这些规律对未来数据或无法观测的数据进行回归预测。
25、回归预测的目的是根据给定的训练样本集 来估计某系统输入和输出之间的依赖关系,即寻找最优函数 ,使它能够反映训练集的数据走向趋势,从而实现对未知输出做尽可能准确的预测。2.1 支持向量机支持向量机是Cortes和Vapnik于1995年首先提出的,它在解决小样本、非线性及高维模式识别中有许多特有的优势,并能推广应用到函数拟合等其他机器学习问题中。支持向量机方法是建立在统计学习理论的VC维原理基础上的,根据有限的样本信息在模型的复杂性和学习能力之间寻求最佳折衷,以期获得最好的推广能力。VC维数:模式识别方法中VC维的直观定义是:对一个指示函数集,如果存在h个样本能够被函数集中的函数按所有可能的2h
26、种形式分开,则称函数集能够把h个样本打散;函数集的VC维就是它能打散的最大样本数目h。若对任意数目的样本都有函数能将它们打散,则函数集的VC维是无穷大。有界实函数的VC维可以通过用一定的阈值将它转化成指示函数来定义。VC维反映了函数集的学习能力,VC维越大则学习机器越复杂(容量越大),目前尚没有通用的关于任意函数集VC维计算的理论,只对一些特殊的函数集知道其VC维。Vapnik和Chervonenkis在1968年又发现了下面的规律:VC维对于一个指示函数集,如果其生长函数是线形的,则它的VC维为无穷大;而如果生长函数以参数为h的对数函数为界,则函数集的VC维是有限的且等于h。VC就是取Vap
27、nik和Chervonenkis名字的首字而成。所以,学习机器所实现的指示函数集的VC维有限就是ERM方法一致性的一个充分必要条件,这一条件不依赖于概率测度。而且,一个有限的VC维意味着快的收敛速度。2.2 支持向量回归在引入支持向量回归之前,首先要对回归问题进行形式化,并因此抽象出学习机的形式化概念。线形情形,支持向量回归问题可形象的理解为在误差带内寻求一个最为平坦的直线,此直线回归训练,并具有最小的损失。对于非线形情形,同支持向量机识别,通过向高维空间映射,将问题转化为高维空间(Hilbert空间)的线形回归问题,并且使用核函数来求得最优解。2.2.1 回归初步形式回归问题是个古老的数学问
28、题,在工程上也有大量的应用背景。在传统经典的回归中,尽管存在着多种估计的方法,但研究的大部分集中在最小二乘法。这种分析方法称为综合分析,其主要目的是将数据聚集在一起,并综合出数据的一个拟合模型。接着同样重要的一个阶段是案例分析。这里数据被用于检验拟合模型对被研究的关系是否合适、有用。其结果可能导致对原先指定的拟合模型的修改,此后,回复至综合分析。在具体实施中,则大量的借助统计学的理论和技术。如参数估计与假设检验等一些知识。而本设计主要讨论的回归方法则侧重于Vapnik的统计学习理论,从问题的模型确立到问题解决途径上可能和经典的回归不大一样,但本质是一致的。回归问题可形式化为:给定一个训练集合,
29、其元素有某个未知的分布观测得到(此处的观测可能夹杂某种噪声):with 和一个函数族 基本回归问题是要找到一个函数,此函数风险最小化表达式: 其中,C是损失函数,它指出和之间的差错将如何被惩罚,因为未知,不能直接对进行估值,而是要通过计算如下的经验风险: 并通过对R进行限界。其中为所谓的泛化错误上界,根据Vapnik的理论,它依赖于用来进行回归的函数族。 2.2.2 线性支持向量回归支持向量回归建立在统计学学习理论的基础之上,并维持以上提出的学习机的模型但采取完全不同的策略。在这里取为维超平面:损失函数一般有多种形式,根据实际问题的不同可选用不同的损失函数。此处给一般情形:含有误差带的损失函数
30、,这样的函数满足以下形式:并且对非0时的损失函数要求具备凸性。学习的结果使得在的周围形成一个精度为的误差带。其线性支持向量回归机的结果是线形的。2.2.3 非线性支持向量回归对于非线性回归,保持以上的策略不变,但首先对输入数据进行非线性预处理。使用非线性映射把数据从原空间映射到一个高维特征空间,再在高维特征空间进行线性回归。同理,在非线性空间中也只考虑高维特征空间的点积运算:,而不必明确知道是什么。其关键问题是核函数的采用。此时,非线性支持向量机回归具有以下模型:取为:损失函数和能力控制策略同线性支持向量回归,其求解结果具有如下形式: 因此,支持向量机回归通过将最小化经验风险和能力控制规约在一
31、个目标中,一并将其转化为一个凸二次优化问题的求解途径不仅实现了结构风险最小化的原则,而且由于严格的凸性要求使问题求解在可行域中总能搜索到最优解,而不会陷入局部最小。在非线性情形,使用核函数技巧,通过只计算输入空间的数量积避免了维数灾难问题。从求解结果我们可以看出,最终的解,决定于输入模式的数量积,而与输入模式的维数无关,其计算规模正比于输入模式中支持向量的个数。因而可有效地处理高维空间的问题,而不受到维数的限制。2.3支持向量回归核函数支持向量机的一个引人注目的特点是用核函数代替向量间的内积运算来实现非线性变换,而不需要非线性的具体形式。研究人员根据这一思想改造经典的线性算法并构造出对应的基于
32、核函数的非线性形式。支持向量回归模型最重要的一个参数就是核函数。选择什么样的核函数,就意味着将训练样本映射到什么样的空间去进行线性划分。支持向量机回归算法的技巧在于不直接计算复杂的非线性变换,而是计算非线性变换的点积,即核函数,从而大大简化了计算。通过把核函数引入到一些学习算法,可以方便地把线性算法转换为非线性算法,我们将其与支持向量机一起称为基于核函数的方法。在高维特征空间实际上只需要进行点积运算,可以用原空间中的函数实现的,甚至没有必要知道变换的形式。根据泛函的有关理论,只要一种核函数满足Mercer条件,它就对应某一变换空间中的点积。因此,在最优分类面中采用适当的点积函数就可以实现某一非
33、线性变换后的线性分类,而计算复杂度却没有增加。张铃证明了核函数存在性定理,并提出了寻找核函数的算法。核函数存在性定理表明:给定一个训练样本集,就一定存在一个相应的函数,训练样本通过该函数映射到高维特征空间的相是线性可分的。进一步研究了支持矢量机的支持向量集与核函数的关系,研究表明对非线性可分情况,对一个特定的核函数,给定的样本集中的任意一个样本都可能成为一个支持向量。这意味这在一个支持向量机下观察到的特征在其它支持向量机下(其它核函数)并不能保持。因此,对解决具体问题来说,选择合适的核函数使很重要的。SVM 由训练样本集和核函数完全描述,因此采用不同的核函数就可以构造实现输入空间中不同类型的非
34、线性决策面的学习机,导致不同的支持向量算法。本课题研究的几种核函数如下:线性内核 多项式内核 径向基函数内核 Bsplines内核 2.4 支持向量回归算法2.4.1 支持向量回归的算法的基础1. 寻求方向约束最优化的一种方法是在可行空间按一定的方向逐步搜索,逼真最优点,这就涉及到寻求最优方向的问题。对给定问题的可行域S中点x,对于某个非零n维向量存在,当时使得:的方向被称为x处的寻优方向,而对于正定的归整约束,理论上可保证在一定的迭代次数后收敛。2. 对偶差另一种约束最优化的方法是从对偶理论入手,利用对偶差和KKT条件来寻找最优点。对于可行的主变量和对偶变量,凸最小化问题的主目标函数的解常常
35、比(凸最大化的)对偶目标函数的解要大。当且仅当在最优化解处这两个解才相等。因此对偶差常被作为衡量目标函数变量的当前解和最优解距离的一种度量,此理论来自Lagrange函数的鞍点特性。以此为基础的算法则通过逐步加强KKT条件,并通过对偶差来进行评估,来逼真最优点。3. 不敏感损失函数 支持向量机方法是从解决模式识别问题发展起来的,在支持向量分类机中,一般来说,可以用少量的支持向量来表示决策函数,即具有稀疏性。当把该方法推广到回归问题时,很重要的一点就是希望找到合适的支持向量回归(SVR)算法,仍然保持这个性质。从上述回归问题的数学提法可以看出,为建立算法,需要选择适当的损失函数。现介绍回归估计中
36、最常见的一种损失函数,它可以保持稀疏性。不敏感损失函数其中 ,这里是事先取定的一个正数,不敏感损失函数的含义是,当x点的观测值y与预测值之差不超过给定的时,则认为在该点的预测值是无损失的,尽管预测值和观测值y可能并不完全相等,如下面损失函数图像2-1所示。图2-1损失函数图象如果为单变量线性函数 ,当样本点位于两条虚线之间的带子里时,则认为在该点没有损失,我们称两条虚线构成的带子为带。只有当样本点位于带之外时,才有损失出现,例如,下图2-2中处的损失为图2-2不敏感损失带容易看出,不敏感损失函数有一个特点:对样本点来说,存在着一个不为目标函数提供任何损失值的区域,即带。这个特点是其他许多损失函
37、数并不具备的。我们可以期望,在带内的样本点,不会出现在决策函数中。2.4.2 回归算法利用核函数将输入数据映射到高维特征空间 ( 通常是无限维),在特征空间实现线性回归,估计函数具有如下形式:这里,映射到特征空间,表示特征空间中的内积,且为从训练数据集D估计函数,典型的支持向量回归最小化正则化风险泛函: 这里正则化参数为正数,损失函数选择为不敏感损失函数,形式如下:可以通过解二次规划的优化问题来最小化正则化风险泛函。解可以表达为在特征空间与函数的线性组合有关的形式:这里系数通过解二次规划问题确定,对于的点称为支持向量。核函数对应映射到特征空间的数据的内积,即:核函数可以是任意满足Mercer条
38、件的对称函数,因此,估计函数也可以具有如下形式:因此支持向量的拓扑结构如下图2-3所示:图2-3支持向量回归拓扑图对于,试图求解如下有约束的二次规划问题:这里C是待确定的常数,是松弛变量,同时首先要先设定的值。2.4.3 关于算法的几点说明1. 算法的收敛性说明根据Osuna的理论,在实现算法中每一步迭代都将减少目标函数的值,进而保证了算法的收敛性。并且在算法中利用了许多策略和一些启发式规则来进行联合优化,进一步充分保证了算法的收敛速度。2. 算法元素扫描启发式规则对于非敏感损失函数,KKT条件为:和由此进一步推出关于取值的三种情形: 数据位于误差带外 数据位于误差带上 数据位于误差带内3.
39、算法中的关于KKT条件的判断便是依据上面三式外循环首先在整个数据集合上扫描违反KKT条件的元素,当在整个数据集合上扫描一遍之后,外循环开始在非边界元素(Lagrange乘子不为0和C)集合上扫描违反KKT条件的元素,直至所有非边界元素都以的精度满足KKT条件。然后外循环重新在整个数据集合上扫描。外循环如此交替在整个数据集合上进行一次扫描和在非边界元素集合上进行多遍扫描,直至算法终止。4. 算法的效率在算法运行过程中,CPU的时间集中在最有可能违反KKT条件的元素集合,边界元素可能停留在边界,而非边界元素将会在其它元素被优化的同时向边界移动。若算法在非边界元素集合上迭代直至此集合自相容,然后再在
40、整个集合上扫描寻找在非边界元素优化的同时变为违反KKT条件的边界元素。这样可保证算法的效率。29第3章 基于Matlab实现SVR的总体设计第3章 基于Matlab实现SVR的总体设计3.1 总体设计思想支持向量回归的最终就是寻求一目标函数,并使得其损失函数的数学期望最小,这样才能得到最准确的回归曲线以反映训练集的数据走向趋势。该回归算法主要解决非线形回归预测问题,对训练集采用线性、非线性核函数进行回归。通过对各种参数的设置得到不同性能的回归曲线,以便于熟悉其中参数对回归算法的影响。3.2 功能模块的划分及相关流程图3.2.1 主要功能模块的划分从总体上说,按照需求分析,可以把要实现的功能划分
41、为三个主要的功能模块:1 GUI图形用户界面模块,即系统的主界面。2实验简介模块,简单说明各个函数的功能。3支持向量回归模型设计的实验模块,实现支持向量回归的各种功能(手动创建数据集、装载现有的数据集、设置各种相应的参数、保存数据集、进行回归演示)。3.2.2 实现程序的主要框架图下图3-1中说明了程序设计的总体框图,并没有把所有的函数列出来,只是列出了主要的程序。SVR.m:实现用户图形界面模块(主界面)。about.m:查看系统的各实现功能的简单说明。uiregress.m:实现了支持向量回归的演示实验模块。svr.m:支持向量回归的计算。svrplot.m:一维空间回归作图问题。svro
42、utput.m:输出与输入之间的转化计算 。svrerror.m:输入,输出异常 。svkernel.m:内核函数。图 3-1 程序框图3.2.3 支持向量回归模型的流程图 支持向量回归模型的总流程图如图3-2所示。图3-2 支持向量回归模型总的流程图第4章 基于支持向量机回归模型的实现第4章 基于支持向量回归模型的实现4.1模型的功能描述本课题是基于支持向量回归模型的设计与实现,已经按照需求实现了各种功能。具体实现的功能如下:1) 创建一个GUI图形用户界面即主界面,主界面按钮及菜单功能描述如下:按钮功能介绍设置路径:在matlab中,运行任何的文件都必须位于当前路径或搜索路径内。此按钮将当
43、前目录下的子目录添加为搜索路径,使得子目录中的文件可以被当前目录中的文件调用运行。否则,系统将不能正常工作。由于本实验的各个函数在包含在一个文件夹中因而也可以不设置路径。进入实验简介:简单了解SVR,查看各个函数要实现的基本功能。进入支持向量回归模型演示实验:进行回归模型演示(具体的各个功能块见下(2)中有详细介绍)。 退出实验:退出系统。该主界面点击实验简介或演示实验都将出现动态的等待进度条,此功能没有实际用途但可以使设计美观。2) 通过编写M文件uiregress.m文件,实现显示支持矢量机机器学习模型的功能。 (1)下拉式菜单核函数的选取:用户通过此菜单选择一个核函数,然后进行回归实验。
44、 (2)编辑框输入参数值惩罚系数C,其初始值设定为20,设置值一般大于0.1,对于该参数对回归性能的影响在后面说明。不敏感系数,其初始值设为0.01,参数对回归性能的影响也在后面介绍。 (3)编辑框显示信息显示统计支持向量的个数,回归性能。 (4)按钮装载数据:进行已存在数据文件的装载。数据输入:用户手动创建数据,用鼠标点击将在坐标轴上产生点集。清除数据:用户想清除当前数据时点击该按钮,以便重新创建数据集。保存数据:对创建的数据保存,以便下一次直接装载调用。回归:对创建的数据集或装载的数据集进行回归,得到回归曲线。3) Matlab命令窗口 在命令窗口我们将会获得算法运行时间,支持向量的个数,
45、回归性能。4.2 运行结果4.2.1 主界面 运行结果如下图4-1所示。图4-1主界面模块运行结果4.2.2功能描述界面运行结果如下图4-2所示。图4-2实验简介运行界面4.2.3运行过程及结果1 支持向量回归模型实验运行界面如图4-3所示。图4-3 支持向量机回归模型实验界面2 手动输入数据,并保存,如下图4-4所示。图4-4手动输入数据3 装载上面保存的数据,如下图4-5所示。图4-5装载数据装载aa数据文件后的数据显示,如下图4-6所示。图4-6装载数据后的显示结果3 使用不同的核函数的回归结果(1)线性核函数线性核函数的惩罚系数设为10,不敏感系数0.01为,此时支持向量数24,回归性
46、能92.3%,如下图4-7所示。图4-7回归结果图改变不敏感系数增大为0.02,此时支持向量个数为22,回归性能84.6%,如下图4-8所示。支持向量数减少,回归性能下降。图4-8改变参数取值后的回归图(2)多项式核函数多项式核函数,设置此时多项式次数为3,如下图4-9所示。由回归结果看出次数偏低,性能不是很好。图4-9选择多项式核函数的回归图形增大多项式次数Degree为5,并减少不敏感系数至0.01,回归性能提高到88.5%,如下图4-10所示。图4-10改变参数取值后的回归图形(3)高斯径向基核函数 高斯径向基核函数Sigma(RBF宽度)为0.2惩罚系数10,不敏感参数为0.01,此时支持向量的个数为14,回归性能53.8%,如下图4-11所示。图4-11选择高斯核函数的回归图形 现增大惩罚系数C至40,其它参数不变,支持向量数增多到15,回归性能提高到57.7%,如下图4-12所示。