SVM支持向量机原理推导

SVM是一个非常经典的监督学习算法。下面给出SVM对于二值分类的原理及推导过程。

1、问题转化

如下图所示:
在这里插入图片描述想要找一条直线 w x + b = 0 wx+b=0 将图中红蓝两类样本区分开,假设将这条线向左和向右分别平移,接触到样本点停止,得到两条新的直线,设它们分别为 w x + b = c    wx+b=c\; w x + b = c wx+b=-c
w = w c , b = b c w=\frac{w}{c},b=\frac{b}{c} ,则这两条直线转化为 w x + b = 1    wx+b=1\; w x + b = 1 wx+b=-1 。此时,令 w x + b = 0 wx+b=0 也左右同时除以 c c ,仍得到 w x + b = 0 wx+b=0
SVM的目的即找到直线 w x + b = 0 wx+b=0 ,使得 w x + b = 1    wx+b=1\; w x + b = 1 wx+b=-1 之间的距离 2 d = 2 w 2d=\frac{2}{||w||} 最大。
所以,只要保证:
m i n 1 2 w 2 min\quad \frac{1}{2}||w||^{2}
由于在上图中红线的上方 w x + b < 0    wx+b<0\; ,且标签 y = 1 y=-1 ;而在红线的下方有 w x + b > 0    wx+b>0\; ,且标签 y = 1 y=1 ,故有约束条件:
( w x i + b ) y i 1 (wx_{i}+b)y_{i}\geq1
到这里,此问题已被转化为一有约束的优化问题:
{ m i n    1 2 w 2 ( w x i + b ) y i 1 \begin{cases} min\; \frac{1}{2}||w||^{2} \\ (wx_{i}+b)y_{i}\geq1 \end{cases}
对于小样本问题,可以用拉格朗日乘子法解决。
详细解法参照 https://blog.csdn.net/qq_36758914/article/details/103324074

2、拉格朗日对偶

此处引入拉格朗日对偶的概念。

1) 原始问题

假设 f ( x ) , c i ( x ) , h j ( x ) f_{(x)}, c_{i(x)}, h_{j(x)} 是定义在 R n R^{n} 上的连续可微函数,考虑约束最优化问题:
m i n x R n f ( x ) \mathop{min}\limits_{x\in R^{n}}f_{(x)}
s . t . c i ( x ) 0    , i = 1 , 2 , , k ; h j ( x ) = 0    , i = 1 , 2 , , l s.t.\quad c_{i(x)}\leq0\;,i=1,2,…,k;\quad h_{j(x)}=0\;,i=1,2,…,l
称此约束最优化问题为原始最优化问题或原始问题。
首先,引进广义拉格朗日函数:
L ( x , α , β ) = f ( x ) + i = 1 k α i c i ( x ) + j = 1 l β j h j ( x ) L_{(x,\alpha,\beta)}=f_{(x)}+\sum_{i=1}^{k}\alpha_{i}c_{i(x)}+\sum_{j=1}^{l}\beta_{j}h_{j(x)}
这里, x = ( x ( 1 ) , x ( 2 ) , , x ( n ) ) T R n x=(x^{(1)},x^{(2)},…,x^{(n)})^{T}\in R^{n} α i ,    β j \alpha_{i},\; \beta_{j} 是拉格朗日乘子, α i 0 \alpha_{i}\geq0 。考虑 x x 的函数:
θ p ( x ) = m a x α ,    β ,    α i 0 L ( x , α , β ) \theta_{p(x)}=\mathop{max}\limits_{\alpha,\; \beta,\; \alpha_{i}\geq0}L_{(x,\alpha,\beta)}
假设给定某个 x x ,如果 x x 违反原始问题的约束条件,即存在某个 i i 使得 c i ( x ) > 0    c_{i(x)}>0\; 或者存在某个 j j 使得 h j ( x ) 0 h_{j(x)}\ne0 ,那么就有:
θ p ( x ) = m a x α ,    β ,    α i 0 [ f ( x ) + i = 1 k α i c i ( x ) + j = 1 l β j h j ( x ) ] = + \theta_{p(x)}=\mathop{max}\limits_{\alpha,\; \beta,\; \alpha_{i}\geq0}[f_{(x)}+\sum_{i=1}^{k}\alpha_{i}c_{i(x)}+\sum_{j=1}^{l}\beta_{j}h_{j(x)}]=+\infty
因为若某个 i i 使得 c i ( x ) > 0 c_{i(x)}>0 ,则可以令 α i + \alpha_{i}\rightarrow+\infty ,若某个 j j 使 h j ( x ) 0 h_{j(x)}\ne0 ,则可令 β j + \beta_{j}\rightarrow+\infty 。以上两种情况均可以使    θ p ( x ) = + \;\theta_{p(x)}=+\infty
相反地,若 x x 满足约束条件,则:
θ p ( x ) = m a x α ,    β ,    α i 0 [ f ( x ) + i = 1 k α i c i ( x ) ] \theta_{p(x)}=\mathop{max}\limits_{\alpha,\; \beta,\; \alpha_{i}\geq0}[f_{(x)}+\sum_{i=1}^{k}\alpha_{i}c_{i(x)}]
由于 α i 0 \alpha_{i}\geq0 c i ( x ) 0 c_{i(x)}\leq0 ,故 i = 1 k α i c i ( x ) 0 \mathop{\sum}\limits_{i=1}^{k}\alpha_{i}c_{i(x)}\leq0 。所以:
θ p ( x ) = f ( x ) \theta_{p(x)}=f_{(x)}
即:
θ p ( x ) = { f ( x ) , x    满足原问题约束 + , 其他 \theta_{p(x)}=\begin{cases} f_{(x)}, & \text {x\;满足原问题约束} \\ +\infty, & \text {其他} \end{cases}
如果考虑极小化问题
m i n x θ p ( x ) = m i n x m a x α ,    β ,    α i 0 L ( x , α , β ) \mathop{min}\limits_{x}\theta_{p(x)}=\mathop{min}\limits_{x} \mathop{max}\limits_{\alpha,\; \beta,\; \alpha_{i}\geq0}L_{(x,\alpha,\beta)}
θ p ( x ) \theta_{p(x)} 的表达式可知, m i n x θ p ( x ) \mathop{min}\limits_{x}\theta_{p(x)} 是与原始最优化问题等价的,也就是说它们的解相同。问题 m i n x m a x α ,    β ,    α i 0 L ( x , α , β ) \mathop{min}\limits_{x} \mathop{max}\limits_{\alpha,\; \beta,\; \alpha_{i}\geq0}L_{(x,\alpha,\beta)} 被称为广义拉格朗日函数的极小极大问题。

2)对偶问题

