线性可分支持向量机记录

这里是引用

前言

       小那近日因为工作需要,详细看了支持向量机的学习算法是如何玩转分类功能的。在程序员女朋友的无数次推荐下,青睐于手写笔记的小那开启了博客记录之行。这篇内容主要讲述了支持向量机的3种类别种最简单的一种:线性可分支持向量机。


一、支持向量机概述

  1. 支持向量机就是一种二分类模型。
           二分类模型是比较多的,比如感知机(对误分类样本的损失函数求极小值来求得分离超平面),SVM区别于其他模型的主要特性是SVM是求解定义在特征空间上的间隔最大的线性分类器。意思是:可以正确分类的超平面有无穷多个,特性中概念"间隔最大"的间隔定义为训练数据集中所有样本点到分离超平面的几何距离的最小距离,也就是离超平面最近的样本点到分离超平面的距离,我们称为几何间隔,间隔最大就是求无穷多个分离超平面中使得几何间隔最大的分离超平面,且解是唯一的。
           因为支持向量机的特性,在以工程为核心的工作中很少使用,我将学习重点放在支持向量机的学习算法上,即求解凸二次规划问题的最优化算法,也是本文的记录重点。

  2. 支持向量机的分类
           根据训练数据集是否可分可将支持向量机分为三类。当训练数据集线性可分时,通过间隔最大化学习的线性分类器为线性可分支持向量机;当训练数据集近似线性可分时,通过间隔最大化学习的线性分类器为线性支持向量机;当训练数据集线性不可分时,通过核技巧和间隔最大化学习到的分类器为非线性支持向量机。本文讲述的是第一类分类器,即线性可分支持向量机。

二、支持向量机问题数学描述

1.形式化描述问题

        假设给定一个特征空间上的训练数据集 T = { ( x ⃗ 1 , y 1 ) , ( x ⃗ 2 , y 2 ) , . . . , ( x ⃗ N , y N ) } T=\{(\vec x_1, y_1), (\vec x_2, y_2), ...,(\vec x_N, y_N)\} T={(x 1,y1),(x 2,y2),...,(x N,yN)},其中 y ∈ { + 1 , − 1 } y \in \{+1, -1\} y{+1,1},当 y i = + 1 y_i=+1 yi=+1时,样本点特征为正类;当 y i = − 1 y_i=-1 yi=1,样本点特征称为负类。线性可分支持向量机的专业定义如下:
       给定线性可分训练数据集,使用间隔最大化或等价的求解对应的凸二次规划问题学习到的分离超平面为:
W ⃗ ∗ ∗ x ⃗ + b ∗ = 0 \vec W^* *\vec x + b^* = 0 W x +b=0,
相应的分类决策函数为 f ( x ) = s i g n ( W ⃗ ∗ ∗ x ⃗ + b ∗ ) f(x) = sign(\vec W^* *\vec x + b^* ) f(x)=sign(W x +b)称为支持向量机。通过定义可以看到只要求出 w ⃗ ∗ \vec w^* w , 和 b ∗ b^* b,便可得到线性可分支持向量机的分类超平面。在讲解如何求这两个变量时,先考虑间隔最大化中相关的两个概念:函数间隔和几何间隔。
小那提问:为何要找到间隔最大的分离超平面呢?因为间隔最大的分离超平面不仅可以正确分类训练数据,而且使训练数据中的每个点都离超平面尽可能地远。实现这个目的是因为样本点距离超平面越远,其被分类的可信度就越高,距离超平面变近,其被分类的可信度也就随之降低。找到间隔最大的分离超平面可以使离超平面最近的样本点也可以以最大的可信度被正确分类。
       小那提问:那这个目的如何用数学形式化的表述呢?对于可信度可以用样本点到超平面的距离公式表示: ∣ w ⃗ ∗ x ⃗ + b ∣ |\vec w * \vec x + b| w x +b,是否正确分类数据可以使用 ( w ⃗ ∗ x ⃗ + b ) (\vec w * \vec x + b) (w x +b)与y的符号是否相同来表示。于是,使用 y ∗ ( w ⃗ ∗ x ⃗ + b ) y*(\vec w * \vec x + b) y(w x +b)既表示了分类的正确性,也表示了分类的确信度,也就有了函数间隔的概念。
