第6章 支持向量机

支持向量机是一类按监督学习方式对数据进行二元分类的广义线性分类器,它的目的是寻找一个超平面来对样本进行分割,分割的原则是间隔最大化,最终转化为一个凸二次规划问题来求解。

优点:

1.有严格的数学理论支持,可解释性强

2.能找出对任务至关重要的关键样本(即支持向量)

3.采用核技巧后,可以处理非线性分类/回归任务

4.最终决策函数只由少数的支持向量所确定,计算的复杂度取决于支持向量的数目,而不是样本空间的维数,在某种意义上避免了“维数灾难”

缺点:

1.训练时间长

2.当采用核技巧时,如果需要存储核矩阵,空间复杂度大

3.模型预测时,支持向量数目较大,预测计算复杂度高

本文重点对基于硬间隔的线性可分支持向量机、基于核函数的非线性支持向量机、基于软间隔的线性支持向量机这三类进行介绍。


硬间隔与线性可分支持向量机


6.1 间隔和支持向量

给定训练样本集D={(x_{1} y_{1} ),(x_{2} y_{2} ),...,(x_{m} ,y_{m} )},y_{i} \in {-1,+1},分类学习基于训练集D在样本空间中找到一个划分超平面将不同类别的样本分开,但能将训练样本分开的划分超平面有很多,而我们要努力找到位于两类训练样本“正中间”的划分超平面(如图中的粗线),它对训练样本局部扰动的“容忍”性最好,即它产生的分类效果是最鲁棒的,对未见示例的泛化能力最强

在样本空间中,划分超平面可通过线性方程来描述:

其中w为法向量,决定了超平面的方向;b为位移项,决定了超平面与原点之间的距离。由此记超平面为(w,b)

样本空间任意点x到超平面(w,b)的距离为

假设超平面(w,b)能将训练样本正确分类,则约束条件为:

式(6.3) 要求所有样本必须划分正确,称为“硬间隔”

使式子等号成立的训练样本点被称为“支持向量”(如图带圈圈的标记)。

两个异类支持向量到超平面的距离之和(间隔)为:

最大间隔”的划分超平面条件:满足式(6.3)中对参数w和b,使得\gamma 最大,即:

需最大化||w||^-1  ,等价于最小化||w||^2

可改写为(支持向量机SVM的基本型):

式(6.6)是原始目标函数

6.2 对偶问题

凸二次规划问题使用拉格朗日乘子法可得到对偶问题,具体是对每条约束添加拉格朗日乘子\alpha _{i} \geq 0, 从而得出拉格朗日函数后,令对w和b的偏导为零,将得出的式子带入拉格朗日函数后可得到原式对应的对偶问题,用SMO算法对对偶问题求解后,即可得到最大间隔划分超平面所对应的模型(上述过程需满足KKT条件)。

在线性可分的假设下,希望得到的最大间隔划分超平面所对应的模型为:

式(6.12)具体求解如下

由KKT条件,对任意训练样本(x_{i} y_{i} ),总有\alpha _{i} = 0  或y_{i} f(x_{i} )= 0 。

\alpha _{i} = 0,则该样本将不会在式(6.12)的求和中出现,也就不会对模型有任何影响;

\alpha _{i} > 0 ,则必有y_{i} f(x_{i} )= 0,所对应的样本点位于最大间隔边界上,是一个支持向量。

这显示出支持向量机的一个重要性质:训练完成后,大部分的训练样本都不需保留,最终模型仅与支持向量有关。


核函数与非线性支持向量机


6.3 核函数

在现实任务中,原始样本空间内也许并不存在一个能正确划分为两类样本的超平面。这时,可将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分

\phi (x)表示将x映射后的特征向量

那么,在特征空间中划分超平面所对应的模型表示为:

类似式(6.6),有原始目标函数

用拉格朗日乘子法得到其对偶问题为:

\phi(x _{i} )^T \phi (x_{j} )是样本x_{i} x_{j} 映射到特征空间之后的内积,直接计算困难

为避开计算困难,可以通过设想一个核函数

x_{i} x_{j} 在特征空间的内积等于它们在原始样本空间中通过函数\kappa (.,.)计算的结果

核函数的作用:核函数可以用原始样本空间上的点内积的方式,经过运算转化为高维空间点内积,而不必完全由高维空间上的点进行内积计算,这样达到了降低运算复杂度的作用。即从先升维度再算内积变成了先算内积再升维度