定义
θ D ( α , β ) = m i n x L ( x , α , β ) \theta_{D(\alpha,\beta)}=\mathop{min}\limits_{x}L_{(x,\alpha,\beta)}
再考虑极大化 θ D ( α , β ) \theta_{D(\alpha,\beta)} ,即:
m a x α ,    β ,    α i 0 θ D ( α , β ) = m a x α ,    β ,    α i 0 m i n x L ( x , α , β ) \mathop{max}\limits_{\alpha,\; \beta,\; \alpha_{i}\geq0}\theta_{D(\alpha,\beta)}=\mathop{max}\limits_{\alpha,\; \beta,\; \alpha_{i}\geq0}\mathop{min}\limits_{x}L_{(x,\alpha,\beta)}
问题 m a x α ,    β ,    α i 0 m i n x L ( x , α , β )    \mathop{max}\limits_{\alpha,\; \beta,\; \alpha_{i}\geq0}\mathop{min}\limits_{x}L_{(x,\alpha,\beta)}\; 称为广义拉格朗日函数的极大极小问题。
若目标函数与所有约束函数皆为凸函数,则原始问题和它的对偶问题是等价的。
而对于 S V M SVM ,其所有函数皆为凸函数。

3、SVM的对偶问题

{ m i n    1 2 w 2 ( w x i + b ) y i 1 \begin{cases} min\; \frac{1}{2}w^{2} \\ (wx_{i}+b)y_{i}\geq1 \end{cases}
其广义拉格朗日函数为:
L ( w , b , α ) = 1 2 w 2 + i = 1 N α i [ 1 ( w x i + b ) y i ] L_{(w,b,\alpha)}=\frac{1}{2}w^{2}+\sum_{i=1}^{N}\alpha_{i}[1-(wx_{i}+b)y_{i}]
原问题:
m i n w ,    b m a x α i 0 L ( w , b , α ) \mathop{min}\limits_{w,\;b} \mathop{max}\limits_{\alpha_{i}\geq0}L_{(w,b,\alpha)}
对偶问题:
m a x α i 0 m i n w ,    b L ( w , b , α ) \mathop{max}\limits_{\alpha_{i}\geq0}\mathop{min}\limits_{w,\;b}L_{(w,b,\alpha)}
先对 L ( x , α , β ) L_{(x,\alpha,\beta)} 求极小值:
L w = 0 w = i = 1 N α i x i y i \frac{\partial L}{\partial w}=0\Rightarrow w=\sum_{i=1}^{N}\alpha_{i}x_{i}y_{i}
L b = 0 i = 1 N α i y i = 0 \frac{\partial L}{\partial b}=0\Rightarrow \sum_{i=1}^{N}\alpha_{i}y_{i}=0
将结果带入对偶问题,可将其转化为下式:
m a x α i 0    1 2 ( i = 1 N α i x i y i ) 2 + i = 1 N α i [ 1 ( ( j = 1 N α j x j y j ) x i + b ) y i ] \mathop{max}\limits_{\alpha_{i}\geq0}\;\frac{1}{2}(\sum_{i=1}^{N}\alpha_{i}x_{i}y_{i})^{2}+\sum_{i=1}^{N}\alpha_{i}[1-((\sum_{j=1}^{N}\alpha_{j}x_{j}y_{j})x_{i}+b)y_{i}]
= m a x α i 0    1 2 ( i = 1 N α i x i y i ) 2 + i = 1 N α i [ 1 ( j = 1 N α j x j y j ) x i y i ] =\mathop{max}\limits_{\alpha_{i}\geq0}\;\frac{1}{2}(\sum_{i=1}^{N}\alpha_{i}x_{i}y_{i})^{2}+\sum_{i=1}^{N}\alpha_{i}[1-(\sum_{j=1}^{N}\alpha_{j}x_{j}y_{j})x_{i}y_{i}]
= m a x α i 0    1 2 ( i = 1 N α i x i y i ) 2 + i = 1 N α i i = 1 N j = 1 N α i x i y i α j x j y j =\mathop{max}\limits_{\alpha_{i}\geq0}\;\frac{1}{2}(\sum_{i=1}^{N}\alpha_{i}x_{i}y_{i})^{2}+\sum_{i=1}^{N}\alpha_{i}-\sum_{i=1}^{N}\sum_{j=1}^{N}\alpha_{i}x_{i}y_{i}\alpha_{j}x_{j}y_{j}
= m a x α i 0    1 2 i = 1 N j = 1 N α i α j y i y j < x i x j > + i = 1 N α i =\mathop{max}\limits_{\alpha_{i}\geq0}\;-\frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}\alpha_{i}\alpha_{j}y_{i}y_{j}<x_{i}x_{j}>+\sum_{i=1}^{N}\alpha_{i}
约束条件为:
i = 1 N α i y i = 0 α i 0 \sum_{i=1}^{N}\alpha_{i}y_{i}=0\quad \alpha_{i}\geq0
K K T KKT 条件为:
α i [ 1 ( w x i + b ) y i = 0 \alpha_{i}[1-(wx_{i}+b)y_{i}=0
故原始问题被转化为:
{ m a x α i 0    1 2 i = 1 N j = 1 N α i α j y i y j < x i x j > + i = 1 N α i i = 1 N α i y i = 0 α i 0 α i [ 1 ( w x i + b ) y i = 0 \begin{cases} \mathop{max}\limits_{\alpha_{i}\geq0}\;-\frac{1}{2}\mathop{\sum}\limits_{i=1}^{N}\mathop{\sum}\limits_{j=1}^{N}\alpha_{i}\alpha_{j}y_{i}y_{j}<x_{i}x_{j}>+\mathop{\sum}\limits_{i=1}^{N}\alpha_{i} \\ \mathop{\sum}\limits_{i=1}^{N}\alpha_{i}y_{i}=0\quad \alpha_{i}\geq0 \\ \alpha_{i}[1-(wx_{i}+b)y_{i}=0 \end{cases}

4、SMO算法(序列最小优化算法)

优化此问题时采用SMO算法。
假设此问题中只有 α 1 \alpha_{1} α 10 \alpha_{10} ,则SMO算法的步骤如下。
1)先固定 α 3 \alpha_{3} α 10 \alpha_{10} ,则最优化函数变为:
m a x α i 0    1 2 i = 1 2 j = 1 2 α i α j y i y j < x i x j > + i = 1 2 α i \mathop{max}\limits_{\alpha_{i}\geq0}\;-\frac{1}{2}\mathop{\sum}\limits_{i=1}^{2}\mathop{\sum}\limits_{j=1}^{2}\alpha_{i}\alpha_{j}y_{i}y_{j}<x_{i}x_{j}>+\mathop{\sum}\limits_{i=1}^{2}\alpha_{i}
约束条件变为:
α 1 y 1 + α 2 y 2 = i = 3 10 α i y i    为一常数 \alpha_{1}y_{1}+\alpha_{2}y_{2}=-\sum_{i=3}^{10}\alpha_{i}y_{i}\text{\;为一常数}
则此优化问题变成了一个二维变量( α 1 α 2 \alpha_{1},\alpha_{2} )的优化问题,使原来的十维优化问题大大简化。
这时,可以先算出最优的 α 1 \alpha_{1} α 2 \alpha_{2}
2)固定 α 1 \alpha_{1} α 4 \alpha_{4} α 10 \alpha_{10} ,重复以上操作并代入最优的 α 1 \alpha_{1} ,得到最优的 α 2 \alpha_{2} α 3 \alpha_{3}
3)固定 α 1 \alpha_{1} α 2 \alpha_{2} α 5 \alpha_{5} α 10 \alpha_{10} ,重复以上操作并代入最优的 α 1 \alpha_{1} α 2 \alpha_{2} ,得到最优的 α 3 \alpha_{3} α 4 \alpha_{4}
……
4)得到所有的最优 α \alpha ,将其代入 w = i = 1 10 α i x i y i w=\mathop{\sum}\limits_{i=1}^{10}\alpha_{i}x_{i}y_{i} ,得到最优的 w w 值。
5)若得到的 α i = 0 \alpha_{i}=0 ,则表示第 i i 个约束条件不起作用;若得到的 α i 0 \alpha_{i}\ne0 ,则它对应的 x i x_{i} y i y_{i} 就是支持向量。
6)通过 y = ( i = 1 N α i x i y i ) T x = i = 1 N α i y i x i T x    y=(\mathop{\sum}\limits_{i=1}^{N}\alpha_{i}x_{i}y_{i})^{T}x=\mathop{\sum}\limits_{i=1}^{N}\alpha_{i}y_{i}x_{i}^{T}x\; 得到某样本点对应的标签。