定义(函数间隔): 给定训练数据集T和超平面 ( w ⃗ , b ) (\vec w, b) (w ,b),定义超平面关于样本点 ( x ⃗ i , y i ) (\vec x_i, y_i) (x i,yi)的函数间隔为: γ i ^ = y i ∗ ( w ⃗ ∗ x ⃗ i + b ) \hat {\gamma_i} = y_i*(\vec w * \vec x_i + b) γi^=yi(w x i+b),定义超平面关于训练数据集的函数间隔为超平面关于所有样本点的函数间隔的最小值,即为: γ ^ = m i n γ i ^ \hat{\gamma} = min \hat {\gamma_i} γ^=minγi^
       小那提问:那这个有问题哦,如果 w ⃗ ∗ \vec w^* w b ∗ b^* b成倍的增加,超平面是没有变的,但是样本点的函数间隔却一样的成倍增加,是不是不太合理?确实是这样,为了避免这个,我们将给函数间隔加上一个约束 ∣ ∣ w ⃗ ∣ ∣ ||\vec w|| w ,使用函数间隔除以 ∣ ∣ w ⃗ ∣ ∣ ||\vec w|| w ,这样即使 w ⃗ ∗ \vec w^* w b ∗ b^* b成倍的增加,样本点到超平面的间隔也不会变化,我们称这个间隔为几何间隔。详细定义如下:
定义(几何间隔): 给定训练数据集T和超平面 ( w ⃗ , b ) (\vec w, b) (w ,b),定义超平面关于样本点 ( x ⃗ i , y i ) (\vec x_i, y_i) (x i,yi)的几何间隔为:
γ i = y i ∗ ( w ⃗ ∣ ∣ w ⃗ ∣ ∣ ∗ x ⃗ i + b ∣ ∣ w ⃗ ∣ ∣ ) {\gamma_i} = y_i*(\frac{ \vec w}{||\vec w|| }* \vec x_i + \frac{ b}{||\vec w|| }) γi=yi(w w x i+w b)
定义超平面关于训练数据集的几何间隔为超平面关于所有样本点的几何间隔的最小值,即为:
γ = m i n γ i {\gamma} = min {\gamma_i} γ=minγi
       几何间隔实际上就是样本点到超平面的带符号的距离,学习算法中的间隔最大中的间隔也就是几何间隔,且 γ = γ ^ ∣ ∣ w ⃗ ∣ ∣ \gamma = \frac{\hat \gamma}{||\vec w||} γ=w γ^.到现在为止,我们知道了支持向量机要求解的内容,以及几何间隔和函数间隔的概念以及含义。那么下一个问题就是,如何求解间隔最大的分离超平面呢,其实就是使超平面关于训练数据的几何间隔达到最大,用数学形式化定义则是如下的问题了:
m a x γ max \gamma maxγ
s . t . y i ∗ ( w ⃗ ∣ ∣ w ⃗ ∣ ∣ ∗ x ⃗ i + b ∣ ∣ w ⃗ ∣ ∣ ) ≥ γ , i = 1 , . . . , N s.t. y_i * (\frac{ \vec w}{||\vec w|| }* \vec x_i + \frac{ b}{||\vec w|| }) \ge \gamma, i = 1, ..., N s.t.yi(w w x i+w b)γ,i=1,...,N
看一下这个约束问题怎么求解呢,很头疼,于是便想办法将问题约束问题简化,看到不等式约束中含有除项,可以将几何间隔转化为函数间隔将其去掉,变成了如下约束问题:
m a x γ ^ ∣ ∣ w ⃗ ∣ ∣ max\frac {\hat \gamma}{||\vec w||} maxw γ^
s . t . y i ∗ ( w ⃗ ∗ x ⃗ i + b ) ≥ γ ^ , i = 1 , . . . , N s.t. y_i * (\vec w* \vec x_i + b) \ge \hat\gamma, i = 1, ..., N s.t.yi(w x i+b)γ^,i=1,...,N
       看一下这个约束问题,如果将函数间隔增大 λ \lambda λ被,那么对约束问题其实没有任何的影响,那我们为了方便计算完全可以取函数间隔 γ ^ = 1 \hat\gamma=1 γ^=1, 之后还有一个变化,是将 m a x 1 ∣ ∣ w ⃗ ∣ ∣ max \frac{1}{||\vec w||} maxw 1转化为对偶问题 m i n 1 2 ∣ ∣ w ⃗ ∣ ∣ 2 min \frac{1}{2}||\vec w||^2 min21w 2,为啥要这样做呢,肯定是为了方便运算或者转化成了求解很成熟的问题,其实是为了将约束问题的求解转化为定义中的求解凸二次规划的最优化问题。
