文章目录
终于到了梳理支持向量机(SVM) 这个大知识点了,好鸡冻!!!因为理解SVM牵涉的内容实在是太多了:分类函数,最大化分类间隔,凸二次规划,拉格朗日乘数法、原始问题与对偶问题的转换,KKT条件,SMO算法等等。。。这些内容其实可归为最优化问题的求解,理解完SVM,那么上面提到的知识点手推数学公式都就不成问题了!
注:这篇文章主要介绍SVM解决线性可分问题。下一篇文章(八)是介绍SVM解决线性不可分问题。
初探-SVM概念
支持向量机(Support Vector Machines,SVM)是建立在统计学习理论基础上的一种数据挖掘方法,能够处理回归问题(时间序列分析)和模式识别(分类问题、判别分析)等问题。它的机理是寻找一个满足分类要求的最优分类超平面(之所以叫做超平面,是因为被分类的数据可能是多维度的),使得在保证分类精度的同时,超平面两侧的空白区域最大化,即在样本对象的特征空间上间隔最大,理论上,SVM能实现对线性可分数据的最优分类。SVM是一个二元分类模型的广义线性分类器,其决策边界是对样本求解的最大边距超平面(maximum margin hyperplane)。
插入通俗的解释:上面的概念太抽象了,下面举两个现实的栗子说明SVM的作用。
支持向量机SVM就是用来解决分类问题的(二分类:即只将数据分成两种类别)。
- 以一维情况来举例:一维即要分类的物体属性只有一种,比如说需要分类:沙子和石头,那么可以用筛子就可以将两者分开,如果要用函数来表示,就是当直径d大于设定值D,就判断为石头,小于就是沙子,故有: d > D , x = 石 头 d < D , x = 沙 子 d>D, x=石头\\d<D, x=沙子 d>D,x=石头d<D,x=沙子
- 以 二维情况 来举例(线性可分):二维即要分类的物体属性有两个,比如说要分类:车的品牌:宝马和大众。假设决定这两个品牌的属性有两个:价格x和性能y,那么我们把数据(x,y)放在一个二维坐标系中作为点,然后找到一条直线将两个类别分开;比如说x+y+1=0这条直线可以分开,在直线左边就是宝马,直线右边就是大众,那么就有: x + y + 1 > 0 , 类 别 = 宝 马 x + y + 1 < 0 , ; 类 别 = 大 众 x+y+1>0, 类别=宝马\\x+y+1<0, ;类别=大众 x+y+1>0,类别=宝马x+y+1<0,;类别=大众
- 以此类推,可能有属性是三维,四维,N维的情况,那么要将类别分开的就不是直线了,而是平面,超平面。
以上就是通俗的栗子,相信这样的解释应该很容易理解。好了,下面接着回到复杂的概念当中。
在上面的概念中,提到了相当多的专业名称,因此要理解SVM,我们首先需要了解什么是线性分类器,什么是特征空间的最大间隔/边距超平面,还有怎么求最优分类?下面,就一一进行梳理。
线性分类
线性可分性
(直观理解) SVM就是解决线性分类问题,简单来说能被一个超平面分开的数据,就是线性可分的。因为线性分类问题,对二维数据来说,一条直线能分开两类数据,而直线是线性;对三维数据来说,一个平面也能把数据分开两边。但是如果是非线性的情况,那么分开数据的就是曲线和曲面了。
(概念理解) 在分类问题中给定输入数据和学习目标(即二维数据X和Y): X = { X 1 , . . . , X N } , Y = { y 1 , . . . , y N } X=\{X_1,...,X_N\},Y=\{y_1,...,y_N\} X={ X1,...,XN},Y={ y1,...,yN} ,其中输入数据的每个样本都包含多个特征并由此构成特征空间(feature space): X = { X 1 , . . . , X N } X=\{X_1,...,X_N\} X={ X1,...,XN} ,而学习目标为二元变量 y ∈ { − 1 , 1 } y\in\{-1,1\} y∈{ −1,1}(将二维样本 ( X , Y ) (X,Y) (X,Y)对应分为两类),y=-1表示负类(negative class)和y=1正类(positive class)。
读到这里,可能会有些疑问:为什么y∈{−1,1},y只能是-1,和1吗?不能是y =0表示反例,y=10表示正例,或y=-5表示反例,y=5表示正例吗?答案是:当然可以。记住,y 只是一个label ,标注为{-1,1}只是为了描述和求解方便
定义: 若输入数据 X X X所在的特征空间 x x x 存在作为决策边界(decision boundary)的超平面可以将学习目标按正类(黑圈)和负类(白圈)分开,并使任意样本的点到平面距离大于等于1(最大间隔):
- decision boundary : w T x + b = 0 w^Tx+b=0 wTx+b=0
- point to plane distance: y i ( w T x + b ) ≥ 1 y_i(w^Tx+b)\ge1 yi(wTx+b)≥1
则称该分类问题具有线性可分性,参数w,b分别为超平面的法向量和截距。
满足该条件的决策边界实际上构造了2个平行的超平面作为间隔边界以判别样本的分类:
w T X + b ≥ + 1 ⇒ y = + 1 ( 类 别 = 正 类 ) w T X + b ≤ − 1 ⇒ y = − 1 ( 类 别 = 负 类 ) (1) w^TX+b\ge+1\Rightarrow y=+1(类别=正类)\\ w^TX+b\le-1\Rightarrow y=-1(类别=负类)\tag{1} wTX+b≥+1⇒y=+1(类别=正类)wTX+b≤−1⇒y=−1(类别=负类)(1)
所有在上间隔边界上方的样本属于正类,在下间隔边界下方的样本属于负类。两个间隔边界的距离被定义为边距(margin),位于间隔边界上的正类和负类样本为支持向量(support vector)。
解释: 假设超平面为 f ( x ) f(x) f(x),在进行分类时,只需要将新的数据点x代入到f(x)中,如果大于0则判别为正类,如果小于0,判别成负类,但实际上能将数据按正类和负类分开的超平面有很多个,如何能确定哪个超平面最好?换句话说:哪个超平面才是最适合分开将数据分开成正负类的,且出错的概率是最小的呢?这个判定的标准就是我们要找到一个超平面离它两边的数据的距离是最大的, 因此,筛选超平面的问题就变成寻找有最大距离的超平面。
间隔
本来不想引入这么多概念的,但是如果你去查阅其他资料,你会看到别人解释SVM是有相当多的专业名称,而且不理解这些名词概念,对你理解SVM是有很大影响的,所以为了与教材保持一致,还是解释一下这些名词。
刚才说到筛选超平面判定的标准是超平面离它两边的数据的距离是最大的。这里的距离,在SVM中有另一种叫法(仅仅是叫法,人为规定的名称)叫做:几何间隔。
几何间隔
假设超平面为 f ( x ) = w T x + b f(x)=w^Tx+b f(x)=wTx+b, y y y代表正负类别,那么几何间隔(geometrical margin)的定义,用 r ′ r' r′表示是:
r ′ = ∣ w T x + b ∣ ∣ ∣ w ∣ ∣ = f ( x ) ∣ ∣ w ∣ ∣ (2) r'=\frac{|w^Tx+b|}{||w||}=\frac{f(x)}{||w||}\tag{2} r′=∣∣w∣∣∣wTx+b∣=∣∣w∣∣f(x)(2)
我们都知道, w T x + b ∣ ∣ w ∣ ∣ \frac{w^Tx+b}{||w||} ∣∣w∣∣wTx+b可以表示点x到平面f(x)的距离。y表示分类的类别,而y与f(x)永远都是同号,那么我们就可以将两者相乘变成绝对值,这就与点x到平面f(x)的距离是一样的,就得到了几何间隔的另一种表示方法,即: r ′ = y ( w T x + b ) ∣ ∣ w ∣ ∣ = y f ( x ) ∣ ∣ w ∣ ∣ (2-1) r'=\frac{y(w^Tx+b)}{||w||}=\frac{yf(x)}{||w||}\tag{2-1} r′=∣∣w∣∣y(wTx+b)=∣∣w∣∣yf(x)(2-1)
(推理证明) 我们知道超平面的函数定义为 f ( x ) = w T x + b f(x)=w^Tx+b f(x)=wTx+b,如果f(x)=0,那么x就是落在超平面上的点,而f(x)大于0的点,就是对应y=1正类的数据点;f(x)小于0的点,就是对应y=-1负类的数据点。
根据点到面的距离公式,我们可以计算出空间中任意样本点 x x x到超平面的距离为: r = ∣ w T x + b ∣ ∣ ∣ w ∣ ∣ r=\frac{|w^Tx+b|}{||w||} r=∣∣w∣∣∣wTx+b∣
根据图,利用平面几何知识,就有(式1): x = x 0 + r w ∣ ∣ w ∣ ∣ x=x_0+r\frac{w}{||w||} x=x0+r∣∣w∣∣w,其中 w ∣ ∣ w ∣ ∣ \frac{w}{||w||} ∣∣w∣∣w是单位向量, ∣ ∣ w ∣ ∣ ||w|| ∣∣w∣∣表示法向量w的长度。
又因为 x 0 x_0 x0在超平面上,即 w T x 0 + b = 0 w^Tx_0+b=0 wTx0+b=0,代入(式1)化简:
同样能得到(式2): r = w T x + b ∣ ∣ w ∣ ∣ r=\frac{w^Tx+b}{||w||} r=∣∣w∣∣wTx+b,因为距离一定是正值,因此还需要加上绝对值,同样能得到 r = ∣ w T x + b ∣ ∣ ∣ w ∣ ∣ r=\frac{|w^Tx+b|}{||w||} r=∣∣w∣∣∣wTx+b∣。下面就到了找超平面的最大距离!!!
最大间隔
在上面的定义(1)中,有:
w T x i + b ≥ 0 时 , 对 应 y i 为 正 类 , ⇒ y i = + 1 w T x i + b ≤ 0 时 , 对 应 y i 为 负 类 , ⇒ y i = − 1 w^Tx_i+b\ge0时,对应y_i为正类,\Rightarrow y_i=+1\\ w^Tx_i+b\le0时,对应y_i为负类,\Rightarrow y_i=-1 wTxi+b≥0时,对应yi为正类,⇒yi=+1wTxi+b≤0时,对应yi为负类,⇒yi=−1
因此,SVM的目标是获取最大分类间隔,即超平面离它两边的数据最近点的距离d:
max d s . t . y i ( w T x i + b ) ≥ 0 , i = 1 , . . . , n (3) \max d\\ s.t. y_i(w^Tx_i+b)\ge0,i=1,...,n\tag{3} maxds.t.yi(wTxi+b)≥0,i=1,...,n(3)
上面介绍的几何间隔 r ′ r' r′是绝对值,为正数;而 ( w T x i + b ) (w^Tx_i+b) (wTxi+b)与 y i y_i yi,代表类别,有正负号,但是它们又刚好同号,构造条件以x和y为约束,因此将两者相乘,显然得到 y i ( w T x i + b ) ≥ 0 y_i(w^Tx_i+b)\ge0 yi(wTxi+b)≥0恒成立。距离d就是我们上面所提到的单侧最近样本点到超平面的距离 r = ∣ w T x + b ∣ ∣ ∣ w ∣ ∣ r=\frac{|w^Tx+b|}{||w||} r=∣∣w∣∣∣wTx+b∣的两倍(双侧),这其实就是求几何间隔的最大值。即:
d = 2 r = 2 ∗ min w , b , x i ∣ w T x i + b ∣ ∣ ∣ w ∣ ∣ = 2 ∗ min w , b , x i , y i y i ( w T x i + b ) ∣ ∣ w ∣ ∣ , ( i = 1 , . . . , n ) (3-1) d=2r=2*\min_{w,b,x_i}\frac{|w^Tx_i+b|}{||w||}=2*\min_{w,b,x_i,y_i}\frac{y_i(w^Tx_i+b)}{||w||},(i=1,...,n)\tag{3-1} d=2r=2∗w,b,ximin∣∣w∣∣∣wTxi+b∣=2∗w,b,xi,yimin∣∣w∣∣yi(wTxi+b),(i=1,...,n)(3-1)
于是,SVM的目标就变为找到一组合适的参数(w,b),使得(式4):
max w , b 1 ∣ ∣ w ∣ ∣ 2 ∗ min x i , y i y i ( w T x i + b ) s . t . y i ( w T x i + b ) ≥ 0 , i = 1 , . . . , n (4) \max_{w,b}\frac{1}{||w||}2*\min_{x_i,y_i}y_i(w^Tx_i+b)\\ s.t. y_i(w^Tx_i+b)\ge0,i=1,...,n\tag{4} w,bmax∣∣w∣∣12∗xi,