决策边界+SVM损失函数
回顾一下前面博客中提到的决策边界,在二维的平面上,决策边界即超平面是一条直线。
现在假设有N个样本点,每个样本点表示为(xi_ii, yiy_iyi),xi_ii是特征向量。为了便于理解,所以假设每个样本有2个特征,即对于任意一个样本i有: (x1i_{1i}1i, x2i_{2i}2i, yi{y_i}yi),就表示他们的两个特征值和对应的标签。
接着在二维平面上,将它们表示出来(相当于用x2_{2}2来表示横坐标,x1_{1}1表示纵坐标,y{y}y表示类别,图中体现为蓝色这类或红色这类),就如下图:
设置红色样本点标签为1,蓝色样本点标签为-1。此时,在二维平面上,找决策边界,也就是找超平面,超平面应该是一维的直线。任何一条直线都可以有如下表示:
x1{x_1}x1 = ax2{ax_2}ax2 + b{b}b
将变量都移至等号的一边:
0 = ax2{ax_2}ax2 - x1{x_1}x1 + b{b}b
转换成矩阵相乘的形式:
0 = [a,−1]\begin{bmatrix}a,-1 \\ \end{bmatrix}[a,−1] * [x2x1]\begin{bmatrix}x_2 \\ x_1 \\ \end{bmatrix}[x2x1] + bbb
其中,[a,−1]\begin{bmatrix}a,-1 \\ \end{bmatrix}[a,−1]是参数向量,[x2x1]\begin{bmatrix}x_2 \\ x_1 \\ \end{bmatrix}[x2x1]是特征向量;
即可写成:
0 = wTxw^TxwTx + bbb。
所以在SVM中,决策边界就可以用wTxw^TxwTx + bbb = 0来表示,若不给定www和bbb,就表示平面上的任意一条直线;若确定了www和bbb,也确定了唯一的xxx的取值,就能够表示一个样本点了。
最终的目标是求解最佳的决策边界,即使得间隔最大化的决策边界,即需要求解www和bbb。
首先,在决策边界上任取2点,xmx_mxm和xnx_nxn,将其代入表达式有:
wTxmw^Tx_mwTxm + bbb = 0 ①
wTxnw^Tx_nwTxn + bbb = 0 ②
① – ②得:
wTw^TwT * (xm−xn)(x_m - x_n)(xm−xn) = 0
补充
对于向量aaa = [a1a_1a1, a2a_2a2…ana_nan]和向量bbb = [b1b_1b1, b2b_2b2…bnb_nbn],其点积可表示为:
a⋅ba·ba⋅b = a1a_1a1b1b_1b1 + a2a_2a2b2b_2b2 + … + ana_nanbnb_nbn
若用矩阵乘法且将向量看成是nX1的矩阵,还可以写成:
a⋅ba·ba⋅b = aTa^TaT * b
又由两个向量点积为0可以得知两个向量互相垂直,即www与(xm−xn)(x_m - x_n)(xm−xn)相互垂直。而(xm−xn)(x_m - x_n)(xm−xn)其方向是平行于决策边界(wTxw^TxwTx + bbb = 0 )的,故参数向量www方向与决策边界垂直。
假设下方图片中绿色直线表示决策边界,则www方向如图所示
现在,对于任意一个红色的样本点xpx_pxp,可以表示为:
wT⋅xpw^T·x_pwT⋅xp + bbb = ppp
因为该点不在决策边界上,所以p肯定不为0,又红色标签为1,所以定p>0;
同理,对于任意一个蓝色的样本点xqx_qxq,可以表示为:
wT⋅xqw^T·x_qwT⋅xq + bbb = qqq
蓝色标签为-1,所以定q<0;
综上所述,对于新的待测样本点xkx_kxk,其标签可以有如下判定:
y={1,w⋅xk+b>0−1,w⋅xk+b<0y=\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⋅xw·xw⋅x + bbb = ttt ;w⋅xw·xw⋅x + bbb = −t-t−t
上边两个式子两边同时除以ttt:
w⋅xw·xw⋅x + bbb = 111 ;w⋅xw·xw⋅x + bbb = −1-1−1
若将虚线平行外移,穿过的样本点(离决策边界最近)就是支持向量
同上,令红色样本点为xpx_pxp,蓝色为xqx_qxq,那么有:
w⋅xpw·x_pw⋅xp + bbb = 111 ;w⋅xqw·x_qw⋅xq + bbb = −1-1−1
再将两式相减得到:
www * (xp−xqx_p-x_qxp−xq) = 222
我们希望求解的是Margin,即通过红色样本点xpx_pxp和蓝色样本点xqx_qxq构成的那个小三角形中的黑色虚线那条边,而现在三角形的斜边就是xp−xqx_p-x_qxp−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,也就是xpx_pxp和xqx_qxq组成的那个小三角的黑色虚线,也就是向量(xp−xq)(x_p-x_q)(xp−xq)在www方向上的投影。所以可以写出下面的式子(将www * (xp−xqx_p-x_qxp−xq) = 222两边同时除以∣∣w∣∣||w||∣∣w∣∣):
Margin = w∗(xp−xq)∣∣m∣∣w*(x_p-x_q)\over{||m||}∣∣m∣∣w∗(xp−xq) = (xp−xq)(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(最小化1M1\over MM1)就是最小化www,即求www的最小值,即求解下边函数的最小值:
f(w)f(w)f(w) = ∣∣w∣∣22{||w||^2}\over22∣∣w∣∣2 (实际上就是1M1\over MM1)
为什么有个平方?
因为∣∣w∣∣||w||∣∣w∣∣表示的是模长,对于向量(x, y),它的模长求解公式是:x2+y2\sqrt {x^2+y^2}x2+y2,这是带根号的,所以为了便于计算,用平方将根号去掉。
所以,决策函数:
w⋅xiw·x_iw⋅xi + bbb ≥ 1,if yiy_iyi = 1
w⋅xiw·x_iw⋅xi + bbb ≤ -1,if yiy_iyi = -1
可以合起来写作:
yi(w⋅xi+b)y_i(w·x_i + b)yi(w⋅xi+b) ≥ 1, i= 1,2,3…n
SVM最初的损失函数:
在www和bbb为参数,yi(w⋅xi+b)y_i(w·x_i + b)yi(w⋅xi+b) ≥ 1, i= 1,2,3…n的条件下,求解minminmin∣∣w∣∣22{||w||^2}\over22∣∣w∣∣2