小那提问:那么什么是凸二次规划问题呢,摸摸头,沉下心了解一下基础概念,要从凸优化问题说起。

  • 凸集: 给定集合D,设 x , y ∈ D x, y \in D x,yD, 任意的 θ ∈ ( 0 , 1 ) \theta \in (0, 1) θ(0,1), 则 θ ∗ x + ( 1 − θ ) y ∈ D \theta * x + (1-\theta)y \in D θx+(1θ)yD,那么集合D就称为凸集,上个图就明白了:
    在这里插入图片描述
  • 凸函数:函数f(x)为凸函数的前提当然是定义域D是凸集啦,且和凸集描述异曲同工:就是设 x , y ∈ D , θ ∈ ( 0 , 1 ) x, y \in D, \theta \in (0, 1) x,yD,θ(0,1), 则 f ( θ ∗ x + ( 1 − θ ) y ) ≤ θ ∗ f ( x ) + ( 1 − θ ) ∗ f ( y ) f(\theta * x + (1-\theta)y) \le \theta * f(x) + (1-\theta) *f(y) f(θx+(1θ)y)θf(x)+(1θ)f(y), 含义也很清晰,就是下图这类:
    在这里插入图片描述
           - 凸优化问题:其实就是求一个目标函数的极值,然后定义域D是有约束函数约束的。其中目标函数和不等式约束函数是凸函数,等式约束函数是仿射函数(线性函数), 这样的最优化问题就叫做凸优化问题: m i n f ( x ) min f(x) minf(x) s . t . g i ( x ) ≤ 0 , i = 1 , 2 , . . . , m s.t. g_i(x) \le 0 ,i=1, 2,...,m s.t.gi(x)0,i=1,2,...,m h i ( x ) = 0 , i = 1 , 2 , . . . , n h_i(x)=0, i=1, 2,...,n hi(x)=0,i=1,2,...,n
    凸优化问题可以根据目标函数和不等式约束函数的不同而进行分类:当目标函数f(x)和不等式约束函数g(x)都是放射函数(线性函数)时,凸优化问题称为线性规划;当目标函数f(x)是二次函数,不等式约束函数g(x)是仿射函数时,凸优化问题称为二次规划问题,正是本文中要求解的问题;当目标函数f(x)和不等式约束函数g(x)为二次函数时,称为二次约束的二次规划问题。那么现在小那,什么是凸二次规划问题呢?小那:就是凸优化问题,且目标函数是二次函数,不等式约束函数为仿射函数。
    回归正传,刚刚我们将求超平面的问题转化为了求 m a x γ ^ ∣ ∣ w ⃗ ∣ ∣ max\frac {\hat \gamma}{||\vec w||} maxw γ^的问题,并可以将 γ ^ \hat \gamma γ^取值为1,将目标函数的最大值转化为 m i n 1 2 ∣ ∣ w ⃗ ∣ ∣ 2 min \frac{1}{2}||\vec w||^2 min21w 2就可以将最优化问题转化为凸二次规划问题: m i n 1 2 ∣ ∣ w ⃗ ∣ ∣ 2 min\frac{1}{2}||\vec w||^2 min21w 2 s . t . 1 − y i ( w ⃗ ∗ x i + b ) ≤ 0 s.t. 1 - y_i(\vec w * x_i + b) \le 0 s.t.1yi(w xi+b)0
    小那举手:那么为啥要把求解超平面的问题转化为凸二次规划问题呢?凸优化问题有啥优点哦?
    这里补充一下凸优化问题的优点,凸优化问题的最优解是唯一的,局部最优解就是全局最优解,且凸优化问题的求解方法已经很成熟,容易求解,所以好多难求解的问题都是通过将其转化为优化问题进而求解。所以支持向量机的学习算法就转化为了求解上述凸二次规划问题。在求解这个问题前,应该去证明这个间隔最大的分离超平面存在且唯一,因为证明过程比较多,且不是本文的重点,小那不在这里累述了。

