本文章是学习笔记,内容可能会有很多漏洞,如果有不正确的地方欢迎指正
一、SVM简述
1、概念
在机器学习领域,支持向量机SVM(Support Vector Machine)是一个有监督的学习模 型,通常用来进行模式识别、分类(异常值检测)以及回归分析。
SVM可分为3种。
(1)数据线性可分:硬件隔SVM
(2)数据近似线性可分:软间隔SVM
(3)数据不可线性分:核技巧
2、图像演绎例子(Hard Margin)
通过对决策边界的平移来决定,保证决策边界在两个刚刚碰到数据集的的中间位置
对决策边界的概述
分别归为+1类和-1类
如上述图中的显示,我们需要找到一个阈值,为了保证鲁棒性更强,选择阈值的要求是需要找到标签的中间位置(一个标签到中间位置的距离要保证最大,同时是两个标签之间距离和的最小值),margin表示的是,一个标签到阈值的距离。
3、图像演绎例子(Soft Margin)
这种方式可以保证有一些如上图那种错误(两个不同分类的标签相聚的太近)
对于一维的数据可以使用上面的图像来解释(点),二维的数据用一条线,三维的数据用一个面,更高维的可以使用超平面
4、计算公式(Hard Margin)
通过下图的几个式子可以将点到超平面的最小距离计算出来
其中红方框括住的地方是表示,一个标签到阈值的距离的二倍
Hard Margin是在保证所有的分类都正确的情况下,求其最大值
划分超平面可以定义为一个线性方程:
ω
T
x
+
=
0
\omega^Tx+=0
ωTx+=0,其中:
w = { w 1 ; w 2 ; . . . ; w d } 是一个法向量,决定了超平面的方向, d 是特征值的个数
X 为训练样本
b 为位移项,决定了超平面与原点之间的距离
d
(
X
T
)
=
∑
i
=
1
l
y
i
α
i
X
i
X
T
+
b
0
d(X^T)=\sum\limits_{i = 1}^ly_i{\alpha_i}X_iX^T+b_0
d(XT)=i=1∑lyiαiXiXT+b0
此方程就代表了边际最大化的划分超平面。
l
l
l 是支持向量点的个数,因为大部分的点并不是支持向量点,只有个别在边际超平面上的点才是支持向量点。那么我们就只对属于支持向量点的进行求和;
X
i
X_i
Xi 为支持向量点的特征值;
y
i
y_i
yi 是支持向量点 X i X_i Xi的类别标记(class label),比如+1还是-1;
X
T
X^T
XT 是要测试的实例,想知道它应该属于哪一类,把它带入该方程
α
i
\alpha_i
αi 和
b
0
b_0
b0 都是单一数值型参数,由以上提到的最优算法得出,
α
i
\alpha_i
αi 是拉格朗日乘数。
每当有新的测试样本
X
X
X,将它带入该方程,看看该方程的值是正还是负,根据符号进行归类。
最大值和最小值之间的关系是取一个倒数
二、Hard Margin
1、拉格朗日乘子法
梯度是要垂直于等高线。
1.1、等高线的法线
等高线上任意一点处的斜率:
d
y
d
x
=
δ
f
δ
x
δ
f
δ
y
\frac{dy}{dx}=\frac{\delta f}{\delta x}\frac{\delta f}{\delta y}
dxdy=δxδfδyδf,该点对应的法线方向为斜率的负倒数即
−
1
d
y
d
x
=
d
y
d
x
=
δ
f
δ
x
/
δ
f
δ
y
=
t
a
n
θ
-\frac{1}{\frac{dy}{dx}}=\frac{dy}{dx}=\frac{\delta f}{\delta x}/\frac{\delta f}{\delta y}=tan\theta
−dxdy1=dxdy=δxδf/δyδf=tanθ,其中
θ
\theta
θ是法线和X轴的夹角,如果梯度的方向和等高线的法线方向一致,就证明了垂直关系。
1.2、梯度向量
z
=
f
(
x
,
y
)
z=f(x,y)
z=f(x,y)的梯度向量为
(
δ
f
δ
x
,
δ
f
δ
y
)
(\frac{\delta f}{\delta x},\frac{\delta f}{\delta y})
(δxδf,δyδf),设该向量和X轴的夹角大小为
γ
\gamma
γ,则夹角的正切值为
t
a
n
γ
=
δ
f
δ
y
/
δ
f
δ
x
=
t
a
n
θ
tan\gamma=\frac{\delta f}{\delta y}/\frac{\delta f}{\delta x}=tan\theta
tanγ=δyδf/δxδf=tanθ
所以说名梯度向量的方向和等高线的法线方向是一样的,说明梯度方向和等高线垂直!
1.3、等式的约束
∇
f
=
λ
∇
g
\nabla f=\lambda\nabla g
∇f=λ∇g其中
∇
f
\nabla f
∇f表示函数的梯度 ,
∇
g
\nabla g
∇g表示约束的梯度。
(1)在只含有一个约束条件下时,我们可以列出一下图片中的式子进行求解
(2)当含有多个约束条件时(下面的图,是一个多约束的图像)
这个图不仅仅要满足蓝色曲线的约束,还需要满足直线的约束,到原点的距离最小,这种情况下得出新的公式
1.4、不等式的约束
(1)第一种情况
在这种情况下,因为这个约束不起作用,最小值点还是原点,约束等于没有,所以我们用
∇
f
=
0
⇒
(
x
,
y
)
=
(
0
,
0
)
l
\nabla f=0 \Rightarrow(x,y)=(0,0)l
∇f=0⇒(x,y)=(0,0)l来表示这种情况(相当于前面公式中
μ
=
0
\mu=0
μ=0)
(2)第二种情况
不等式的约束和等式的约束,可以进行相似的求法,再通过下图的式子求解就可以了
函数的梯度:约束可行的时候,那一定是指向可行域内部的,因为最小值在可行域的外部,如果要指向可行域的外部时,就是指向最小值的方向,那么约束就会变的没有作用。
约束的梯度:是指向可行域外部的,因为梯度指向最陡的上升方向,这里h是要求小于0 的,如下图中的,约束的可行域要指向外部
μ
>
=
0
\mu>=0
μ>=0的原因是,因为约束和函数的梯度是相反的,当相加为0是,必须要有
μ
>
=
0
\mu>=0
μ>=0
1.5、KKT条件
根据上面讲述的例子,我们在这里直接套入
∇
f
+
μ
∇
h
=
0
\nabla f+\mu\nabla h=0
∇f+μ∇h=0 公式,并使用图中给出的条件,因为梯度相反,所以
μ
>
=
0
\mu>=0
μ>=0。这里的最后一个条件,体现
h
j
=
0
h_j=0
hj=0或
h
j
<
0
h_j<0
hj<0这两种情况。如果当
h
j
<
0
h_j<0
hj<0,在这时,表示
μ
=
0
\mu=0
μ=0 约束就没有用了,就取在可行域内,不能出现这种情况,所以有了最后的那一种条件。
2、对偶问题
因为在这个条件中,只包含了不等式的约束,所以就要求
a
i
a_i
ai是一定大于或等于零的,
a
i
a_i
ai后面的式子一定是小于等于0的,这样才满足,潭门的乘积等于0的条件。这样就将含有约束的为问题转化成了没有约束的问题。
这里面红方框的部分表示,求
α
\alpha
α为一个值时,拉格朗日的值为最大。求
ω
\omega
ω和
b
b
b为一个值时,拉格朗日的值为最小。(因为在拉格朗日的式子中,后面的一部分乘积是小于等于0的,所以当拉格朗日的式子为最大时,后面的应为0,得出
α
i
\alpha_i
αi的值。当拉格朗日的式子为最小时,后面的式子不为0)
先对一个函数取最大,在所有最大的取最小,一定大于等于对一个函数中取最小,在所有的最小中取一个最大的,这叫做弱作用关系。
同理可知,当上述的情况变成等于时,就成为强作用关系。我们这里用到的式子是强作用关系,所以在换顺序后是对结果没有影响的。
证明弱作用关系
通过将一个有约束的问题转化成无约束的问题,通过强作用关系,转化成对偶问题,最后在进行求导
三、Soft Margin
Soft Margin与Hard Margin不同的是,这个允许有一些错误,Hard Margin对异常值过于的敏感。
红色的方框中是我们的约束,就是式子中的z,C为无穷大时,要想保证式子是最小值,那么后面的都要为0,当C的值有限时,式子前面的一部分的最小值,不一定可以代表整个式子的最小值,这是就需要后面式子起作用了。
分类的不同,会导致损失的不同。详细的内容在下图。分类正确的都是趋近于0,分类错误都是有一个损失。
最后转化成这个样子
四、参考
https://www.bilibili.com/video/BV1D64y1f7r6?p=5