机器学习(4): 支持向量机(Support Vector Machine) 算法小结

在这里插入图片描述


注:转载请标明原文出处链接:https://xiongyiming.blog.csdn.net/article/details/94553561

1 SVM 简介

支持向量机 (Support Vector Machine, SVM)是一类按监督学习 (supervised learning)方式对数据进行二元分类(binary classification)的广义线性分类器 (generalized linear classifier),其决策边界是对学习样本求解的最大边距超平面(maximum-margin hyperplane)。
SVM被提出于1964年,在二十世纪90年代后得到快速发展并衍生出一系列改进和扩展算法,在人像识别(face recognition)、 文本分类(text categorization)等模式识别(pattern recognition)问题中有得到应用。
SVM是由模式识别中广义肖像算法(generalized portrait algorithm)发展而来的分类器,其早期工作来自前苏联学者Vladimir N. Vapnik和Alexander Y. Lerner在1963年发表的研究 [8] 。1964年,Vapnik和Alexey Y. Chervonenkis对广义肖像算法进行了进一步讨论并建立了硬边距的线性SVM [9] 。此后在二十世纪70-80年代,随着模式识别中最大边距决策边界的理论研究 [10] 、基于松弛变量(slack variable)的规划问题求解技术的出现 [11] ,和VC维(Vapnik-Chervonenkis dimension, VC dimension)的提出 [12] ,SVM被逐步理论化并成为统计学习理论的一部分。1992年,Bernhard E. Boser、Isabelle M. Guyon和Vapnik通过核方法首次得到了非线性SVM。1995年,Corinna Cortes和Vapnik提出了软边距的非线性SVM并将其应用于手写数字识别问题,这份研究在发表后得到了广泛的关注和引用,为其后SVM在各领域的应用奠定了基础。
(以上来源于百度百科)

2 引例

我们通过一个故事来理解SVM。这个故事也主要参考博客:https://cuijiahua.com/blog/2017/11/ml_8_svm_1.html
很久以前一位大侠闭关修炼10年,想在江湖上留下自己的名号,不断地向各个武林门派挑战。其中一个门派的掌门布局迎接这位大侠的挑战。这位掌门对这位大侠说:“你能用一根棍将下面不同颜色的球分开?要求:尽量在放更多球之后,仍然适用。”(布局如下图所示)
在这里插入图片描述
这位大侠很快地找到一个合适的位置放了棍,心想这是考我的智商吗?
在这里插入图片描述
这位掌门又随机放了很多球。
在这里插入图片描述
显然掌门有几个故意是放错了,大侠有赶紧对棍的位置做出调整。
在这里插入图片描述
如上图所示,大侠试图把棍放在最佳位置,好让在棍的两边有尽可能大的间隙。这个间隙就是球到棍的距离,这就是SVM。然而,这位掌门发现这位大侠智力还可以,再考一考内功如何,掌门又重新布局,如下图所示:
在这里插入图片描述
现在,这位大侠没有棍可以很好帮他分开两种球了,现在怎么办呢?大侠苦思冥想,一会儿想到了一个办法,大侠用自己闭关修炼10年练出来的内功将这球都打入空中,然后,大侠随手拿一张纸,插入两个球的中间,如下图所示:

在这里插入图片描述
现在,掌门这个布局被大侠用一条曲线给分开了,如下图所示:
在这里插入图片描述
掌门看了这位大侠内功深厚,对这位大侠赞不绝口。

多年以后,大牛们把这些球称为数据(data),把棍子称为分类器 (classifier), 找到最大间隙的trick叫做优化(optimization),用内功将这些球弄到空中称为核(kernel), 那张纸称为超平面 (hyperplane)。

SVM超平面视频链接如下
B站:https://www.bilibili.com/video/av33852263/
YouTube: https://www.youtube.com/watch?v=3liCbRZPrZA

当一个分类问题,数据是线性可分的,也就是用一根棍就可以将两种小球分开的时候,我们只要将棍的位置放在让小球距离棍的距离最大化的位置即可,寻找这个最大间隔的过程,就叫做最优化。但是,现实往往是很残酷的,一般的数据是线性不可分的,也就是找不到一个棍将两种小球很好的分类。这个时候,我们就需要像大侠一样,运用内功将小球拍起,用一张纸代替小棍将小球进行分类。想要让数据飞起,我们需要的东西就是核函数 (kernel),用于切分小球的纸,就是超平面(hyperplane)。
下面就将具体说明SVM背后的最优化问题。


3 SVM背后的最优化问题

3.1 自然语言描述

对于下图的数据进行分类,我们容易地将其进行分类,并且有很多种方法。
在这里插入图片描述
如下图所示,给出了三种办法将数据进行分类,直观看上去,应该去找位于两类训练样本的“正中间”画出分界线。因为中间的那条线中规中矩,对训练样本的局部扰动的容忍性最好。
在这里插入图片描述
因此,在进行分类时,我们需要找出最佳的分界线(超平面),这样的分类结果的鲁棒性更强。
在这里插入图片描述
SVM需要尝试寻找最优的决策边界,距离两个类型的最近的样本最远。上图外边的两条直线上的点(最近的样本点) 称之为支持向量。而外边的两条直线的距离称之为间隔(margin)。SVM的任务就是使得间隔最大化。
对于上述问题可以很容易的进行分类,我们称之为硬间隔 (Hard Margin)。而在实际情况中,大部分数据并不是这么容易进行分类。为了解决上述问题,我们允许SVM出现一些错误并且这些错误在一定范围是可接受的,这被称之为软间隔 (soft margin)。