5、线性不可分核函数

对于一些线性不可分的样本,如下图(左),不能找出一条直线来分类样本。此时需要做空间的变换。
设原空间为 χ R n , x = ( x ( 1 ) , x ( 2 ) ) T χ \chi \subset R^{n},x=(x^{(1)},x^{(2)})^{T} \in \chi ,新空间为 Z R 2 , z = ( z ( 1 ) , z ( 2 ) ) T Z Z\subset R^{2},z=(z^{(1)},z^{(2)})^{T} \in Z ,定义从原空间到新空间的变换(映射):
z = ϕ ( x ) = ( ( x ( 1 ) ) 2 , ( x ( 2 ) ) 2 ) T z=\phi_{(x)}=((x^{(1)})^{2},(x^{(2)})^{2})^{T}
经过变换 z = ϕ ( x ) z=\phi_{(x)} ,原空间 χ R n \chi \subset R^{n} 变换为新空间 Z R 2 Z\subset R^{2} ,原空间中的点相应地变换为新空间中的点,原空间中的椭圆
w 1 ( x ( 1 ) ) 2 + w 2 ( x ( 2 ) ) 2 + b = 0 w_{1}(x^{(1)})^{2}+w_{2}(x^{(2)})^{2}+b=0
变换为新空间中的直线
w 1 z ( 1 ) + w 2 z ( 2 ) + b = 0 w_{1}z^{(1)}+w_{2}z^{(2)}+b=0
即由下图中的左图变为右图。
在这里插入图片描述实际上我们并不需要知道经过空间变换后的 z 1 z_{1} z 2 z_{2} 的具体值,因为由 y = ( i = 1 N α i x i y i ) T x = i = 1 N α i y i x i T x    y=(\mathop{\sum}\limits_{i=1}^{N}\alpha_{i}x_{i}y_{i})^{T}x=\mathop{\sum}\limits_{i=1}^{N}\alpha_{i}y_{i}x_{i}^{T}x\; 知,我们只需要知道 x i x_{i} x x 的点积即可。
常用的空间变换有:
1)多项式核函数:
K ( x , z ) = ( x z + 1 ) p K_{(x,z)}=(x\cdot z+1)^{p}
对应的支持向量机是一个 p p 次多项式的分类器。此时,分类决策函数变成:
f ( x ) = s i g n ( i = 1 N α i y i ( x i x + 1 ) p + b ) f_{(x)}=sign(\mathop{\sum}\limits_{i=1}^{N}\alpha_{i}y_{i}(x_{i}\cdot x+1)^{p}+b)
2)高斯核函数:
K ( x , z ) = e x z 2 2 σ 2 K_{(x,z)}=e^{-\frac{||x-z||^{2}}{2\sigma^{2}}}
对应的支持向量机是高斯径向基函数分类器。此时,分类决策函数变成:
f ( x ) = s i g n ( i = 1 N α i y i e x i x 2 2 σ 2 + b ) f_{(x)}=sign(\mathop{\sum}\limits_{i=1}^{N}\alpha_{i}y_{i}e^{-\frac{||x_{i}-x||^{2}}{2\sigma^{2}}}+b)

发布了36 篇原创文章 · 获赞 1 · 访问量 559

猜你喜欢

转载自blog.csdn.net/qq_36758914/article/details/103406845