SVM算法
博文类型: 学习向
背景: 本科阶段学完了knn与贝叶斯算法后,继而想学习更复杂一些的算法
目标: 了解svm算法的基本原理
目录
一、前期准备
- 一定的数学底子
二、正文
1.、支持向量机的定义
支持向量机(英语:Support Vector Machine,常简称为SVM)是一种监督式学习的方法
2、各种概念
1.线性可分支持向量机
(1)硬间隔最大
(2)硬间隔支持向量机
上图中有两个类别,我们可以用一个分界面100%区分两个类,同时这个分界面的周围存在一个范围(也就是虚线里的范围),这个范围内没有样本。那么我们就称这个是一个标准的线性可分的svm
2.线性支持向量机
(1)软间隔最大
(2)软间隔支持向量机
有时候一些样本不是线性可分的,或者是线性可分的但我们希望有些样本分的不是分的特别好(在虚线内有样品或者有些样品分错了如上图),那么我们称这个为软间隔的最大化
所谓的软间隔和硬间隔的区别,无非就是加了一个参数
ζ
\zeta
ζ
3.非线性支持向量机
核函数
分割面不是一条直线,上图就是非线性的,这里就需要用到核函数
如果样本特征是二维的那么分割面就是一条直线,样本特征是三维的那么分割面就是一个平面,样本特征是n维的那么分割面就是一个超平面
4.函数距离和几何距离
函数距离就是把样本点的值代入分割面方程式中得到的y的值
几何距离是样本点到分割面的距离,也就是把分割面方程式进行归一化后,将样本点 的值代入式子中所得的值
下面的讲的是线性可分的svm
3、如何确定分割面
如图,一个线性可分的样本集,存在无数条直线来把两个类区分开来,那么我们选取哪个分割面呢?
这里面就涉及一些数学公式,让我来从头理一理
怎么来判断一个分割面是好是坏?我们认为在所有的分割面中,距离一个分割面最近的样本点(如上图的d1,d2这里d1=d2,我们可以调节直线的平行位置来使得d1=d2,如果有其他的样本点的值也等于d1或者d2那么这些样本点也需要取出来)的距离比距离其他分割面最近的样本点的距离都要大,那么这个分割面就是最好的。这些取出来的样本点对这个分割面起到了支持的作用,我们称这些样本点为支持向量(图中的两个样本点就是支持向量)
好的!以上是感性的认识,接下来我们要理性的分析了。
1.基础数学回顾
先来回顾一下高中的数学知识:
y=kx+b
这是二维平面上的一条直线,斜-截式方程,这里的y,x,b都是标量
如果现在x变成了向量
x
⃗
\vec{x}
x,那么公式就变成了这个样子:
y
=
w
⃗
T
⋅
x
⃗
+
b
y=\vec{w}^T\cdot\vec{x}+b
y=wT⋅x+b -----(1)
这时候可能有人要问了T是什么呀,T是转置的意思,假设
x
⃗
\vec{x}
x有两个特征那么
x
⃗
\vec{x}
x Cannot read properties of undefined (reading 'type')
w
⃗
\vec{w}
wCannot read properties of undefined (reading 'type')因为矩阵的乘法的要求,则我们需要对
w
⃗
\vec{w}
w进行转置
直线的标准式:
Ax+By+C=0-----(2)
现有一点(
x
0
,
y
0
x_0,y_0
x0,y0),那么该点到直线的距离为d=
∣
A
x
0
+
B
y
0
+
C
∣
A
2
+
B
2
\frac{|Ax_0+By_0+C|}{\sqrt{A^2+B^2}}
A2+B2∣Ax0+By0+C∣,把分母的绝对值去掉,我们就可以区分该点是在直线的正半区还是负半区
我们把距离d的式子进行变形d=
A
A
2
+
B
2
x
0
+
B
A
2
+
B
2
y
0
+
C
\frac{A}{\sqrt{A^2+B^2}}x_0+\frac{B}{\sqrt{A^2+B^2}}y_0+C
A2+B2Ax0+A2+B2By0+C
这时候我们就可以认为
w
⃗
\vec{w}
wCannot read properties of undefined (reading 'type')
x
⃗
\vec{x}
x Cannot read properties of undefined (reading 'type')
式子就变成了(1)式。
2.分割面的求取
由1里面的数学式子我们可以求出每个样本点到分割面的距离,这时候式子已经归一化了
现在的们的目标函数是:Cannot read properties of undefined (reading 'type')Cannot read properties of undefined (reading 'type')(
w
⃗
j
T
⋅
x
i
⃗
+
b
j
\vec{w}_j^T\cdot\vec{x_i}+b_j
wjT⋅xi+bj)
这个式子的意思就是求最短距离里最长的那个,此时得到的参数w,b就是我们分割超平面的两个参数
以上是对感性认识的一个数学体现,可是这个是中看不中用,因为有无数条分割超平面,我们不可能遍历完,所以我们要用更加厉害的数学公式来弄一弄
(1)数据
训练数据集:
T
=
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
.
.
.
(
x
n
,
y
n
)
T={(x_1,y_1),(x_2,y_2)...(x_n,y_n)}
T=(x1,y1),(x2,y2)...(xn,yn)
其中x是样本特征向量集,y是类别-1,1。
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi)是一个样本点
(2)特征映射
假设一个样本有两个特征(a,b),那么他的一个映射可以为
ϕ
=
(
a
,
b
,
a
b
,
a
2
,
b
2
)
\phi=(a,b,ab,a^2,b^2)
ϕ=(a,b,ab,a2,b2)也可以是三次方等等
(3)目标函数推导
从前面的结果可以得到
y
(
x
)
=
w
T
ϕ
(
x
)
+
b
y(x)=w^T\phi(x)+b
y(x)=wTϕ(x)+b这个式子还没进行归一化
这时有
{
y
(
x
i
)
>
0
⇒
y
i
=
+
1
y
(
x
i
)
<
0
⇒
y
i
=
−
1
\left\{ \begin{array}{rcl} y(x_i)>0 \Rightarrow y_i=+1\\ y(x_i)<0 \Rightarrow y_i=-1 \end{array} \right.
{y(xi)>0⇒yi=+1y(xi)<0⇒yi=−1
则
y
i
⋅
y
(
x
i
)
>
0
y_i\cdot y(x_i)>0
yi⋅y(xi)>0
对w,b等比例缩放
y
i
⋅
y
(
x
i
)
∣
∣
w
∣
∣
\frac{y_i\cdot y(x_i)}{||w||}
∣∣w∣∣yi⋅y(xi)=
y
i
⋅
(
w
T
ϕ
(
x
i
)
+
b
)
∣
∣
w
∣
∣
\frac{y_i\cdot (w^T\phi(x_i)+b)}{||w||}
∣∣w∣∣yi⋅(wTϕ(xi)+b)-----(3) (3)式中的
w
T
ϕ
(
x
i
)
+
b
∣
∣
w
∣
∣
\frac{w^T\phi(x_i)+b}{||w||}
∣∣w∣∣wTϕ(xi)+b就是样本点
x
i
x_i
xi到分割面的距离除以了||w||后就是归一化了
最终目标函数就变成了:Cannot read properties of undefined (reading 'type')Cannot read properties of undefined (reading 'type')(
y
i
⋅
(
w
T
ϕ
(
x
i
)
+
b
)
∣
∣
w
∣
∣
\frac{y_i\cdot (w^T\phi(x_i)+b)}{||w||}
∣∣w∣∣yi⋅(wTϕ(xi)+b) )
(4)目标函数化简
我们可以将w等比例的缩放,使得
∣
y
(
x
i
)
∣
>
=
1
|y(x_i)|>=1
∣y(xi)∣>=1这里是函数距离
则约束条件:
y
i
⋅
(
w
T
ϕ
(
x
i
)
+
b
)
y_i\cdot (w^T\phi(x_i)+b)
yi⋅(wTϕ(xi)+b)>=1
新的目标函数为:Cannot read properties of undefined (reading 'type')
新目标函数等价为:Cannot read properties of undefined (reading 'type')
(5)拉格朗日乘子
举个例子来体会一下什么是拉格朗日乘子
现在目标函数是
m
i
n
f
0
(
x
)
min f_0(x)
minf0(x)
约束条件是:
f
1
(
x
)
<
=
0
f_1(x)<=0
f1(x)<=0
拉格朗日函数:
L
(
x
,
λ
)
L(x,\lambda)
L(x,λ)=
f
0
(
x
)
+
λ
f
1
(
x
)
f_0(x)+\lambda f _1(x)
f0(x)+λf1(x)且
λ
>
=
0
\lambda >=0
λ>=0
那么我们算法里的拉格朗日函数就是:
L
(
w
,
b
,
λ
)
L(w,b,\lambda)
L(w,b,λ)=
1
2
∣
∣
w
∣
∣
2
\frac{1}{2}||w||^2
21∣∣w∣∣2-
∑
i
=
1
n
λ
i
(
y
i
⋅
(
w
T
ϕ
(
x
i
)
+
b
)
−
1
)
\sum_{i=1}^n \lambda_i(y_i\cdot (w^T\phi(x_i)+b)-1)
∑i=1nλi(yi⋅(wTϕ(xi)+b)−1)
原问题就是:
Cannot read properties of undefined (reading 'type')-----(4)
(4)式中的Cannot read properties of undefined (reading 'type')就是
1
2
\frac{1}{2}
21
∣
∣
w
∣
∣
2
||w||^2
∣∣w∣∣2
原问题的对偶问题:
Cannot read properties of undefined (reading 'type')-----(5)
(4)>=(5)
要求(5)式的值,则首先对w,b求偏导
ϑ
L
ϑ
w
=
0
⟹
w
=
∑
i
=
1
n
λ
i
y
i
ϕ
(
x
i
)
\frac{\vartheta L}{\vartheta w}=0 \Longrightarrow w=\sum_{i=1}^n \lambda_iy_i\phi(x_i)
ϑwϑL=0⟹w=∑i=1nλiyiϕ(xi)-----(6)
ϑ
L
ϑ
b
=
0
⟹
0
=
∑
i
=
1
n
λ
i
y
i
\frac{\vartheta L}{\vartheta b}=0 \Longrightarrow 0=\sum_{i=1}^n \lambda_iy_i
ϑbϑL=0⟹0=∑i=1nλiyi-----(7)
将(6),(7)带回到
L
(
w
,
b
,
λ
)
L(w,b,\lambda)
L(w,b,λ)得:
L
(
w
,
b
,
λ
)
=
1
2
∣
∣
w
∣
∣
2
L(w,b,\lambda)=\frac{1}{2}||w||^2
L(w,b,λ)=21∣∣w∣∣2-
∑
i
=
1
n
λ
i
(
y
i
⋅
(
w
T
ϕ
(
x
i
)
+
b
)
−
1
)
\sum_{i=1}^n \lambda_i(y_i\cdot (w^T\phi(x_i)+b)-1)
∑i=1nλi(yi⋅(wTϕ(xi)+b)−1)
= 1 2 w T w − w T ∑ i = 1 n λ i y i ϕ ( x i ) − b ∑ i = 1 n λ i y i + ∑ i = 1 n λ i \frac{1}{2}w^Tw-w^T\sum_{i=1}^n \lambda_iy_i\phi(x_i)-b\sum_{i=1}^n \lambda_iy_i+\sum_{i=1}^n \lambda_i 21wTw−wT∑i=1nλiyiϕ(xi)−b∑i=1nλiyi+∑i=1nλi
= 1 2 w T ∑ i = 1 n λ i y i ϕ ( x i ) − w T ∑ i = 1 n λ i y i ϕ ( x i ) − b ⋅ 0 + ∑ i = 1 n λ i \frac{1}{2}w^T\sum_{i=1}^n \lambda_iy_i\phi(x_i)-w^T\sum_{i=1}^n \lambda_iy_i\phi(x_i)-b\cdot0+\sum_{i=1}^n \lambda_i 21wT∑i=1nλiyiϕ(xi)−wT∑i=1nλiyiϕ(xi)−b⋅0+∑i=1nλi
= ∑ i = 1 n λ i − 1 2 ( ∑ i = 1 n λ i y i ϕ ( x i ) ) T ∑ i = 1 n λ i y i ϕ ( x i ) \sum_{i=1}^n \lambda_i-\frac{1}{2}(\sum_{i=1}^n \lambda_iy_i\phi(x_i))^T\sum_{i=1}^n \lambda_iy_i\phi(x_i) ∑i=1nλi−21(∑i=1nλiyiϕ(xi))T∑i=1nλiyiϕ(xi)
= ∑ i = 1 n λ i − 1 2 ∑ i , j = 1 n λ i λ j y i y j ϕ T ( x i ) ϕ ( x j ) \sum_{i=1}^n \lambda_i-\frac{1}{2}\sum_{i,j=1}^n\lambda_i\lambda_jy_iy_j\phi^T(x_i)\phi(x_j) ∑i=1nλi−21∑i,j=1nλiλjyiyjϕT(xi)ϕ(xj)
Cannot read properties of undefined (reading 'type')
最终目标函数又发生了变化:
Cannot read properties of undefined (reading 'type') -----(8)
约束条件:
∑
i
=
1
n
λ
i
y
i
=
0
\sum_{i=1}^n\lambda_iy_i=0
∑i=1nλiyi=0-----(9)
λ
i
>
=
0
\lambda_i>=0
λi>=0 -----(10)
(8),(9),(10)三个式子就是最终我们需要的
接下来举一个栗子,看看怎么来用这三个式子
如下图
给定三个数据点
x
1
(
3
,
3
,
1
)
,
x
2
(
4
,
3
,
1
)
,
x
3
(
1
,
1
,
−
1
)
x_1(3,3,1),x_2(4,3,1),x_3(1,1,-1)
x1(3,3,1),x2(4,3,1),x3(1,1,−1),求线性可分支持向量机。1,-1是数据的类别,横轴是特征一,纵轴是特征二
由式(8)变形可得:
目标函数为:
Cannot read properties of undefined (reading 'type')
=
1
2
(
18
λ
1
2
+
25
λ
2
2
+
2
λ
3
2
+
42
λ
1
λ
2
−
12
λ
1
λ
3
−
14
λ
2
λ
3
)
−
λ
1
−
λ
2
−
λ
3
\frac{1}{2}(18\lambda_1^2+25\lambda_2^2+2\lambda_3^2+42\lambda_1\lambda_2-12\lambda_1\lambda_3-14\lambda_2\lambda_3)-\lambda_1-\lambda_2-\lambda_3
21(18λ12+25λ22+2λ32+42λ1λ2−12λ1λ3−14λ2λ3)−λ1−λ2−λ3
约束条件:
λ
1
+
λ
2
−
λ
3
=
0
\lambda_1+\lambda_2-\lambda_3=0
λ1+λ2−λ3=0
λ
i
>
=
0
,
i
=
1
,
2
,
3
\lambda_i>=0,i=1,2,3
λi>=0,i=1,2,3
由约束条件我可以把
λ
3
\lambda_3
λ3给替换掉得关于
λ
1
,
λ
2
\lambda_1,\lambda_2
λ1,λ2的函数:
s
(
λ
a
,
λ
2
)
=
4
λ
1
2
+
13
2
λ
2
2
+
10
λ
1
λ
2
−
2
λ
1
−
2
λ
2
s(\lambda_a,\lambda_2)=4\lambda_1^2+\frac{13}{2}\lambda_2^2+10\lambda_1\lambda_2-2\lambda_1-2\lambda_2
s(λa,λ2)=4λ12+213λ22+10λ1λ2−2λ1−2λ2
分别对
λ
1
,
λ
2
\lambda_1,\lambda_2
λ1,λ2求导并令其为0,得
s
(
λ
1
,
λ
2
)
s(\lambda_1,\lambda_2)
s(λ1,λ2)在点(1.5,-1)取极值,但是根据约束条件
λ
i
>
=
0
\lambda_i>=0
λi>=0,则在边界处取极值
当
λ
1
=
0
\lambda_1=0
λ1=0时,最小值s(0,2/13)=-2/13
当
λ
2
=
0
\lambda_2=0
λ2=0时,最小值s(1/4,0)=-1/4
于是,
s
(
λ
1
,
λ
2
)
s(\lambda_1,\lambda_2)
s(λ1,λ2)在
λ
1
=
1
/
4
,
λ
2
=
0
\lambda_1=1/4,\lambda_2=0
λ1=1/4,λ2=0时达到最小,
λ
3
=
1
/
4
\lambda_3=1/4
λ3=1/4
由(6)式可以得到
w
1
=
w
2
=
0.5
w_1=w_2=0.5
w1=w2=0.5
由公式
y
(
x
)
=
w
T
ϕ
(
x
)
+
b
y(x)=w^T\phi(x)+b
y(x)=wTϕ(x)+b可以得到b=-2
则超平面就是
1
2
x
1
+
1
2
x
2
−
2
=
0
\frac{1}{2}x_1+\frac{1}{2}x_2-2=0
21x1+21x2−2=0
这里的
x
1
x_1
x1是特征一,
x
2
x_2
x2是特征二。那么这个超平面就是我们图中的那条实线。符合事实