3.2 数学语言描述

前面说到,SVM的任务就是使得间隔最大化,如下图所示,间隔为2 d d ,那么如何使用做数学去描述这个间隔呢?
在这里插入图片描述
首先回顾一下高中学习过的点到直线的距离
给出点 ( x 0 , y 0 ) \left( {{x_0},{y_0}} \right) ,直线为 A x + B y + C = 0 {\rm{A}}x + {\rm{B}}y{\rm{ + C}} = 0 ,则点到直线的距离 r r 为:
(1) r = A x 0 + B y 0 + C A 2 + B 2 r = {{\left| {{\rm{A}}{x_0} + {\rm{B}}{y_0}{\rm{ + C}}} \right|} \over {\sqrt {{{\rm{A}}^2} + {{\rm{B}}^2}} }}\tag{1} 同样地,点 ( x 0 , y 0 , z 0 ) \left( {{x_0},{y_0},{z_0}} \right) 到平面 A x + B y + C z + D = 0 {\rm{A}}x + {\rm{B}}y{\rm{ + C}}z{\rm{ + D}} = 0 的距离 r r 为:
(2) r = A x 0 + B y 0 + C z 0 + D A 2 + B 2 + C 2 r = {{\left| {{\rm{A}}{x_0} + {\rm{B}}{y_0}{\rm{ + C}}{z_0}{\rm{ + D}}} \right|} \over {\sqrt {{{\rm{A}}^2} + {{\rm{B}}^2} + {{\rm{C}}^2}} }}\tag{2} 同理也可以拓展 n n 维空间点x,在样本空间中,超平面可通过线性方程描述为:
(3) w T x + b = 0 {{\bf{w}}^{\rm{T}}}{\bf{x}} + b = 0\tag{3} 其中, w = ( w 1 ; w 2 ; ; w d ) {\bf{w}} = ({w_1};{w_2}; \ldots ;{w_d}) 为超平面的法向量,决定超平面的方向; b b 为位移项,决定超平面与 n n 维空间中的原点之间的距离。下面将超平面记为 ( w , b ) \left( {{\bf{w}},b} \right) ,因此 n n 维样本空间中任一点x到超平面 ( w , b ) \left( {{\bf{w}},b} \right) 的距离为:
(4) r = w T x + b w r = {{\left| {{{\bf{w}}^{\rm{T}}}{\bf{x}} + b} \right|} \over {\left\| {\bf{w}} \right\|}}\tag{4} 其中, w = w 1 2 + w 2 2 + + w d 2 \left\| {\bf{w}} \right\| = \sqrt {w_1^2 + w_2^2 + \ldots + w_d^2} .
给定样本数据集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , , ( x m , y m ) } , y i { + 1 , 1 } D = \left\{ {({{\bf{x}}_1},{y_1}),({{\bf{x}}_2},{y_2}), \ldots ,({{\bf{x}}_m},{y_m})} \right\},{y_i} \in \left\{ { + 1, - 1} \right\} 用于分类,假设超平面能将样本空间的点正确分类,即对于任意的 ( x m , y m ) D ({{\bf{x}}_m},{y_m}) \in D ,若 y i = + 1 \forall {y_i} = + 1 ,则+1类别样本中的点到超平面的距离要大于等于间隔d,即 w T x + b w d {{\left| {{{\bf{w}}^{\rm{T}}}{\bf{x}} + b} \right|} \over {\left\| {\bf{w}} \right\|}} \ge d ;若 y i = 1 \forall {y_i} = - 1 ,则-1类别样本中的点到超平面的距离要大于等于间隔 d d ,即 w T x + b w d {{\left| {{{\bf{w}}^{\rm{T}}}{\bf{x}} + b} \right|} \over {\left\| {\bf{w}} \right\|}} \ge d ,将绝对值去掉,化简为 w T x + b w d {{{{\bf{w}}^{\rm{T}}}{\bf{x}} + b} \over {\left\| {\bf{w}} \right\|}} \le - d .


