支持向量机实验报告.docx

上传人:b****5 文档编号:4321280 上传时间:2022-11-29 格式:DOCX 页数:18 大小:1,002.14KB
下载 相关 举报
支持向量机实验报告.docx_第1页
第1页 / 共18页
支持向量机实验报告.docx_第2页
第2页 / 共18页
支持向量机实验报告.docx_第3页
第3页 / 共18页
支持向量机实验报告.docx_第4页
第4页 / 共18页
支持向量机实验报告.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

支持向量机实验报告.docx

《支持向量机实验报告.docx》由会员分享,可在线阅读,更多相关《支持向量机实验报告.docx(18页珍藏版)》请在冰豆网上搜索。

支持向量机实验报告.docx

支持向量机实验报告

 

人工智能课程项目报告

姓名:

******

班级:

**************

一、实验背景

本学期学习了高级人工智能课程,对人工智能的各方面知识有了新的认识和了解。

为了更好的深入学习人工智能的相关知识,决定以数据挖掘与机器学习的基础算法为研究对象,进行算法的研究与实现。

在数据挖掘的各种算法中,有一种分类算法的分类效果,在大多数情况下都非常的好,它就是支持向量机(SVM)算法。

这种算法的理论基础强,有着严格的推导论证,是研究和学习数据挖掘算法的很好的切入点。

二、实验目的

对SVM算法进行研究与实现,掌握理论推导过程,培养严谨治学的科研态度。

三、实验原理

支持向量机基本上是最好的有监督学习算法。

SVM由Vapnik首先提出(Boser,GuyonandVapnik,1992;CortesandVapnik,1995;Vapnik,1995,1998)。

它的主要思想是建立一个超平面作为决策曲面,使得正例和反例之间的隔离边缘被最大化。

SVM的优点:

1.通用性(能够在各种函数集中构造函数)

2.鲁棒性(不需要微调)

3.有效性(在解决实际问题中属于最好的方法之一)

4.计算简单(方法的实现只需要利用简单的优化技术)

5.理论上完善(基于VC推广理论的框架)

3.1线性可分:

首先讨论线性可分的情况,线性不可分可以通过数学的手段变成近似线性可分。

基本模型:

这里的裕量是几何间隔。

我们的目标是最大化几何间隔,但是看过一些关于SVM的论文的人一定记得什么优化的目标是要最小化||w||这样的说法,这是怎么回事呢?

原因来自于对间隔和几何间隔的定义(数学基础):

间隔:

δ=y(wx+b)=|g(x)|

几何间隔:

||w||叫做向量w的范数,范数是对向量长度的一种度量。

我们常说的向量长度其实指的是它的2-范数,范数最一般的表示形式为p-范数,可以写成如下表达式:

另外,注意我们的目标:

最大化几何间隔,而不是求出这个间隔。

即,在什么情况下间隔最大,我们要得到的是这个“情况”(w和b取什么值,因为所有x和y是已知的)

所以,我们可以把目标转换:

==》

==》

在这个问题中,自变量就是w,而目标函数是w的二次函数,所有的约束条件都是w的线性函数(不要把xi当成变量,它代表样本,是已知的)

这种规划问题有个很有名气的称呼——二次规划(QuadraticProgramming,QP),而且可以更进一步的说,由于它的可行域是一个凸集,因此它是一个凸二次规划。

拉格朗日乘子法可以求解这个问题。

问题1:

实际上就是目标函数减去,ai乘上约束条件的累加和。

将问题转化为拉格朗日乘子待定问题。

经过数学计算(求导),可以发现:

样本确定了w,用数学的语言描述,就是w可以表示为样本的某种组合:

w=α1y1x1+α2y2x2+…+αnynxn

式子中的αi是一个一个的数,而xi是样本点,因而是向量,n就是总样本点的个数。

w的表达式可以简写如下:

另外可以得到约束条件:

把问题1写成其对偶形式,可转化成问题2:

这样就可以解了,而且方法很多,如SMO。

解出来得到的是a,然后可以得到w和b,进而得到分类超平面。

(事实上,不需要求出w,非线性下求出w也无意义)

3.2线性不可分:

在线性不可分的情况下,支持向量机首先在低维空间中完成计算,然后通过核函数将输入空间映射到高维特征空间,最终在高维特征空间中构造出最优分离超平面,从而把平面上本身不好分的非线性数据分开。

那是否意味着,每当我们解决一个问题,都需要找一个函数,从低维映射到高维?

这个函数是什么样子的呢?

首先观察一下线性下的目标函数(转化后的)。

(注:

之所以观察这个公式,是因为转化到高维后,就线性可分了,最后推导得到的还是这个式子)

我们发现它关注的不是函数本身,而是函数结果的内积。

即,我不在乎你把x(二维),转化为了x几维,也不在乎转化后的值是多少,我在乎的是转化之后,两个x再求内积(一个数)是多少。

幸运的是,数学中有这样一些函数,他们叫核函数,计算效果相当于转化到高维后的内积。

XX百科的解释:

核函数将m维高维空间的内积运算转化为n维低维输入空间的核函数计算,从而巧妙地解决了在高维特征空间中计算的“维数灾难”等问题,从而为在高维特征空间解决复杂的分类或回归问题奠定了理论基础。