在低纬空间(原始样本空间)中对于内积的运算则被定义为“核函数”,在原始样本空间经过核函数计算的内积会等于高维空间的内积。

由此,原始目标函数经过改写求解出特征空间中划分超平面所对应的模型:

几种常用的核函数:

核函数选择是支持向量机的最大变数

核函数的引入一方面减少了计算量,另一方面减少了存储数据的内存使用量。


松弛变量与软间隔支持向量机


6.4 软间隔

在现实任务中往往难确定合适的核函数使得训练样本在特征空间中线性可分,即使恰好找到了也很难断定这个貌似线性可分的结果不是由于过拟合所造成的。为缓解这一问题是允许支持向量机在一些样本上出错

软间隔:数据样本不是实际的线性可分,而是近似线性可分,即允许某些样本不满足约束

但是在最大化间隔的同时,不满足约束的样本应尽可能少。这个式子等价于线性可分支持向量机的约束条件。

由此,原始目标函数中增加了一个损失函数可写为:

当C为无穷大时,迫使所有样本满足约束,目标函数等价于线性可分支持向量机的目标函数。当C取有限值时,允许一些样本不满足约束。

三种常用的替代损失函数:

若采用hinge损失,则目标函数变成:

为度量这个间隔软到何种程度,引入“松弛变量”\xi _{i} \geq 0(即用以表示该样本不满足约束的程度),将上式改写得到“软间隔支持向量机”:

目标函数
约束条件

通过拉格朗日乘子法得到目标函数的拉格朗日函数并得到其对偶问题过程如下:

对偶问题

上述过程需满足KKT条件要求:

对于任意训练样本(x_{i} ,y_{i} ),总有\alpha _{i} =0y_{i} f(x_{i} )=1-\xi _{i} .

\alpha _{i} =0,则样本不会对模型有任何影响;

\alpha _{i}> 0,   则必有y_{i} f(x_{i} )=1-\xi _{i} , 即该样本是支持向量:

由式(6.39)可知, 

    若\alpha _{i} <C,则\mu  _{i} >0,进而有\xi  _{i} =0,即该样本恰在最大间隔边界上,

    若\alpha _{i} =C,则\mu  _{i} =0,此时若\xi  _{i} \leq 1,则该样本落在最大间隔内部,

                                                        若\xi  _{i} > 1,则该样本被错误分类。

由此可看出:软间隔支持向量机的最终模型仅与支持向量有关。

6.5 正则化

把目标函数中的0/1损失函数换成别的替代损失函数可得到其他学习模型,这些模型具有一个共性:优化目标中的第一项用来描述划分超平面的间隔大小(结构风险),另一项用来表述训练集上的误差(经验风险),所以加了损失函数的线性支持向量机优化目标的一般形式为:

第一项称为“结构风险”,用以描述模型的某些特质;第二项称为“经验风险”,用以描述模型与训练数据的契合程度;C对于两者进行折中。

正则化:对不希望得到的结果施以惩罚,从而使得优化过程趋向于希望目标。

上式是“正则化”问题,\Omega (f)称为正则化项,C称为正则化常数,L_{p} 范数是常用的正则化项。


支持向量回归(SVR):


SVR与SVM的区别:

 SVM是要使到超平面最近的样本点的“距离”最大

 SVR则是要使到超平面最远的样本点的“距离”最小

传统回归模型与支持向量回归计算损失的区别

传统回归模型直接基于模型输出f(x)与真实输出y之间的差别来计算损失,当且仅当f(x)y完全相同时,损失才为零。

支持向量回归假设能容忍f(x)y之间最多有\epsilon 的偏差,仅当f(x)y之间的差别绝对值大于\epsilon 才计算损失,这相当于以f(x)为中心,构建了一个宽度为2\epsilon 的间隔带,若训练样本落入此间隔带,则以为是被预测正确的。

于是,SVR问题的目标函数为:

加入松弛变量\xi _{i} \hat{\xi _{i} } ,改写为:

目标函数
约束条件

再用拉格朗日乘子法得到SVR的对偶问题

求解后得到SVR模型

能使式(6.53)中的(\hat{\alpha _{i} } -\alpha _{i})\neq 0的样本即为SVR的支持向量,它们必落在间隔带之外

上述过程需满足KKT条件

仅当样本(x_{i} ,y_{i} )不落入间隔带中,相应的\alpha _{i} \hat{\alpha _{i} } 才能取非零值;\alpha _{i} \hat{\alpha _{i} } 中至少有一个为零。

