不信邪,决定挑战下自己的能力,努力弄懂SVM
因为SVM的内容太多,求解较为复杂,分为几个部分来写,分步来搞定
第一个部分主要是介绍SVM的算法核心思想,再根据最简单的线性可分的数据集推导出原问题。
以下内容都是自己一个一个字码出来,图都是自己徒手画出来的,请尊重劳动成果。
1-1 SVM的简介
SVM(Support vector machine)中文名为支撑向量机,可以用于解决分类问题,也可以解决回归问题,采用核技术可以解决非线性问题,适用于小样本和高维特征。
核心思想在于最大化分类间隔,以提升分类器的泛化性能。
解决线性可分的SVM叫做Hard Margin SVM
解决非线性可分的SVM叫做Soft Margin SVM
对于SVM的具体算法的推导从解决最简单的问题开始:对线性可分的数据集进行分类,即推导Hard Margin SVM
1-2 线性分类器
对于线性可分的数据集,比如
比如这样一个样本数据是线性可分的,同时,用于分割样本的直线有无数条,所以这样的问题由称之为不适定问题。
但是不同的决策边界对应的泛化能力是不同的,明显我们会认为,直线1比直线2,在分类时的泛化能力更好。
这是因为,直线1不仅对所有的样本进行了分类,而且离两个类的样本尽可能的远。这就是SVM的核心思想,。
1-3 SVM中的名词解释
支撑向量
SVM的核心思想是最大化分离间隔,关键是远离那些靠近决策边界的点。
那些距离决策边界最近的样本,称为支撑向量。
图中被加深的两个向量就是支撑向量,也就是距离决策边界最近的向量
分类间隔(margin)
支撑向量定义了一个边界区域,这个边界区域的距离叫做分类间隔(margin),我们要找的决策边界就是位于这个区域中间的那根线。
通过示意图可以看出,决策边界到支撑向量之间的距离
d=21margin
SVM要做的就是最大化d(即支撑向量到决策边界的距离),其实也是最大化margin,所以在吴恩达老师的机器学习课程中也将SVM称之为最大间隔分类器。
1-4 Hard Margin SVM 原问题推导
根据上面的过程,我们已经知道,要找的分类边界的要满足2个要求:
要求1:分类边界要保证样本正确分类
要求2:分类边界是距离支撑向量最远的直线,也就是margin或者d最大的直线
理解好两个要求的几何含义后,我们接下来要做的就是将几何含义翻译成数学表达,写出SVM要求解的原问题。
先讲解两个补充知识:
- 超平面的表达式的小细节
- 在已知决策边界的前提下,我们如何进行样本的类别预测
超平面的表达式的小细节
在线性可分的问题中,我们的决策边界是一个超平面,所以决策边界的表达式是
ωTx+b=0,
其中
ω称为权重向量,b称为偏置项。
这个表达式存在一个小细节,也就是
如果将确定的
ω和b乘上一个系数k,即
kωTx+kb=0得到的还是同一个超平面,但是表达式不同的。
举个二维平面的例子,比如直线y=x+1与直线2y=2x+2,其实指的是同一条直线。
在这里我们先了解这样一个结论:
对于超平面的表达式,
ω和b乘上一个系数后,得到的仍是原来的超平面。
在已知决策边界的前提下,我们如何进行样本的类别预测呢?
在SVM问题中,我们将正样本用+1表示,负样本用-1表示,只需要将
x中的特征向量带入决策边界中,如果计算结果>0,则分为正样本,如果计算结果<0,则分为负样本。
即:
{ωTx+b≥0ωTx+b<0y=+1(正样本)y=−1(负样本)
要求2:让margin或者d最大
我们先将要求2翻译成数学语言。
既然要d最大,那我们就需要表示d的大小。
d是支撑向量到决策边界的距离,即点到直线的距离。
补充下点到直线的距离公式,以三维空间为例,
点(x0,y0,z0)到直线Ax+By+Cz+d=0的距离为:
d=A2+B2+C2
∣Ax0+By0+Cz0+d∣
这里{A,B,C}对应的是权重向量
ω,
d对应的是偏置项
由此我们可以推出更一般的情形下的距离表达:
分子是将点的坐标带入直线中的绝对值
分母是权重向量的膜
所以我们要求的d表示为:
d=∣∣w∣∣∣ωTx支撑向量+b∣
其中x为支撑向量的值
我们要做的就是
ω,bmaxd
要求1:保证样本正确分类
刚才我们算的d是支撑向量到决策边界的距离,如果想要保证所有样本都分类正确的话,则所有样本到决策边界的距离要大于d。
即:
∣∣w∣∣∣ωTx(i)+b∣⩾∣∣w∣∣∣ωTx支撑向量+b∣=di=1,2,...m
我们如果分成正负分样本进行表达的话,则可以写为:
{∣∣w∣∣ωTx(i)+b⩾d∣∣w∣∣ωTx(i)+b⩽−d∀y(i)=+1∀y(i)=−1
同时我们也我们就找到了上下两条边界线的表达式:
上边界:
∣∣w∣∣ωTx+b=d
下边界:
∣∣w∣∣ωTx+b=−d
上下边界的表达式可以这样理解,我们之前是根据点到直线的距离,表达出支撑向量到决策边界的距离d。如果我们把d看作是已知量,就可以求出到决策边界距离为d的所有点的表达式,这些点构成的就是上下边界。
为了看起来更方便,我们将上面的不等式左右同除以d,得到
{∣∣w∣∣dωTx(i)+b⩾1∣∣w∣∣dωTx(i)+b⩽−1∀y(i)=+1∀y(i)=−1i=1,2,...mi=1,2,...m
于是,上下两条边界线的表达式也可以写成下面的形式:
上边界:
∣∣w∣∣dωTx+b=1
下边界:
∣∣w∣∣dωTx+b=−1
实际上就是将原来的边界表达式同时除以d。
接下来的化简要用到前面说到的超平面表达式的小细节。
我们设
ωd=∣∣ω∣∣dω,
bd=∣∣ω∣∣db
也就是将我们原来假设决策边界时用到的参数
ω和
b除以
∣∣ω∣∣d,并分别用
ωd和
bd来表示。
你会发现,原来的决策边界表达式
ωTx+b=0和
ωdTx+bd=0其实表达的是用一个决策边界。而用
ωd,
bd分别代替
ω和
b的好处在于,刚才表达的上下边界就可以简写:
上边界:
ωdTx+bd=1
下边界:
ωdTx+bd=−1
此时支持向量机的关键的三个表达式的示意图为:
为了方便后续的书写,我们直接用
ω和
b代替上面的
ωb和
bd
根据上图我们就可以总结出要求一:保证样本正确分类的数学表达式。
{ωTx(i)+b ⩾1ωTx(i)+b⩽−1∀y(i)=+1∀y(i)=−1i=1,2,...mi=1,2,...m
因为正样本都在上边界的上面,负样本都在下边界的下面
接下来,我们将上面的两个式子合并成一个表达式
y(i)(ωTx(i)+b)⩾1i=1,2,...m
可以自己验证下,还是蛮简单的,这就是要求一的最终表达。
总结出Hard Margin SVM的原问题
我们先梳理下我们已知的内容。
Hard Margin SVM要满足2个要求
要求1:保证样本正确分类,对应的数学表达式为
y(i)(ωTx(i)+b)⩾1i=1,2,...m
要求2:让margin或者d最大,对应的数学表达式为
ω,bmaxd=ω,bmax∣∣w∣∣∣ωTx支撑向量+b∣
这个表达式还可以进一步简化。
简化过程:
在要求1的推导过程中,我们已经知道
上下边界的表达式
ωTx+b=±1
而支撑向量就在上下边界上,所以把支撑向量的值带入
ωTx+b中,等于
±1。也就是
∣ωTx支撑向量+b∣=1。
所以上式可以继续化简为
ω,bmax∣∣w∣∣1
求
ωmax∣∣w∣∣1也就是求
ωmin∣∣ω∣∣,为了方便我们之后计算的方便,我们求
ωmin2∣∣ω∣∣2
最终总结下Hard Margin SVM的原问题就是在保证样本正确分类的前提下,最大化边界距离。翻译成对应的数学语言就是
ωmin2∣∣ω∣∣2
s.t.y(i)(ωTx(i)+b)⩾1i=1,2,...m
我们会发现,这是一个带不等式约束的最小化问题,具体要如何求解,才能确定出
ω和
b呢?这就涉及到解决不等式约束的最值问题的解决方法:拉格朗日乘子法、拉格朗日对偶、KKT条件…
等我学懂了,继续写下去