凸二次规划问题求解

       如何求解上述凸二次规划的最优化问题呢?最常用的方法就是使用广义拉格朗日函数干掉约束最优化中的约束函数,变成可求解的一个函数,广义拉格朗日函数是这样的:
设原约束问题如下: m i n f ( x ) min f(x) minf(x) s . t . g i ( x ) ≤ 0 , i = 1 , 2 , . . . , m s.t. g_i(x) \le 0, i=1, 2,..., m s.t.gi(x)0,i=1,2,...,m s . t . h i ( x ) = 0 , i = 1 , 2 , . . . , n s.t. h_i(x) = 0, i = 1,2,...,n s.t.hi(x)=0,i=1,2,...,n
则约束问题的广义拉格朗日函数为: L ( x , α , β ) = f ( x ) + ∑ i = 1 m α i g i ( x ) + ∑ j = 1 n β j h j ( x ) , L(x, \alpha, \beta) = f(x) +\sum_{i=1}^{m} \alpha_i g_i(x) + \sum_{j=1}^{n}\beta_jh_j(x), L(x,α,β)=f(x)+i=1mαigi(x)+j=1nβjhj(x), i = 0 , 1 , . . . , m ; j = 0 , 1 , . . . , n i = 0,1,...,m;j=0,1,...,n i=0,1,...,m;j=0,1,...,n
       仔细想想讲是为了简化将多个约束函数通目标函数统一为一个函数来求解,这就是拉格朗日函数存在的意义。大佬们说了这个函数很厉害,我们就将支持向量机的凸二次规划问题转化为广义拉格朗日函数:
L ( w ⃗ , b , α ⃗ ) = 1 2 ∣ ∣ w ⃗ ∣ ∣ 2 + ∑ i = 1 n α i − ∑ i = 1 n α i y i ( w ⃗ ∗ x ⃗ i + b ) ) L(\vec w, b, \vec \alpha) = \frac{1}{2}||\vec w||^2 + \sum_{i=1}^{n}\alpha_i- \sum_{i=1}^{n}\alpha_iyi(\vec w * \vec x_i + b)) L(w ,b,α )=21w 2+i=1nαii=1nαiyi(w x i+b))
       最神奇的地方是,当特征向量 x ⃗ \vec x x 满足约束条件时, L ( w ⃗ , b , α ⃗ ) L(\vec w, b, \vec \alpha) L(w ,b,α ) α 为 自 变 量 , \alpha为自变量, α取最大值等价与目标函数f(x),所以凸二次规划目标函数最优化 m i n f ( w ⃗ ) = m i n w ⃗ , b minf(\vec w)=min_{\vec w,b} minf(w )=minw ,b 1 2 w ⃗ \frac{1}{2}\vec w 21w 变成了 m i n w ⃗ , b min_{\vec w, b} minw ,b m a x α L ( w ⃗ , b , α ⃗ ) max_\alpha L(\vec w, b, \vec \alpha) maxαL(w ,b,α ),于是通过广义拉格朗日函数又将约束问题转化为了: m i n w ⃗ , b m a x α L ( w ⃗ , b , α ⃗ ) = m i n w ⃗ , b m a x α 1 2 ∣ ∣ w ⃗ ∣ ∣ 2 + ∑ i = 1 n α i − ∑ i = 1 n α i y i ( w ⃗ ∗ x ⃗ i + b ) ) min_{\vec w, b} max_\alpha L(\vec w, b, \vec \alpha) = min_{\vec w, b} max_\alpha \frac{1}{2}||\vec w||^2 + \sum_{i=1}^{n}\alpha_i- \sum_{i=1}^{n}\alpha_iyi(\vec w * \vec x_i + b)) minw ,bmaxαL(w ,b,α )=minw ,bmaxα21w 2+i=1nαii=1nαiyi(w x i+b)), 此式称为拉格朗日函数的原始问题,看看咋求这个原始问题啊,里面先对 α \alpha α求最大值,其实什么还是什么也得不到。所以为了方便求解,就又找上式的替代式:原始问题的对偶问题,是将最大值与最小值转换求解顺序,将原始问题转化为