若考虑特征映射形式,SVR模型为:


两个重要定理:


核函数定理:令\chi 为输入空间,\kappa (.,.)是定义在\chi *\chi 上的对称函数,则\kappa 是核函数当且仅当对于任意数据D={x_{1}, x_{2} ,...,x_{m} },“核矩阵”总是半正定的:

只要一个对称函数所对应的核矩阵半正定,它就能作为核函数使用。核函数选择是支持向量机的最大变数。

表示定理:令H为核函数\kappa 对应的再生核希尔伯特空间,||h||_{H} 表示H空间中关于h的范数,对于任意单调递增函数\Omega 和任意非负损失函数\iota ,优化问题

表示定理对损失函数没有限制,对正则化项\Omega 仅要求单调递增,即对于一般的损失函数和正则化项,优化问题的最优解h^*(x) 都可以表示为核函数\kappa (x,x_{i} )的线性组合。

引入核函数能将线性学习器扩展为非线性学习器。


乳腺癌简单预测


这里我们使用sklearn的乳腺癌数据对以下5种模型的准确度进行预测,重点放在SVC上。

第一种:逻辑回归  (默认参数,不调参)

第二种:SVC

SVC主要调节的参数有:C(正则化参数)、kernel(核函数)、degree(多项式维度)、gamma(核函数参数)、coef0(核函数的常数项)。

第一次我用SVC的默认参数,此时的核函数是高斯核函数(kernel=‘rbf’),结果测试集的准确度为62.9%,太低了!说明存在严重的过拟合情况。

第二次我选择改变核函数

用维度为2的多项式核函数(kernel=‘poly’degree=2)试试,测试集准确度变为95.1%,感觉比高斯核函数好多了!

线性核函数(kernel=‘linear’)也来试试,多项式核函数当维度为1时(kernel=‘poly’,degree=1)退化为线性核。咦,测试集的准确度提升到了95.8%,但是测试集和训练集的准确度太过于接近,可能会有欠拟合的情况。

sigmoid核函数(kernel=‘sigmoid’)也来试试,真的是太太太低了吧,算了果断抛弃。

第三次,对于常用的高斯核函数,就这么被PK下去了感觉不太好,我决定试试改变正则化参数 C看看能不能挽救它,默认下的是C=1.0. 乳腺癌数据集的特征具有完全不同的数量级,这对SVC模型影响比较大,所以先进行归一化处理,对每个特征进行缩放,使其缩放到 0 和 1 之间。归一化处理后,默认参数下的SVC模型测试集的准确率已经高达96.5%了。

改变C值试试,当C值为1000时,测试集准确度又提高了,达到了97.4%,说明增大C值可以优化模型。

第三种:决策树

第一次我先用了决策树里面默认的参数,其中max_depth=None,即树的深度是无穷的,此时出现了训练集的准确度为100%,说明出现了过拟合情况。

对于上述过拟合情况我采取的是限制树的深度。限制树的深度可以减少过拟合。这会降低训练集的精度,但可以提高测试集的精度。

max_depth=3开始,发现训练集的准确率下降了,但是测试集的准确度从93%提高到了94.4%,明显泛化性能提高了。

再用max_depth=4试试,测试集准确度为95.1%,泛化性能又提高了。可!

再用max_depth=5试试,测试集准确度却下降了,根据预剪枝原则,若当前的结点的划分不能带来决策树泛化性能的提高,则停止划分并将当前结点标记为叶节点,所以在乳腺癌数据中,我们选择决策树的深度为4的模型

第四种:神经网络 (默认参数,不调参)

在默认参数下,神经网络模型的测试集准确度是93.7%,对数据进行归一化处理看看,高达97.4% !!

第五种:Knn

有进行归一化处理

不同模型的训练集和测试集准确度:

训练集和测试集的准确度过于接近,则很大可能存在欠拟合,如上图的逻辑回归模型;在这5个模型中,SVC和神经网络的测试集准确度高于其他模型,泛化能力是比较好的;但是神经网络因为没有调参,它的训练集和测试集的准确度要比SVC更接近一些,所以目前来看,对于乳腺癌分类模型,我觉得SVC是比较优秀的!



最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,558评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,002评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,036评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,024评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,144评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,255评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,295评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,068评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,478评论 1 305
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,789评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,965评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,649评论 4 336
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,267评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,982评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,223评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,800评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,847评论 2 351

推荐阅读更多精彩内容