作者:張張張張
github地址:https://github.com/zhanghekai
【转载请注明出处,谢谢!】
【机器学习系列】之SVM硬间隔和软间隔
【机器学习系列】之SVM核函数和SMO算法
【机器学习系列】之支持向量回归SVR
【机器学习系列】之sklearn实现SVM代码
SVM概述
假定给出训练样本集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x m , y m ) } , y i ∈ { − 1 , + 1 } D=\{(x_1,y_1),(x_2,y_2),...,(x_m,y_m)\},y_i \in \{-1,+1\} D={
(x1,y1),(x2,y2),...,(xm,ym)},yi∈{
−1,+1},为二分类问题,其中y为分类标签,有两类分别为+1和-1。分类学习最基本的想法就是基于训练集D在样本空间中找到一个划分超平,将不同类别的样本分开,但能将训练样本分开的划分超平面可能有很多,我们应该找哪一条呢?如下图所示,图中红色的那个超平面是最好的,因为这个划分超平面所产生的分类结果是最鲁棒的,对未见示例的泛化能力最强。支持向量机SVM所要解决的事情就是找到这样一个鲁棒性最好的超平面。
SVM算法的主要优点:
- 解决高维特征的分类问题和回归问题很有效,在特征维度大于样本数时依然有很好的效果。
- 仅仅使用一部分支持向量来做超平面的决策无需依赖全部数据。
- 有大量的核函数可以使用,从而可以很灵活的来解决各种非线性的分类回归问题。
- 样本量不是海量数据的时候,分类准确率高,泛化能力强。
SVM算法的主要缺点:
- 如果特征维度远远大于样本数,则SVM表现一般。
- SVM在样本量非常大,核函数映射维度非常高时,计算量过大,不太适合使用。
- 非线性问题的核函数的选择没有通用标准,难以选择一个合适的核函数。
- SVM对缺失数据敏感。
一、硬间隔SVM基本型
1.超平面定义
在样本空间中,划分的超平面可用如下线性方程来表述:
w T x + b = 0 ( 1 ) w^Tx+b=0 \quad\quad\quad\quad(1) wTx+b=0(1)
其中 x = ( x 1 ; x 2 ; . . . ; x d ) x=(x_1;x_2;...;x_d) x=(x1;x2;...;xd)为样本点在样本空间中的坐标, x i x_i xi代表样本点在每一维度上坐标点的值; w = ( w 1 ; w 2 ; . . . ; w d ) w=(w_1;w_2;...;w_d) w=(w1;w2;...;wd)为法向量,决定了超平面的方向,x是几维的,就有几个w;b为位移项,决定了超平面与原点之间的距离。显然,划分超平面可被法向量w和位移b确定,记超平面为(w,b)。
2.点到直线间的距离
样本空间中任意点x到超平面(w,b)的距离可写为:
r = ∣ w T + b ∣ ∣ ∣ w ∣ ∣ ( 2 ) r = \frac{|w^T+b|}{||w||}\quad\quad\quad\quad(2) r=∣∣w∣∣∣wT+b∣(2)
拓展:
-
L2范数: ∣ ∣ w ∣ ∣ = ∑ i = 1 k ∣ w i ∣ 2 ||w|| = \sqrt {\sum_{i=1}^{k}|w_i|^2} ∣∣w∣∣=∑i=1k∣wi∣2
-
二维空间点到直线的距离: d = ∣ A x + B y + c ∣ A 2 + B 2 d = \frac{|Ax+By+c|}{\sqrt{A^2+B^2}} d=A2+B2∣Ax+By+c∣,由此可以类比到多维空间上点到直线的距离。
3.模型假设
假设超平面(w,b)能将训练样本正确分类,即对于二分类问题,训练样本上的点均为x坐标已知,对应的y分类已知:若 y i = + 1 y_i=+1 yi=+1,则有 w T x i + b > 0 w^Tx_i+b>0 wTxi+b>0;若 y i = − 1 y_i=-1 yi=−1,则有 w T x i + b < 0 w^Tx_i+b<0 wTxi+b<0,令:
{ w T x i + b ≥ + 1 , y i = + 1 w T x i + b ≤ − 1 , y i = − 1 ( 3 ) \begin{cases} w^Tx_i+b \geq +1, & y_i = +1 \\ \\ w^Tx_i+b \leq -1, & y_i=-1 \end{cases}\quad\quad\quad\quad(3) ⎩⎪⎨⎪⎧wTxi+b≥+1,wTxi+b≤−1,yi=+1yi=−1(3)
注释:
- "硬间隔SVM"模型的建立,是基于数据为“线性可分”的,所谓线性可分指的是:不含噪音,可将训练数据完美分成两类。而硬间隔SVM模型就是基于这个假设构建的,即:假设正确分类的样本点在各自支持向量的两边。
- ∣ w T x + b ∣ |w^Tx+b| ∣wTx+b∣表示点x到超平面的相对距离,通过观察 w T x + b w^Tx+b wTx+b和 y y y是否同号,判断分类是否正确。
- SVM的模型是让所有点到超平面的距离大于一定的距离,即所有分类点要在各自类别的支持向量两边。一般我们都取这个距离为1
4.间隔与支持向量
如上图所示,距离超平面最近的这几个训练样本点使公式(3)的等号成立,它们被称为“支持向量(support vector)”,两个异类支持向量到超平面的距离之和为公式(4)所示,它被称为“间隔(margin)”。
γ = 2 ∣ ∣ w ∣ ∣ ( 4 ) \gamma = \frac{2}{||w||}\quad\quad\quad(4) γ=∣∣w∣∣2(4)
注释:
- 函数间隔 y ( w T x + b ) y(w^T x+b) y(wTx+b)对于训练集中m个样本点对应的m个函数间隔的最小值,就是整个训练集的函数间隔。找到训练样本中函数间隔最小的那个样本,并且要让它的函数间隔最大!这就是SVM的目标函数。
- 间隔貌似仅与 w w w有关,但事实上 b b b通过约束隐式地影响着 w w w的取值,进而对间隔产生影响。
欲找到具有“最大间隔(maximum margin)”的划分超平面,即:找到满足(3)式中约束的参数 w w w和 b b b,使得 γ \gamma γ最大,有:
m a x ⎵ w , b 2 ∣ ∣ w ∣ ∣ s . t . y i ( w T x i + b ) ≥ 1 , i = 1 , 2 , . . . , m \underbrace{max}_{w,b}\frac{2}{||w||}\\ s.t. \quad y_i(w^Tx_i+b)\geq 1,\quad i=1,2,...,m w,b
max∣∣w∣∣2s.t.yi(wTxi+b)≥1,i=1,2,...,m
- 为了最大化间隔,仅需最大化 ∣ ∣ w ∣ ∣ − 1 ||w||^{-1} ∣∣w∣∣−1,这等价于最小化 ∣ ∣ w ∣ ∣ 2 ||w||^2 ∣∣w∣∣2,于是“支持向量机(Support Vector Machine)”的基本型如下式所示:
{ m i n ⎵ w , b 1 2 ∣ ∣ w ∣ ∣ 2 s . t . y i ( w T x i + b ) ≥ 1 , i = 1 , 2 , . . . , m ( 5 ) \begin{cases} \underbrace{min}_{w,b}\frac{1}{2}||w||^2\\ \\ s.t. \quad y_i(w^Tx_i+b)\geq 1,\quad i=1,2,...,m \end{cases}\quad\quad\quad(5) ⎩⎪⎪⎪⎨⎪⎪⎪⎧w,b min21∣∣w∣∣2s.t.yi(wTxi+b)≥1,i=1,2,...,m(5)
5.例题,加深理解
目前无需纠结解法,只需要理解SVM公式的使用,具体解法我们会在下一节中讲述。
已知一个如下图所示的训练数据集,其正例点是 x 1 = ( 3 , 3 ) T x_1=(3,3)^T x1=(3,3)T, x 2 = ( 4 , 3 ) T x_2=(4,3)^T x2=(4,3)T,负例点是 x 3 = ( 1 , 1 ) T x_3=(1,1)^T x3=(1,1)T,试列出求最大间隔分离超平面的公式。
解:根据训练数据集构造约束最优化问题:
{ m i n ⎵ w , b 1 2 ( w 1 2 + w 2 2 ) s . t . 3 w 1 + 3 w 2 + b ≥ 1 4 w 1 + 3 w 2 + b ≥ 1 − w 1 − w 2 − b ≥ 1 \begin{cases}\underbrace{min}_{w,b} \frac{1}{2}(w_1^2+w_2^2)\\ \\ s.t.\quad 3w_1+3w_2+b \geq1\\ \quad\quad \quad 4w_1+3w_2+b \geq 1\\ \quad\quad\quad -w_1-w_2-b \geq 1 \end{cases} ⎩⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎧w,b
min21(w12+w22)s.t.3w1+3w2+b≥14w1+3w2+b≥1−w1−w2−b≥1
注意:
- x是几维,就有几个w。
- xi代表样本点在每一维度上坐标点的值。
二、硬间隔SVM对偶问题
1.先用拉格朗日乘子法
我们可以通过拉格朗日乘子法将我们的优化目标公式(5)转换为无约束的优化函数,对公式(5)的每条约束添加拉格朗日乘子 α i ≥ 0 \alpha_i \geq 0 αi≥0,则该问题的拉格朗日函数可写为:
L ( w , b , α ) = 1 2 ∣ ∣ w 2 ∣ ∣ + ∑ i = 1 m α i ( 1 − y i ( w T x i + b ) ) ( 6 ) L(w,b,\alpha)=\frac{1}{2}||w^2||+\sum_{i=1}^{m}\alpha_i(1-y_i(w^Tx_i+b))\quad\quad\quad(6) L(w,b,α)=21∣∣w2∣∣+i=1∑mαi(1−yi(wTxi+b))(6)
其中 α = ( α 1 , α 2 , . . . , α m ) \alpha = (\alpha_1,\alpha_2,...,\alpha_m) α=(α1,α2,...,αm),这样可以通过每个样本点的 α \alpha α取值,知道该样本点相对于支持向量的位置。
拓展:拉格朗日乘子法——不等式约束优化
给定不等式约束问题:
m i n ⎵ x f ( x ) s . t . h ( x ) = 0 g ( x ) ≤ 0 \underbrace{min}_{x}f(x)\\ s.t.\quad h(x)=0\\ \quad g(x)\leq 0