m a x α m i n w ⃗ , b L ( w ⃗ , b , α ⃗ ) = m a x α m i n w ⃗ , b 1 2 ∣ ∣ w ⃗ ∣ ∣ 2 + ∑ i = 1 n α i − ∑ i = 1 n α i y i ( w ⃗ ∗ x ⃗ i + b ) ) max_\alpha min_{\vec w, b} L(\vec w, b, \vec \alpha) = max_\alpha min_{\vec w, b} \frac{1}{2}||\vec w||^2 + \sum_{i=1}^{n}\alpha_i- \sum_{i=1}^{n}\alpha_iyi(\vec w * \vec x_i + b)) maxαminw ,bL(w ,b,α )=maxαminw ,b21w 2+i=1nαii=1nαiyi(w x i+b))
最小值问题对变量求偏导等于0,然后将 w ⃗ , b \vec w, b w ,b重新带入拉格朗日函数,再求最大值,便可以求出对偶问题取最优值时 α \alpha α的值,也就可以反向求解出 w ⃗ , b \vec w, b w ,b的值。小那提问:这个是原始问题的对偶问题的解,不是原始问题的解!!!这里有一个定理:存在变量 w ⃗ ∗ , b ∗ , α ⃗ ∗ \vec w^*, b^*, \vec \alpha^* w ,b,α ,使得 w ⃗ ∗ , b ∗ \vec w^*, b^* w ,b为原始问题的解, α ⃗ ∗ \vec \alpha^* α 是对偶问题的解,且原始问题的最优值等于对偶问题的最优值的充要条件是 w ⃗ ∗ , b ∗ , α ⃗ ∗ \vec w^*, b^*, \vec \alpha^* w ,b,α 满足KTT条件:
▽ w ⃗ L ( w ⃗ ∗ , b ∗ , α ⃗ ∗ ) = 0 ; \bigtriangledown_{\vec w}L(\vec w^*, b^*, \vec \alpha^*)=0; w L(w ,b,α )=0; ▽ b L ( w ⃗ ∗ , b ∗ , α ⃗ ∗ ) = 0 ; \bigtriangledown_{b}L(\vec w^*, b^*, \vec \alpha^*)=0; bL(w ,b,α )=0; α i ∗ ≥ 0 , i = 1 , . . . , n ; \alpha_i^* \ge 0, i=1, ...,n; αi0,i=1,...,n; α i ∗ [ 1 − y i ( w ⃗ ∗ x i + b ∗ ) ] = 0 ; \alpha_i^*[1-y_i(\vec w^* x_i + b^*)]=0; αi[1yi(w xi+b)]=0; 1 − y i ( w ⃗ ∗ x i + b ∗ ) ≤ 0 1-y_i(\vec w^* x_i + b^*) \le 0 1yi(w xi+b)0
       本内容不讨论此定理的证明哈,这个KTT条件的原题使用了本例子哈。有了这个定理,我们就可以放心的求解对偶函数,只要我们使用对偶函数求出了变量 α ⃗ ∗ \vec \alpha^* α ,再利用KTT条件,求得分离超平面 ( w ⃗ ∗ , b ∗ ) (\vec w^*, b^*) (w ,b)。下面按照上述思路进行求解拉格朗日函数原始问题的对偶问题:
m a x α m i n w ⃗ , b L ( w ⃗ , b , α ⃗ ) max_\alpha min_{\vec w, b} L(\vec w, b, \vec \alpha) maxαminw ,bL(w ,b,α ) s . t . α i ≥ 0 s.t. \alpha_i \ge 0 s.t.αi0

