即便使用率已经不高了,但是面试时手推SVM依然是传统。
百度三面时就问了SVM所以还是要手撕
SVM三宝: 间隔,对偶,核技巧
文章目录
分类算法 : 硬间隔;软间隔;kernel
hard-margin SVM
模型定义
超平面
W
t
x
+
b
W^t x + b
Wtx+b
判别模型
f
(
x
)
=
s
i
g
n
(
W
t
+
b
)
f(x) = sign(W^t + b)
f(x)=sign(Wt+b)
无限条线,如何选取使得测试误差最小(而非训练误差)
y
i
=
1
或
−
1
y_i = 1或 -1
yi=1或−1
最大间隔分类器
m
a
x
⋅
m
a
r
g
i
n
(
W
i
b
)
max · margin(W_i b)
max⋅margin(Wib)
y
i
(
W
t
x
i
+
b
)
>
0
y_i (W^t x_i + b) > 0
yi(Wtxi+b)>0即二者同号
margin定义为离超平面最近的点的距离
margin(Wi b) = min distance(Wi b xi)
点到直线距离distance:
所以我们得到margin为margin(Wi b) = min (1/||w||) | Wt xi + b|
想要最大的margin
max min(1/||w||) || Wt xi + b||
在 yi(Wt x + b) > 0的限制下
(1)右侧绝对值和yi同号,因而去掉绝对值,加入yi
(2) W 与x不相关,可以挪到min外面(里面这个min是固定W后从x里找min)
(min()后面的部分是数据点,常量,可以缩放,实际上就是找最大的1/w)
min()后面部分总存在一个正数最小值r ,因而用正数最小值替代min()后面y和x的式子,并且我们缩放使得r=1,约束就转化为:
max(w,b) 1/||w||
min(yi (WT x + b) = 1)
其中第二个式子可以转化为yi(Wx + b) >=1
因而最终变为
1)min(w,b)
1
/
2
∗
W
T
W
1/2*W^T W
1/2∗WTW
2)
y
i
(
W
T
X
i
+
b
)
>
=
1
y_i (W^T X_i +b) >= 1
yi(WTXi+b)>=1 (对所有i=1…N)
变为凸优化问题,共N个约束,二次的目标函数
稍微变换一下形式
1)
m
i
n
(
w
,
b
)
1
/
2
∗
W
T
W
min(w,b) 1/2*W^T W
min(w,b)1/2∗WTW
2)
1
−
y
i
(
W
T
X
i
+
b
)
<
=
0
1-y_i (W^T X_i +b) <= 0
1−yi(WTXi+b)<=0(对所有N个yi)
下面开始求解
转化之前,对w,b是有约束的
第二个约束可以用拉格朗日乘子方程结合在一起,
转化为对wb的无约束的条件
λi >= 0
构造完拉格朗日乘子式之后,我们可以转化为对w和b的无约束
拉格朗日方程中,我们先看后半部分
有可能>0 也有可能<=0,我们分别看一下
-
1
−
y
i
(
W
T
X
i
+
b
)
1-y_i (W^T X_i +b)
1−yi(WTXi+b) >0
它的最大值是正无穷,λi可以取到正无穷,无意义 -
1
−
y
i
(
W
T
X
i
+
b
)
1-y_i (W^T X_i +b)
1−yi(WTXi+b) <= 0
最大值一定存在 m a x L = 1 / 2 ∗ W T W + 0 maxL = 1/2*W^T W + 0 maxL=1/2∗WTW+0
λ>0 , 后面部分有 >0 <=0两种情况,>0是最大值为无穷大,不存在
所以只讨论后面部分<=0的情况
则最大值为 λ = 0时的值即为 min(w,b) 1/ 2 * ||W||
上面两种情况合起来
上图中即得到原问题
对偶问题
max(λ) min(w,b) L(w,b,λ)
λ >=0
从逻辑上
min max(L) >= max min(L)
这是一个弱对偶关系
(想要一个二者相等的强对偶关系)
这里面上述等式是强对偶关系,二者相等(凸二次的)
因而现在要求
max(λ) min(w,b) L(w,b,λ)
λ >=0
先求后半部分 min(w,b) L(w,b,λ)
先对b求偏导,再对w求偏导,令其为0
再对w求偏导,令其为0
yi是实数 x是向量 (考虑拆解转置)
x
j
T
x
i
=
=
x
i
T
x
j
x_j^T x_i == x_i^T x_j
xjTxi==xiTxj
得到上述式子的简化
因而对偶问题简化为:
KKT条件
原问题与对偶问题具有强对偶关系的 充要条件 满足KKT条件
本问题中的KKT条件为
slackness complementory互补松弛条件(KKT第二行)
支持向量上的点,λ 有值,非支持向量上的点λ 都为0
KKT第一行第一个求导得到W
现在求b*
假设存在一个k,有这么一个样本xk yk满足
1-yk (WT Xk + b) = 0
因为yk = ± 1
左右两边都乘以yk
(水友说具体的k带入支持向量上面的点就行)
超平面即为 sign(W x + b)
soft-margin SVM
kernel SVM
1.1 线性可分:
二维面上两类点可被直线完全分开(高维则是超平面)
1.2超平面,最大间隔超平面
wx+b=0
二维里就是a1 x1+a2x2+ b=0
- 两类样本分别在超平面两边
- 两侧距离超平面最近的样本点到超平面距离最大化
两侧距离超平面最近的样本点,就是支持向量
SVM要最大化margin
1.4SVM的最优化问题
Wx+b=0
由于两边到s
svm距离分别为d,因而红蓝两类点到svm距离分别大于d或者小于-d
x是变量,||W|| x d是常量
因而可以放进w和b里面进行缩放
现在是将x看做变量,找到x的约束条件
得到最优化的如下问题:
2对偶问题
2.1约束条件下目标函数如何求解最优化
上述问题可以使用拉格朗日子乘法,将带有约束的优化问题转化为拉格朗日函数的无约束优化问题。
其中拉格朗日乘子λ>0
2.2 对偶问题
变成了无约束的条件。
2.3 对偶问题
最大里最小的,至少比 最小里的最大的。这是个弱对偶关系
强对偶关系时二者取等号
满足如下三点时强对偶性是成立的。
2.3 KKT约束条件
原问题具有强对偶性的充分必要条件是具有KKT条件