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