(1)先求 m i n w ⃗ , b L ( w ⃗ , b , α ⃗ ) min_{\vec w, b} L(\vec w, b, \vec \alpha) minw ,bL(w ,b,α )
拉格朗日函数对 w ⃗ , b \vec w, b w ,b求偏导,结果为:
{ w ⃗ ∗ = ∑ i = 1 n α i ∗ y i x ⃗ i ∑ i = 1 n α i ∗ y i = 0 \begin{cases} \vec w^* = \sum_{i=1}^{n} \alpha_i^* y_i \vec x_i\\ \sum_{i=1}^{n} \alpha_i^* y_i =0\\ \end{cases} {w =i=1nαiyix ii=1nαiyi=0
将第一个式子带入到拉格朗日函数得 L ( w ⃗ , b , α ⃗ ) = − 1 2 ∑ i = 1 n ∑ j = 1 n α i α j y i y j ( x ⃗ i ∗ x ⃗ j ) + ∑ i = 1 n α i L(\vec w, b, \vec \alpha) = -\frac{1}{2}\sum_{i=1}^{n}\sum_{j=1}^{n}\alpha_i\alpha_jy_iy_j(\vec x_i *\vec x_j) + \sum_{i=1}^{n}\alpha_i L(w ,b,α )=21i=1nj=1nαiαjyiyj(x ix j)+i=1nαi
所以得到了结果:
m i n w ⃗ , b L ( w ⃗ , b , α ⃗ ) = − 1 2 ∑ i = 1 n ∑ j = 1 n α i α j y i y j ( x ⃗ i ∗ x ⃗ j ) + ∑ i = 1 n α i min_{\vec w, b} L(\vec w, b, \vec \alpha) = -\frac{1}{2}\sum_{i=1}^{n}\sum_{j=1}^{n}\alpha_i\alpha_jy_iy_j(\vec x_i *\vec x_j) + \sum_{i=1}^{n}\alpha_i minw ,bL(w ,b,α )=21i=1nj=1nαiαjyiyj(x ix j)+i=1nαi

(2) 求 m i n w ⃗ , b L ( w ⃗ , b , α ⃗ ) min_{\vec w, b} L(\vec w, b, \vec \alpha) minw ,bL(w ,b,α ) α \alpha α的最大值, 就是求如下的函数:
m a x α − 1 2 ∑ i = 1 n ∑ j = 1 n α i α j y i y j ( x ⃗ i ∗ x ⃗ j ) + ∑ i = 1 n α i max_\alpha -\frac{1}{2}\sum_{i=1}^{n}\sum_{j=1}^{n}\alpha_i\alpha_jy_iy_j(\vec x_i *\vec x_j) + \sum_{i=1}^{n}\alpha_i maxα21i=1nj=1nαiαjyiyj(x ix j)+i=1nαi
       上述结果是对变量 α \alpha α的极大值问题,x与y都是训练数据,所以是对单变量的极大极小值问题,也就比较容易求解。
通过求解对偶问题,即极大极小值问题得到了拉格朗日因子 α ⃗ \vec \alpha α ,通过KTT条件知道存在 w ⃗ , b \vec w, b w ,b是原始问题的解,KTT条件中的 α i ∗ [ 1 − y i ( w ⃗ ∗ x i + b ∗ ) ] = 0 ; \alpha_i^*[1-y_i(\vec w^* x_i + b^*)]=0; αi[1yi(w xi+b)]=0;等式,我们可以选取任意大于零的 α ⃗ i \vec \alpha_i α i,是得对应的 1 − y i ( w ⃗ ∗ x i + b ∗ ) 1-y_i(\vec w^* x_i + b^*) 1yi(w xi+b)=0;又通过上述得等式 w ⃗ ∗ = ∑ i = 1 n α i ∗ y i x ⃗ i \vec w^* = \sum_{i=1}^{n} \alpha_i^* y_i \vec x_i w =i=1nαiyix i便可分别求得两个参数,也就得到了线性可分支持向量机的分离超平面与决策函数。
       总结一下整体的求解超平面的步骤:1. 构造约束最优化问题,也就是对偶问题 2. 通过求解得到的拉格朗日因子 α \alpha α得得到变量 w ⃗ , b \vec w, b w ,b; 3. 求得分离超平面与决策函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值