几个核函数:

多项式核:

高斯核:

它能将原始空间映射为无穷维空间。

不过,如果sita选得很大的话,就相当于一个低维的子空间;反过来,如果选得很小,则可以将任意的数据映射为线性可分——当然,这并不一定是好事,因为随之而来的可能是非常严重的过拟合问题。

不过,总的来说,通过调控参数,高斯核实际上具有相当高的灵活性,也是使用最广泛的核函数之一。

同样,经过数学推导,非线性SVM的目标函数为:

同样,可以用SMO求解。

如上图:

如果转化到高维还是不可分呢?

或者转的维数不够,或者存在噪声点?

这个时候怎么办?

引入松弛变量:

其中称为松弛变量,C是一个参数。

同样,经过转化:

此时,我们发现没有了参数

,与之前模型唯一不同在于C的限制条件。

为了不失一般性,我们使用引入松弛变量的模型。

也就是需要求解的目标问题。

根据KKT条件可以得出目标函数中取值的意义:

这里的还是拉格朗日乘子:

对第1种情况,表明是正常分类,在边界内部(我们知道正确分类的点);

对第2种情况,表明了是支持向量,在边界上;

对第3种情况,表明了是在两条边界之间;

3.3坐标上升法:

在最后讨论W(α)的求解之前,我们先看看坐标上升法的基本原理。

假设要求解下面的优化问题:

这里W是α向量的函数(也就是前面转化后的目标函数)。

求最优解的方法有多种:

一种是梯度下降法,一种是牛顿法,还有一种是坐标上升法。

方法过程:

坐标上升法可以用一张图来表示:

3.4SMO算法:

SMO算法由MicrosoftResearch的JohnC.Platt在1998年提出,并成为最快的二次规划优化算法,特别针对线性SVM和数据稀疏时性能更优。

关于SMO最好的资料就是他本人写的论文《SequentialMinimalOptimizationAFastAlgorithmforTrainingSupportVectorMachines》。

算法框架:

fori=1:

iter

a.根据预先设定的规则,从所有样本中选出两个

b.保持其他拉格朗日乘子不变,更新所选样本对应的拉格朗日乘子

end

样本选取规则:

第一个参数是违反kkt条件的。

第二个参数:

选择使得

(实际输出和期望输出的误差)最大的参数。

情况比较复杂,原算法分了很多情况。

当所有变量都满足kkt条件时,算法结束,求得a。

选出了参数就要进行计算。

其中一个参数是可以求导等于0然后解出来(不失一般性,记为a2)。

另一个参数随之发生变化(记为a1)。

解之前要先确定取值范围:

根据y1和y2异号或同号,可得出a2的上下界分别为:

如果是极值点,二阶导应该大于0,关于a2的二阶导为:

经过数学计算,在二阶导大于0的情况下,

结合取值范围:

然后得到a1:

在一些情况下,二阶导不是正数,这时候需要用到目标函数在取最小值和最大值时候的值:

计算出a1和a2后,相应的更新b。

更新完a和b,一个周期结束,进入下一次循环。

当所有的参数符合kkt条件,循环结束。

 

四、实验内容

SVM算法步骤:

1,读入训练数据。

2,用SMO算法求解,得到分类预测模型。

3,根据预测模型进行预测。

我们发现SVM算法的难点和重点是SMO算法。

算法流程图:

SMO主循环部分:

参数选择:

参数更新:

五、实验结果与分析

5.1实验环境与工具

Windows7旗舰版(ServicePack1)

MyEclipse2014。

5.2实验数据集与参数设置

bigdata.txt==》线性可分(y=x程序产生)

cycle.txt==》线性不可分(x^2+y^2=1,程序生成)

cycle2.txt==》线性不可分(x^2+y^2=0~2.5)

heart_scale==》线性不可分实际数据

testSet.txt==》线性可分

不规则图形.txt==》线性不可分(图像数据)

人脸.txt==》线性不可分(图像数据)

5.3评估标准

算法经过训练集的训练之后,在测试集上的分类准确率。

通过实际图像也可以看到分类效果。

5.4实验结果与分析

testSet.txt实验结果:

Cycle.txt:

Cycle2.txt:

支持向量是少数,分类超平面在中间。

不规则图形.txt:

分类超平面是比较优秀的,并不是在图像的点上,而是大约在中间。

存在容错点:

人脸.txt:

同样的处理。

人脸图像更复杂一些,同一类是不连在一起的。

能正确分类同样存在容错点。

heart_scale:

核函数为线性的时候:

非线性(高斯核,sita=1):

非线性(高斯核,sita=0.5):

(过小存在过度拟合的情况)

Bigdata.txt:

总共10000条,主要用来测试运行时间。

发现数据量大就很难进行训练。

训练数据

运行时间

500

167ms

1000

219ms

1500

546ms

2000

1297ms

2500

1843ms

3000

4410ms

3500

5429ms

4000

5815ms

4500

7402ms

5000

10857ms

SVM算法分析:

不适合于大数据,因为需要进行大量的核函数等运算。

如果对核函数进行缓存,则需要缓存一个N*N的矩阵(N是训练样本的个数),会占用大量的空间。

相应的,linearsvm可以解决这个问题。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 军事政治

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1