在这里插入图片描述
因此,合并起来:
(5) { w T x + b w d , y i = + 1 w T x + b w d , y i = 1 \left\{\begin{array}{l}{\frac{\mathbf{w}^{\mathrm{T}} \mathbf{x}+b}{\|\mathbf{w}\|} \geq d, \quad \forall y_{i}=+1} \\ {\frac{\mathbf{w}^{\mathrm{T}} \mathbf{x}+b}{\|\mathbf{w}\|} \leq-d, \quad \forall y_{i}=-1}\end{array}\right.\tag{5}
将上式化简:
(6) { w T x + b w d + 1 , y i = + 1 w T x + b w d 1 , y i = 1 \left\{\begin{array}{l}{\frac{\mathbf{w}^{\mathrm{T}} \mathbf{x}+b}{\|\mathbf{w}\| d} \geq+1, \quad \forall y_{i}=+1} \\ {\frac{\mathbf{w}^{\mathrm{T}} \mathbf{x}+b}{\|\mathbf{w}\| d} \leq-1, \quad \forall y_{i}=-1}\end{array}\right.\tag{6} 而上式中 w d \left\| {\bf{w}} \right\|d 为一个数,所以可以化简为:
(7) { w d T x + b d + 1 , y i = + 1 w d T x + b d 1 , y i = 1 \left\{\begin{array}{ll}{\mathbf{w}_{d}^{\mathrm{T}} \mathbf{x}+b_{d} \geq+1,} & {\forall y_{i}=+1} \\ {\mathbf{w}_{d}^{\mathrm{T}} \mathbf{x}+b_{d} \leq-1,} & {\forall y_{i}=-1}\end{array}\right.\tag{7} 其中, w d T = w T w d {\bf{w}}_d^{\rm{T}} = {{{{\bf{w}}^{\rm{T}}}} \over {\left\| {\bf{w}} \right\|d}} b d = b w d {b_d} = {b \over {\left\| {\bf{w}} \right\|d}} 。这样化简的目的是方便后面的计算。

因此,化简后的分类直线如下图所示:
在这里插入图片描述
其中,最中间的直线方程同样也可以化简,如下图所示:

在这里插入图片描述
这样三条直线方程都统一起来,为了后面表达方便,我们再次化简,将公式(7)重新定义为:
(8) { w T x + b + 1 , y i = + 1 w T x + b 1 , y i = 1 \left\{\begin{array}{ll}{\mathbf{w}^{\mathrm{T}} \mathbf{x}+b \geq+1,} & {\forall y_{i}=+1} \\ {\mathbf{w}^{\mathrm{T}} \mathbf{x}+b \leq-1,} & {\forall y_{i}=-1}\end{array}\right.\tag{8} 将两边同时乘上 y i {y_i}
(9) y i ( w T x + b ) 1 {y_i}\left( {{{\bf{w}}^{\rm{T}}}{\bf{x}} + b} \right) \ge 1\tag{9} 因此,要有正确分类,必须满足公式(9)的表达式。即公式(9)作为约束条件。

我们的任务就是最大化间隔,而间隔的大小为2 r r
(10) 2 r = 2 w T x + b w 2 w 2r = 2{{\left| {{{\bf{w}}^{\rm{T}}}{\bf{x}} + b} \right|} \over {\left\| {\bf{w}} \right\|}} \Rightarrow {2 \over {\left\| {\bf{w}} \right\|}}\tag{10} 则这个间隔(margin)定义为:
(11) γ = 2 w \gamma = {2 \over {\left\| {\bf{w}} \right\|}}\tag{11}
在这里插入图片描述
如上图所示,这是被重新定义的直线方程以及间隔。
若想找到最大间隔(maximum margin),即在公式(9)的约束条件下,找到间隔最大值即可,则:
(12) max w , b 2 w  s.t.  y i ( w T x + b ) 1 , i = 1 , 2 , , m \begin{array}{l}{\max _{\mathbf{w}, b} \frac{2}{\|\mathbf{w}\|}} \\ {\text { s.t. } y_{i}\left(\mathbf{w}^{\mathrm{T}} \mathbf{x}+b\right) \geq 1, i=1,2, \ldots, m}\end{array}\tag{12} :这个最优化问题是有约束条件的,我们称之为有条件的最优化问题

显然,为了最大化间隔,仅需要最大化 1 w {1 \over {\left\| {\bf{w}} \right\|}} ,这个等价于最小化 w 2 {\left\| {\bf{w}} \right\|^2} 。则公示最优化问题可转化为:
(13) min w , b 1 2 w 2  s.t.  y i ( w T x + b ) 1 , i = 1 , 2 , , m \begin{array}{l}{\min _{\mathbf{w}, b} \frac{1}{2}\|\mathbf{w}\|^{2}} \\ {\text { s.t. } y_{i}\left(\mathbf{w}^{\mathrm{T}} \mathbf{x}+b\right) \geq 1, i=1,2, \ldots, m}\end{array}\tag{13} 这就是支持向量机 (Support Vector Machine, SVM) 背后的最优化问题。

:本博客只说明支持向量机的原理(背后的最优化的问题)。关于最优化问题如何求解比较复杂,后面有时间会更新。

参考资料

[1] https://coding.imooc.com/class/169.html#Anchor
[2] https://cuijiahua.com/blog/2017/11/ml_8_svm_1.html
[3] 机器学习, 北京: 清华大学出版社, 2016年1月
[4] 机器学习(西瓜书). 公式推导解析

发布了170 篇原创文章 · 获赞 1787 · 访问量 70万+

猜你喜欢

转载自blog.csdn.net/zaishuiyifangxym/article/details/94553561