机器学习大作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
机器学习大作业
-标准化文件发布号:(9456-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII
机器学习大作业
支持向量机是基于统计学习理论的结构风险最小化原则的,它将最大分
界面分类器思想和基于核的方法结合在一起,表现出了很好的泛化能力。
由
于SVM方法不仅考虑了对渐进性能的要求,而且在现有有限信息的条件下得
到最优结果,并且能够根据有限的样本信息在模型的复杂性和学习能力之间
寻求最佳折中,从而获得最好的推广能力。
SVM主要是应用于分类,简单而言,就是如果有一堆已经分好类的东西(可是分类的依据是未知的),当有
新的未知数据进来时,SVM能够预测这个新的数据要分到哪一堆去。
第一章理论知识
1.1最优间隔分类器
SVM的主要思想是针对两类分类问题,在高维空间寻找一个最优分类超
平面作为分类平面,来保证最小的分类错误率。
我们的目标是寻找一个超平面,使得离超平面比较近的点有更大的间距,也就是说,我们不考虑所有的
点都必须远离超平面,我们关心的只是想要求得的超平面能够使得所有点中
离它最近的点具有最大间距。
形象的说,我们将上面的图看作是一张纸,我
们要找一条折线,按照这条折线折叠后,离折线最近的点的间距比其他折线
都要大。
形式化表示为:
上面描述的这种情况是建立在样例线性可分的假设上,当样例线性不可分时,可以引入松弛变量,它允许在一定程度上违反间隔约束。
我们可以尝试使用核函数来将特征映射到高维,这样很可能就可分了。
然而,映射后我们也不能100%保证可分。
那怎么办呢,我们需要将模型进行调整,以保证在不可分的情况下,也能够尽可能地找出分隔超平面。
看下面两张图:
可以看到一个离群点(可能是噪声)可以造成超平面的移动,间隔缩小,可见以前的模型对噪声非常敏感。
再有甚者,如果离群点在另外一个类中,那么这时候就是线性不可分
了。
这时候我们应该允许一些点游离并在在模型中违背限制条件(函数间隔大于1)。
我们设计得到新的模型如下(也称软间隔):
引入非负参数后(称为松弛变量),就允许某些样本点的函数间隔小于1,即在最大间隔区间里面,或者函数间隔是负数,即样本点在对方的区域中。
而放松限制条件后,我们需要重新调整目标函数,以对离群点进行处罚,目标函数后面加上的就表示离群点越多,目标函数值越大,而我们要求的是尽可能小的目标函数值。
这里的C是离群点的权重,C越大表明离群点对目标函数影响越大,也就是越不希望看到离群点。
我们看到,目标函数控制了离群点的数目和程度,使大部分样本点仍然遵守限制条件。
图1.1 分类情况
1.2线性支持向量机
SVM只要是针对两类分类问题,分类主要包括线性可分和非线性可分两类。
在样例线性可分的情况下,此时,存在一个超平面,使得训练样本可以完全
被分开,这和超平面的形式为:
从KKT条件得知只有函数间隔是1(离超平面最近的点)的线性约束式前面的系数,也就是说这些约束式,对于其他的不在线上的点(),极值不会在他们所在的范围内取得,因此前面的系数.注意每一个约束式实际就是一个训练样本。
图1.2 最优分类面
实线是最大间隔超平面,假设×号的是正例,圆圈的是负例。
在虚线上的点就是函数间隔是1的点,那么他们前面的系数,其他点都是。
这三个点称作支持向量。
构造拉格朗日函数如下:
下面我们按照对偶问题的求解步骤来进行求解,
首先求解的最小值,对于固定的,的最小值只与w和b有关。
最后得到
此时的拉格朗日函数只包含了变量。
然而我们求出了才能得到w和b。
接着是极大化的过程
前面提到过对偶问题和原问题满足的几个条件,首先由于目标函数和线性约束都是凸函数,而且这里不存在等式约束h。
存在w使得对于所有的i,。
因此,一定存在使得是原问题的解,是对偶问题的解。
1.3非线性支持向量机
图1.3 通过非线性变换将输入空间变换到一个高维空间
对非线性问题,可以通过非线性变换转化为某个高维空间中的线性问题,在变换空间求最优分类面。
对于线性不可分的情况,可以把样本X映射到一个高维特征空间H,并在此空间中运用原空间的函数来实现内积运算,这样将非线性问题转换成另一空间的线性问题来获得一个样本的归属。
根据泛化函数的有关理论,只要一种核函数满足Mercer条件,它就对应某一空间中的内积,因此只要在最优分类面上采用适当的内积函数就可以实现这种线性不可分的分类问题。
模型修改后,拉格朗日公式也要修改如下:
这里的和都是拉格朗日乘子,回想我们在拉格朗日对偶中提到的求法,先写出拉格朗
日公式(如上),然后将其看作是变量w和b的函数,分别对其求偏导,得到w和b的表达式。
然后代入公式中,求带入后公式的极大值。
整个推导过程类似以前的模型,这里只写出最后结果如下:
此时,我们发现没有了参数,与之前模型唯一不同在于又多了的限制
条件。
1.4核函数
核函数是将函数映射到高维空间来增加线性学习的计算能力,通过选择恰当的核函数来代替内积,可以隐式地将训练数据非线性地映射到高维空间,而不增加可调参数的个数,前提是核函数能够计算对应着的输入特征向量的内积。
将核函数形式化定义,如果原始特征内积是,映射后为,那么定义核函数(Kernel)为
选择不同的核函数意味着采取不同的标准对相似性和相似程度进行估计。
因此,核函数的选择对非线性支持向量机的构建是至关重要的,核函数的选择是一个难题。
下面这张图说明在低维线性不可分时,映射到高维后就可分了,使用高斯核函数。
图1.4 输入空间到特征空间的映射
第二章实验仿真结果及分析
通过对SVM的学习,了解到不同的实验参数对实验结果造成不同的影响,支持向量机建模过程中,其核函数的类型、核函数参数sigma和惩罚系数c的选取决定模型的识别性能,建模过程中多采用基于启发式的交叉验证法。
在本实验中使用了线性核函数和径向基函数核函数来进行实验,在两种基函数的基础下,又分析讨论了不同训练样本数量对ROC曲线的影响,及训练样本个数的不同对分类误差的影响;最后对惩罚系数C和径向基核函数中的参数sigma对实验结果的影响有一个简单的分析讨论.
2.1 基于线性核函数的实验仿真结果
在这部分实验中,选择的核函数是线性核函数,在此基础上,首先选择不同数量的训练样本,得到相应的最优分类器,再对固定数量的测试样本进行分类,此时的惩罚系数c保持默认不变,此时给出分类结果和相应的ROC曲线,以及相对应的分类误差,然后对所得的实验结果进行分析讨论;另一部分是保持训
练样本和测试样本数量不变,线性核函数不变,此时改变惩罚系数c,得到分类结果、ROC曲线以及分类误差.
[1] 训练样本数量对实验结果的影响
本次实验中使用的数据集分为训练样本集和测试样本集,其中训练样本集总数为3089个,测试样本集总数为4000个,而这个样本集中每个样本包含有4个特征,我们选取后两个特征进行分类,测试样本数目选了101个,惩罚系数c默认为1,测试样本和惩罚系数c在这种实验中保持不变.这组实验目的为通过训练样本数量的变化来得到实验结果,即当训练样本的个数发生变化时,找到分类误差和ROC曲线相对应的变化规律,并对这种规律进行分析与讨论。
下图为仿真实验结果,其中图2.1.1~2.1.3代表选取不同数目的训练样本时得到的最优分类器,并将测试样本进行分类,其中黑色代表支持向量,蓝色代表正确分类的样本,红色则表示错误分类的样本。
从这三幅图中可以看到,在每幅图中均出现一定数量的错误分类的样本,为了衡量错误分类的程度,在实验中引入了分类错误率,分类错误率是通过找到分类结果与测试标签之间不同的个数,然后除以测试标签的数目来计算得到的。
出现错误分类的样本的原因是实验所选取的样本集中的每个样本均包括4个特征,同时应用这4个特征对样本进行分类,理论上是可以将正样本与负样本完全分开的,然而我们在实验中仅仅选取了两个特征对样本进行分类,只运用两个特征,无论使用哪两个,样本的信息都有一定程度的丢失,因此势必存在一定数目的样本错误分类现象,也就是会存在一定的错误率。
图
2.1.1~2.1.3中算出了在特定训练样本数量下的分类错误率,可以看出随着训
练样本数目的增多,误差错误率会减小,这表示随着训练样本数量的增加,会有更多的特征用于训练分类器,使得分类器相对应的参数越来越精确,分类器的效果越来越好,相应的使得测试样本的分类结果更加精确,导致分类错误率减小。
但是随着训练样本数量增加分类错误率减少的规律不是绝对的,只能说这是一种趋势。
如图2.1.4表示训练样本数量在401~2901之间变化时的分类误差曲线,其中横坐标表示训练样本数量,纵坐标代表测试样本分类错误率。
从这幅图中看到,当训练样本数量增加时,测试样本分类错误率的大致走向是减少的,当训练样本数量为400~1000时,分类错误率不变,训练样本数量为1000~1500时,分类错误率成下降走势,但是当训练样本数量继续增加直到2000个时,此时分类错误率却是逐渐增加的,接着保持不变直到训练样本数
量变为2500时,接着才又逐渐下降。
出现这种现象是合理的,随着训练样本的增多,应用到训练分类器上的特征也随着增多,相应的信息也会增多,在这些新增加的特征中,当这些特征和原有的特征相似时,此时会遵循原来的分类错误率的走势继续变化,而
当新增加的信息和原有特征相差较大时,就可能存在着与原来的分类错误率的走势完全相反的走势,这时也就可能出现错误率反倒增加的现象,这个曲线只是相对的,是与训练样本的选取方式有很大的关系的,但是训练样本的数量与测试样本分类错误率的总体规律是:随着训练样本数目的增多,测试样本的分类错误率将减少。
图2.1.5~2.1.7表示的是图2.1.1~2.1.3所表示的三种情况下对测试样本进行分类得到的ROC曲线,ROC曲线涉及FPR与TPR两个指标,FPR即负例预测错误的数量与所有负例的比值,也叫错误率,反映模型的特异性;TPR即正例预测正确的数量与所有正例的比值,也叫命中率,反映模型的灵敏度。
ROC曲线以误检率为X轴,以检出率为Y轴,描绘了模型输出的收益和代价之间的关系。
为了衡量不同训练样本的基础上得到的ROC曲线的效果,我们引入曲线下面积,曲线下面积越大,分类准确性越高。
在ROC曲线上,最靠近坐标图左上方的点为敏感性和特异性均较高的临界值。
由这三幅图可以看出,随着训练样本的增多,ROC曲线下面积增多,及分类准确性有所提高,这是由于训练样本数目太少时,会出现过学习现象,简单理解就是训练样本得到的输出和期望输出基本一致,但是测试样本输出和测试样本的期望输出
相差却很大。
为了得到一致假设而使假设变得过度复杂称为过拟合。
由于使用过少的训练样本产生了一个过拟合的分类器,这个分类器能够百分之百的正确分类样本数据,也就是说再拿样本中的样本来给它,它绝对不会分错,但也就为了能够对样本完全正确的分类,使得它的构造如此精细复杂,规则如此严格,以至于任何与样本数据稍有不同的测试样本它全都认为不属于这个类别。
这就使得正确分类训练样本的要求变得十分严格,使得分类准确性降低。
随着训练样本数量的增加,使得分类器过拟合的现象有所改变,使得分类准确性有所提高,相应的ROC曲线下面积也会有所增大。
但是也不表示训练样本的数量越多越好,当训练样本增加到一定的数目时,若再增加训练样本,将会出现欠学习现象。
由于数据本身呈现二次型,故用一条二次曲线拟合会更好。
但普通的算法只提供线性方程供拟合之用,当训练样本的数目不是很多时,线性方程还可以将这些样本进行拟合,而当训练样本增加到一定程度时,此时线性拟合的误差就会过大,这就产生拟合不足即“欠拟合”现象,从而在分类时要造成偏差,导致分类的准确性降低,对应到图2.1.8中则表现为ROC曲线下面积下降。
2.2 基于径向基函数的实验仿真结果
在这部分实验中,选择的核函数是径向基核函数,在此基础上,首先选择不同数量的训练样本,得到相应的最优分类器,再对固定数量的测试样本进行分类,此时的惩罚系数c和径向基核函数中的参数sigma保持默认不变,此时给出分类结果和相应的ROC曲线,以及相对应的分类误差,然后对所得的实验结果进行分析讨论;另一部分是保持训练样本和测试样本数量不变,线性核函数不变,此时改变惩罚系数c和径向基核函数中的参数sigma,得到分类结果、
ROC曲线以及分类误差,分析惩罚参数c的变化以及径向基核函数中的参数sigma改变时对实验结果的影响,并通过交叉验证算法得到最优惩罚系数c与径向基核函数中的参数sigma。
[1] 训练样本数量对实验结果的影响
在这部分实验中,使用的实验参数及数据均与基于线性核函数的实验的第一部分使用的一致,新增加的一个参数便是径向基核函数中的参数sigma。
在这部分实验中使径向基核函数中的参数sigma保持不变,即使用默认值1.这组实验目的为通过训练样本数量的变化来得到实验结果,即当训练样本的个数发生变
化时,找到分类误差和ROC曲线相对应的变化规律,并对这种规律进行分析与讨论。
上图为仿真实验结果,其中图2.2.1~2.2.3代表选取不同数目的训练样本时得到的最优分类器,并将测试样本进行分类,其中黑色代表支持向量,蓝色代表正确分类的样本,红色
则表示错误分类的样本。
图2.2.4表示训练样本数量在401~2901之间变化时的分类误差曲线,其中横坐标表示训练样本数量,纵坐标代表测试样本分类错误率。
图2.2.5~2.2.7表示的是图2.2.1~2.2.3所表示的三种情况下对测试样本进行分类得到的ROC曲线,图2.2.8反映了训练样本数量与ROC曲线下面积之间的关系。
出现这些结果的原因在第一节已经有了详细的分析与讨论,此处便不再做赘述。
将这一部分的实验结果与第一节中相应的实验部分的实验仿真结果进行比较,可以看出无论是测试样本分类错误率还是ROC曲线下面积均比基于线性核函数的效果好,也就是说相对于基于线性核函数的SVM对测试样本的分类,基于径向基函数的SVM对测试样本的分类效果更好。
由前面的理论知识知道,应用核函数一方面是为了更好地拟合,由于数据本身呈现二次型,故用一条二次曲线拟合会更好。
所谓径向基函数,就是某种沿径向对称的标量函数。
通常定义为空间中任一点到某一中心之间欧氏距离的单调函数,其作用往往是局部的,即当这点远离中心点时函数取值很小。
最常用的径向基函数是高斯核函数。
径向基函数能够实现非线性映射,线性核函数可以证明是他的一个特例,数据本身的二次型的特点使得在很多情况下使用线性核函数的SVM并不能使测试样本可分,样例可能存在线性不可分的情况,而将
特征映射到高维空间后,往往就可分了。
因此在很多情况下使用径向基函数的SVM会使得训练样本的效果好于线性核函数的SVM,对应于实验结果便是基于径向基函数的分类器对测试样本分类的错误率与ROC曲线下面积的值要高于基于线性核函数的相应的实验结果。
[2] 径向基函数参数sigma与惩罚系数c对实验结果的影响
核函数确定了数据在映射到高维空间之后的分布形态,核函数参数sigma 判定了特征空间中向量间归一化的欧氏距离,sigma的选择与学习样本输入空间的范围或宽度有关,输入空间范围越大,则sigma取值越大,反之越小。
惩罚系数c是模型复杂度和训练错误率之间的折中,在建模过程中,无法得到推广能力估计值与这些参数的显示表达关系,且变化不连续。
可采用基于启发式的交叉验证法得到最优值。
交叉验证是一种用来评价一个统计分析的结果是否可以推广到一个独立的数据集上的技术。
主要用于预测,即想要估计一个预测模型的实际应用中的准确度。
它是一种统计学上将数据样本切割成较小子集的实用方法。
于是可以先在一个子集上做分析,而其它子集则用来做后续对此分析的确认及验证。
一个交叉验证将样本数据集分成两个互补的子集,一个子集用于训练(分类器或模型)称为训练集;另一个子集用于验证(分类器或模型的)分析的有效性称为测试集。
利用测试集来测试训练得到的分类器或模型,以此作为分类器或模型的性能指标。
得到高度预测精确度和低的预测误差,是研究的期望。
为了减少交叉验证结果的可变性,对一个样本数据集进行多次不同的划分,得到不同的互补子集,进行多次交叉验证。
取多次验证的平均值作为验证结果。
在给定的建模样本中,拿出大部分样本进行建模型,留小部分样本用刚建立的模型进行预报,并求这小部分样本的预报误差,记录它们的平方和。
这个过程一直进行,直到所有的样本都被预报了一次而且仅被预报一次。
本次实验中选择的交叉验证算法是k-fold交叉验证。
它的过程是:初始采样分成k个子样本,一个单独的子样本被保留作为验证模型的数据,其他的
k-1个样本用来训练。
交叉验证重复k次,每个子样本验证一次,平均k次的结果或者使用其它结合方式,最终得到一个单一估测。
这个方法的优点在于
同时重复运用随机产生的子样本进行训练和验证,每次的结果验证一次,实
验中使用的是最常用的10次交叉验证。
通过交叉验证算法得到分类器的径向基函数参数sigma的最优值为
1.3565,惩罚系数的最优值为5.5555。
在这组最优参数下的实验仿真结果如图
2.2.9所示(此时的训练样本数目为1001个,测试样本数目101个)。
由实验结果可以看出,在训练样本和测试样本的数量保持不变的前提下,选取最优参数时得到的实验结果与这一节第一部分是实验结果进行对比,选取最优参数时的实验结果较好。
当保持径向基函数参数sigma不变,改变惩罚参数c时,可以看到实验结果如图2.2.10(a)与(b)所示,此时的ROC曲线下面积均比图2.2.9所示的ROC曲线下面积小,也就是说对测试样本的分类精度不如最优参数下的精度。
由于测试样本中可能存在一些离群点(可能是噪声),如果这些离群点存在于另一个类中,导致样
本变得不可分。
为了解决这一问题,我们引入了松弛变量,目的是允许这些点位于对方的区域中。
离散点越多,目标函数值就越大,而我们要求的是尽可能小的目标函数值,惩罚系数c是表示这些离散点的权重,此时就需要调整惩罚系数c来得到目标。
若c过大,则此时离散点占的比重增多,使得处于对方区域中的样本数量增多,使得错误分类的样本增多,使得分类精度降低,相应的ROC曲线下面积减小;当惩罚系数c过小时,此时离散点的权重过小,造成超平面的移动,使得间隔缩小,也会造成分类精度降低的现象出现,即ROC曲线下面积减小。
当径向基函数参数sigma改变,而保持惩罚系数c不变时,可以看出无论sigma变大还是变小,均会使得分类器对测试样本的分类精度降低。
可见径向基函数参数也影响SVM的性能。
这是由于核函数、映射函数以及特征空间是一一对应的,确定了核函数,就隐含的确定了映射函数和特征空间。
核参数的改变实际上是隐含地改变映射函数从而改变样本特征子空间分布的复杂程度。
对于一个具体问题,如果sigma取值不合适,SVM就无法达到预期的学习效果。
特征子空间的维数决定了能在此空间构造的线性分类面的最大维,也就决定了线性分类面能达到的最小经验误差。
同时,每一个特征子空间对应唯一的推广能力最好的分类超平面,如果特征子空间维数很高。
则得到的最优分类面就可能比较复杂,经验风险小但置信范围大;反之亦然,这两种情况下得到的SVM都不会有好的推广能力。
只有首先选择合适的核函数将数据投影到合适的特征空间,才可能得到推广能力良好的SVM分类器。
第三章实验总结
支持向量机是基于统计学习理论的结构风险最小化原则的,目标是寻找
一个超平面,使得离超平面比较近的点能有更大的间距。
使用线性核函数的SVM能够将样本进行分类,只有当样本线性可分散时,分类错误率将会很低,ROC曲线性能会好,即ROC曲线下面积会多,当样本不是线性可分时,此时使用线性核函数的SVM对样本分类就会存在很大的错误,此时选择使用其它的
核函数将特征映射到高维,很多情况下就变得的可分了。
即使不能保证完全
可分,但是可以通过调整模型,在不可分的情况下,尽可能的分隔超平面。
从上面的实验结果的分析可知:径向基函数sigma与惩罚系数c共同影响SVM 分类器的性能,径向基函数通过隐含的改变映射函数,从而改变样本特征子空间分布的复杂程度;而惩罚c通过控制不同的错误率来影响SVM分类器的性能。
若固定其中一个而通过优化另一个是不能得到最优分类器的,因此,在应用时需要综合考虑才能得到性能最优的SVM分类器。