决策边界+SVM损失函数
回顾一下前面博客中提到的决策边界,在二维的平面上,决策边界即超平面是一条直线。
现在假设有N个样本点,每个样本点表示为(x
i
_i
i,
y
i
y_i
yi),x
i
_i
i是特征向量。为了便于理解,所以假设每个样本有2个特征,即对于任意一个样本i有: (x
1
i
_{1i}
1i, x
2
i
_{2i}
2i,
y
i
{y_i}
yi),就表示他们的两个特征值和对应的标签。
接着在二维平面上,将它们表示出来(相当于用x
2
_{2}
2来表示横坐标,x
1
_{1}
1表示纵坐标,
y
{y}
y表示类别,图中体现为蓝色这类或红色这类),就如下图:
设置红色样本点标签为1,蓝色样本点标签为-1。此时,在二维平面上,找决策边界,也就是找超平面,超平面应该是一维的直线。任何一条直线都可以有如下表示:
x
1
{x_1}
x1 =
a
x
2
{ax_2}
ax2 +
b
{b}
b
将变量都移至等号的一边:
0 =
a
x
2
{ax_2}
ax2 -
x
1
{x_1}
x1 +
b
{b}
b
转换成矩阵相乘的形式:
0 =
[
a
,
−
1
]
\begin{bmatrix}a,-1 \\ \end{bmatrix}
[a,−1] *
[
x
2
x
1
]
\begin{bmatrix}x_2 \\ x_1 \\ \end{bmatrix}
[x2x1] +
b
b
b
其中,
[
a
,
−
1
]
\begin{bmatrix}a,-1 \\ \end{bmatrix}
[a,−1]是参数向量,
[
x
2
x
1
]
\begin{bmatrix}x_2 \\ x_1 \\ \end{bmatrix}
[x2x1]是特征向量;
即可写成:
0 =
w
T
x
w^Tx
wTx +
b
b
b。
所以在SVM中,决策边界就可以用
w
T
x
w^Tx
wTx +
b
b
b = 0来表示,若不给定
w
w
w和
b
b
b,就表示平面上的任意一条直线;若确定了
w
w
w和
b
b
b,也确定了唯一的
x
x
x的取值,就能够表示一个样本点了。
最终的目标是求解最佳的决策边界,即使得间隔最大化的决策边界,即需要求解
w
w
w和
b
b
b。
首先,在决策边界上任取2点,
x
m
x_m
xm和
x
n
x_n
xn,将其代入表达式有:
w
T
x
m
w^Tx_m
wTxm +
b
b
b = 0 ①
w
T
x
n
w^Tx_n
wTxn +
b
b
b = 0 ②
① – ②得:
w
T
w^T
wT *
(
x
m
−
x
n
)
(x_m - x_n)
(xm−xn) = 0
补充
对于向量
a
a
a = [
a
1
a_1
a1,
a
2
a_2
a2…
a
n
a_n
an]和向量
b
b
b = [
b
1
b_1
b1,
b
2
b_2
b2…
b
n
b_n
bn],其点积可表示为:
a
⋅
b
a·b
a⋅b =
a
1
a_1
a1
b
1
b_1
b1 +
a
2
a_2
a2
b
2
b_2
b2 + … +
a
n
a_n
an
b
n
b_n
bn
若用矩阵乘法且将向量看成是nX1的矩阵,还可以写成:
a
⋅
b
a·b
a⋅b =
a
T
a^T
aT * b
又由两个向量点积为0可以得知两个向量互相垂直,即
w
w
w与
(
x
m
−
x
n
)
(x_m - x_n)
(xm−xn)相互垂直。而
(
x
m
−
x
n
)
(x_m - x_n)
(xm−xn)其方向是平行于决策边界(
w
T
x
w^Tx
wTx +
b
b
b = 0 )的,故参数向量
w
w
w方向与决策边界垂直。
假设下方图片中绿色直线表示决策边界,则
w
w
w方向如图所示
现在,对于任意一个红色的样本点
x
p
x_p
xp,可以表示为:
w
T
⋅
x
p
w^T·x_p
wT⋅xp +
b
b
b =
p
p
p
因为该点不在决策边界上,所以p肯定不为0,又红色标签为1,所以定p>0;
同理,对于任意一个蓝色的样本点
x
q
x_q
xq,可以表示为:
w
T
⋅
x
q
w^T·x_q
wT⋅xq +
b
b
b =
q
q
q
蓝色标签为-1,所以定q<0;
综上所述,对于新的待测样本点 x k x_k xk,其标签可以有如下判定:
y = { 1 , w ⋅ x k + b > 0 − 1 , w ⋅ x k + b < 0 y=\left\{\begin{aligned} 1, & \text w \cdot x_{k}+b>0 \\-1, & \text w \cdot x_{k}+b<0 \end{aligned}\right. y={1,−1,w⋅xk+b>0w⋅xk+b<0
在上一篇博客中,也提到,在决策边界的两侧有两个超平面,这里就是在我们画的这条直线两侧,分别有平行于它的两条线,这两条平行线之间的距离就是Margin。
这两条平行线可以这样表示:
w
⋅
x
w·x
w⋅x +
b
b
b =
t
t
t ;
w
⋅
x
w·x
w⋅x +
b
b
b =
−
t
-t
−t
上边两个式子两边同时除以
t
t
t:
w
⋅
x
w·x
w⋅x +
b
b
b =
1
1
1 ;
w
⋅
x
w·x
w⋅x +
b
b
b =
−
1
-1
−1
若将虚线平行外移,穿过的样本点(离决策边界最近)就是支持向量
同上,令红色样本点为
x
p
x_p
xp,蓝色为
x
q
x_q
xq,那么有:
w ⋅ x p w·x_p w⋅xp + b b b = 1 1 1 ; w ⋅ x q w·x_q w⋅xq + b b b = − 1 -1 −1
再将两式相减得到:
w w w * ( x p − x q x_p-x_q xp−xq) = 2 2 2
我们希望求解的是Margin,即通过红色样本点
x
p
x_p
xp和蓝色样本点
x
q
x_q
xq构成的那个小三角形中的黑色虚线那条边,而现在三角形的斜边就是
x
p
−
x
q
x_p-x_q
xp−xq是可以求解的。
补充
此时引入线代中模长的概念。
① 向量m除以它的模长就等于向量m方向上的单位向量,即
m
⃗
∣
∣
m
∣
∣
\vec{m}\over{||m||}
∣∣m∣∣m,方向指向
m
⃗
\vec{m}
m的方向,值为1;
② 向量n乘向量m方向上的单位向量结果为向量n在向量m方向上的投影的长度。即
n
⃗
⋅
m
⃗
∣
∣
m
∣
∣
\vec{n}·\vec{m}\over{||m||}
∣∣m∣∣n⋅m,这里的结果是一个数,因为分子相当于是一个点积,点积的结果是一个数,分母模长也是数,所以求得的结果就是投影的长度。
由上边补充的模长相关知识,可以知道我们想求解的Margin,也就是
x
p
x_p
xp和
x
q
x_q
xq组成的那个小三角的黑色虚线,也就是向量
(
x
p
−
x
q
)
(x_p-x_q)
(xp−xq)在
w
w
w方向上的投影。所以可以写出下面的式子(将
w
w
w * (
x
p
−
x
q
x_p-x_q
xp−xq) =
2
2
2两边同时除以
∣
∣
w
∣
∣
||w||
∣∣w∣∣):
Margin =
w
∗
(
x
p
−
x
q
)
∣
∣
m
∣
∣
w*(x_p-x_q)\over{||m||}
∣∣m∣∣w∗(xp−xq) =
(
x
p
−
x
q
)
(x_p-x_q)
(xp−xq)*
w
∣
∣
w
∣
∣
w\over{||w||}
∣∣w∣∣w=
2
∣
∣
w
∣
∣
2\over||w||
∣∣w∣∣2
故:M = 2 ∣ ∣ w ∣ ∣ 2\over||w|| ∣∣w∣∣2 (Margin用M代替)
我们最初的目的,是求解使得间隔最大的决策边界,问题到这一步就是求最大的M。
对于M =
2
∣
∣
w
∣
∣
2\over||w||
∣∣w∣∣2最大化M(最小化
1
M
1\over M
M1)就是最小化
w
w
w,即求
w
w
w的最小值,即求解下边函数的最小值:
f ( w ) f(w) f(w) = ∣ ∣ w ∣ ∣ 2 2 {||w||^2}\over2 2∣∣w∣∣2 (实际上就是 1 M 1\over M M1)
为什么有个平方?
因为 ∣ ∣ w ∣ ∣ ||w|| ∣∣w∣∣表示的是模长,对于向量(x, y),它的模长求解公式是: x 2 + y 2 \sqrt {x^2+y^2} x2+y2,这是带根号的,所以为了便于计算,用平方将根号去掉。
所以,决策函数:
w
⋅
x
i
w·x_i
w⋅xi +
b
b
b ≥ 1,if
y
i
y_i
yi = 1
w
⋅
x
i
w·x_i
w⋅xi +
b
b
b ≤ -1,if
y
i
y_i
yi = -1
可以合起来写作:
y i ( w ⋅ x i + b ) y_i(w·x_i + b) yi(w⋅xi+b) ≥ 1, i= 1,2,3…n
SVM最初的损失函数:
在
w
w
w和
b
b
b为参数,
y
i
(
w
⋅
x
i
+
b
)
y_i(w·x_i + b)
yi(w⋅xi+b) ≥ 1, i= 1,2,3…n的条件下,求解
m
i
n
min
min
∣
∣
w
∣
∣
2
2
{||w||^2}\over2
2∣∣w∣∣2