【机器学习】支持向量机详解,附带案例

  • Post author:
  • Post category:其他




前言




\quad\quad













支持向量机基本思想就是

间隔最大化

,看上去很简单,但是要想理解它并不是很容易。本篇将由基本概念出发,对公式进行推导,然后通过一些案例加以展示来介绍支持向量机。本篇篇幅比较长,需耐心仔细看完,适当动手跟着推导及代码实现。

由于博主也在学习中,所以本篇中难免会有些理解错误的地方,还望大家赐教,共同学习。

本篇的代码可见:

Github



一、

SVM

涉及的概念




\quad\quad













支持向量机(support vector machines,SVM)是一种二类分类模型。它的

基本模型



定义在特征空间上的间隔最大的线性分类器

,支持向量机的学习策略就是

间隔最大化

,可形式化为求解

凸二次规划的问题



1、分类任务




\quad\quad













分类任务就是确定对象属于哪个预定义的目标类。分类任务的输入数据是记录的集合,每条记录也称为实例或样例,用元祖



(

x

,

y

)

(x,y)






(


x


,




y


)





表示,其中



x

x






x





是属性的集合,



y

y






y





是类标记(也称目标属性)。在回归模型中,目标属性值是连续的;而在分类模型中,目标属性时离散的。

考虑二分类任务,其目标属性为



y

{

0

,

1

}

y \in \{0,1\}






y













{



0


,




1


}





,而线性回归模型参数的预测值



z

=

w

T

x

+

b

z = w^Tx+b






z




=









w










T









x




+








b





是实值,于是我们需要将实值



z

z






z





转换为目标属性值 0 或 1 。当然最理想的就是单位阶跃函数,但是单位阶跃函数不连续,于是使用

sigmoid函数

作为替代函数。

在这里插入图片描述


sigmoid函数

表达式如下:





g

(

z

)

=

1

1

+

e

z

g(z) = \frac{1}{1 + e^{-z}}






g


(


z


)




=



















1




+





e














z






















1
























Logistic回归

目的是从特征中学习出一个 0/1 分类模型,而这个分类模型是将特征的线性组合作为自变量,由于自变量的取值范围是



(

,

+

)

(-\infty, + \infty)






(








,




+





)





。因此,使用

sigmoid函数

将自变量映射到



(

0

,

1

)

(0,1)






(


0


,




1


)





上,映射后的值被认为是属于



y

=

1

y = 1






y




=








1





的概率。

假设函数为:





h

θ

(

x

)

=

g

(

θ

T

x

)

=

1

1

+

e

θ

T

x

h_\theta(x) = g(\theta^Tx) = \frac{1}{1 + e^{-\theta^Tx}}







h










θ


















(


x


)




=








g


(



θ










T









x


)




=



















1




+





e















θ










T









x






















1























根据

sigmoid函数

的特性,假设:





p

(

y

=

1

x

;

θ

)

=

h

θ

(

x

)

p(y=1|x;\theta) = h_{\theta}(x)






p


(


y




=








1





x


;




θ


)




=









h











θ



















(


x


)











p

(

y

=

0

x

;

θ

)

=

1

h

θ

(

x

)

p(y=0|x;\theta) =1 – h_{\theta}(x)






p


(


y




=








0





x


;




θ


)




=








1














h











θ



















(


x


)





上式表示,已知样本



x

x






x





和参数



θ

\theta






θ





的情况下,样本



x

x






x





属于正样本 (



y

=

1

y = 1






y




=








1





)和负样本(



y

=

0

y = 0






y




=








0





)的条件概率。若



h

θ

(

x

)

>

0.5

h_\theta(x) > 0.5







h










θ


















(


x


)




>








0


.


5





则属于正样本,反之属于负样本。

进一步的,



h

θ

(

x

)

h_\theta(x)







h










θ


















(


x


)





只和



θ

T

x

\theta^Tx







θ










T









x





有关,



θ

T

x

>

0

\theta^Tx>0







θ










T









x




>








0





,那么



h

θ

(

x

)

>

0.5

h_\theta(x) > 0.5







h










θ


















(


x


)




>








0


.


5





,而



g

(

z

)

g(z)






g


(


z


)





只是用来映射的,真实的类别决定权在于



θ

T

x

\theta^Tx







θ










T









x





。当



θ

T

x

0

\theta^Tx \gg 0







θ










T









x













0





时,



h

θ

(

x

)

h_\theta(x)







h










θ


















(


x


)





趋于1,反之趋于0。如果我们只从



θ

T

x

\theta^Tx







θ










T









x





出发,那么模型应该尽可能的让训练数据中



y

=

1

y =1






y




=








1





的特征



θ

T

x

0

\theta^Tx \gg 0







θ










T









x













0





,而



y

=

0

y = 0






y




=








0





的特征



θ

T

x

0

\theta^Tx \ll 0







θ










T









x













0






Logistic回归

就是要学习得到参数



θ

\theta






θ





,使得正例的特征远远大于0,负例的特征远远小于0,而且要在全部训练数据上达到这个目标。

接下来,尝试把

Logistic回归

做个变形:

  • 首先将目标属性



    y

    {

    0

    ,

    1

    }

    y \in \{0,1\}






    y













    {



    0


    ,




    1


    }





    替换为



    y

    {

    1

    ,

    1

    }

    y \in \{-1,1\}






    y













    {






    1


    ,




    1


    }









  • θ

    T

    x

    =

    θ

    0

    +

    θ

    1

    x

    1

    +

    θ

    2

    x

    2

    +

    .

    .

    .

    +

    θ

    n

    x

    n

    \theta^Tx = \theta_0 + \theta_1 x_1+ \theta_2 x_2+…+ \theta_n x_n







    θ










    T









    x




    =









    θ










    0




















    +









    θ










    1



















    x










    1




















    +









    θ










    2



















    x










    2




















    +








    .


    .


    .




    +









    θ










    n



















    x










    n

























    θ

    0

    \theta_0







    θ










    0





















    替换为



    b

    b






    b





  • 最后将



    θ

    1

    x

    1

    +

    θ

    2

    x

    2

    +

    .

    .

    .

    +

    θ

    n

    x

    n

    \theta_1 x_1+ \theta_2 x_2+…+ \theta_n x_n







    θ










    1



















    x










    1




















    +









    θ










    2



















    x










    2




















    +








    .


    .


    .




    +









    θ










    n



















    x










    n





















    替换为



    w

    T

    x

    =

    θ

    1

    x

    1

    +

    θ

    2

    x

    2

    +

    .

    .

    .

    +

    θ

    n

    x

    n

    w^Tx = \theta_1 x_1+ \theta_2 x_2+…+ \theta_n x_n







    w










    T









    x




    =









    θ










    1



















    x










    1




















    +









    θ










    2



















    x










    2




















    +








    .


    .


    .




    +









    θ










    n



















    x










    n





















  • 得到



    θ

    T

    x

    =

    w

    T

    x

    +

    b

    \theta^Tx =w^Tx +b







    θ










    T









    x




    =









    w










    T









    x




    +








    b





就是说,除了



y

y






y





由 0 变为 -1,线性分类函数跟

Logistic回归

的形式化表示



h

θ

(

x

)

=

g

(

θ

T

x

)

=

g

(

w

T

x

+

b

)

h_\theta(x) = g(\theta^Tx) = g(w^Tx +b)







h










θ


















(


x


)




=








g


(



θ










T









x


)




=








g


(



w










T









x




+








b


)





没区别。

将假设函数



h

w

,

b

(

x

)

=

g

(

w

T

x

+

b

)

h_{w,b}(x) = g(w^Tx+b)







h











w


,


b



















(


x


)




=








g


(



w










T









x




+








b


)





中的



g

(

z

)

g(z)






g


(


z


)





做一个简化,将其映射到



y

=

1

y = -1






y




=











1









y

=

1

y = 1






y




=








1





上,映射如下:





g

(

z

)

=

{

1

,

z

0

1

,

z

<

0

g(z) = \begin{cases} 1,& z \geqslant 0 \\ -1, & z < 0 \end{cases}






g


(


z


)




=










{














1


,











1


,



























z









0








z




<




0



























2、线性分类器


线性可分数据集:

存在某个超平面S能够将数据集的正实例和负实例完全划分到超平面的两侧,则称为线性可分数据集;否则,线性不可分。

在这里插入图片描述

如上图,这些数据就是线性可分的,所以可以用一条直线将这两类数据分开,二维中是一条直线,在多维中就是一个超平面。

这个超平面可以用分类函数



f

(

x

)

=

w

T

x

+

b

f(x) = w^Tx + b






f


(


x


)




=









w










T









x




+








b





表示,在进行分类时,将



x

x






x





代入



f

(

x

)

f(x)






f


(


x


)





中,如果



f

(

x

)

=

0

f(x) = 0






f


(


x


)




=








0





表示数据点在超平面上;



f

(

x

)

&gt;

0

f(x) &gt; 0






f


(


x


)




>








0





对应



y

=

1

y =1






y




=








1





的数据点;



f

(

x

)

&lt;

0

f(x) &lt; 0






f


(


x


)




<








0





对应



y

=

1

y=-1






y




=











1





的数据点。



3、

SVM

在做什么?

在这里插入图片描述




\quad\quad













假定给定数据如上图,圆的为正类,方的为负类,要想通过一个划分超平面(这里是二维,所以是条直线)将不同类别的样本分开。从图中我们就可以看出,能将训练样本分开的划分超平面可能有很多,但是我们应该去选择哪一个呢?




\quad\quad













直观上,我们应该选择中间红色的那个,因为它对于训练样本局部扰动的“容忍”性最好,比如,训练集外的样本可能比图中的样本更接近两类的划分超平面,这将使许多划分超平面出现错误,而红色的超平面受到的影响是最小的,也就是说,这个划分超平面的分类结果是最鲁棒的,对未知示例的泛化能力最强。




\quad\quad













找出这个划分超平面就成了关键,之前我们介绍的

感知机(点击链接)

也是寻找这个超平面,将训练集划分开,但是感知机利用误分类最小的策略,求得划分超平面,而且解有无穷多个;在所有的划分超平面中,有一个平面是最好的,它可以尽可能地让所有的样本点都离该划分超平面最远,这就是

SVM

要做的。



4、函数间隔

在这里插入图片描述

如图,有三个实例



A

B

C

A、B、C






A





B





C





均在划分超平面的正类一侧,预测它们的类,点



A

A






A





距离超平面较远,若预测为正类,就比较确信预测是正确的;点



C

C






C





距离超平面较近,若预测为正类就不那么确信了;点



B

B






B





介于



A

C

A、C






A





C





之间,预测其为正类的确信度也在



A

C

A、C






A





C





之间。



一般来说,一个点距离超平面的远近可以相对地表示分类预测的确信程度。

我们注意到:当一个点



x

x






x





被正确预测时,那么



w

x

+

b

wx+b






w


x




+








b





的符合与类标记



y

y






y





的符号相同。

所以可用



y

(

w

x

+

b

)

y(w\cdot x+b)






y


(


w













x




+








b


)





来表示分类的正确性及确信度。

对于给定的训练数据集



T

T






T





和超平面



(

w

,

b

)

(w,b)






(


w


,




b


)







(1)定义超平面



(

w

,

b

)

(w,b)






(


w


,




b


)





关于样本点



(

x

i

,

y

i

)

(x_i,y_i)






(



x










i


















,





y










i


















)







函数间隔

为:





δ

i

=

y

i

(

w

x

i

+

b

)

\delta_i = y_i(w \cdot x_i+b)







δ










i




















=









y










i


















(


w














x










i




















+








b


)





(2)定义超平面



(

w

,

b

)

(w,b)






(


w


,




b


)





关于训练数据集



T

T






T





的函数间隔为超平面 $(w,b) $关于



T

T






T





中所有样本点



(

x

i

,

y

i

)

(x_i,y_i)






(



x










i


















,





y










i


















)





的函数间隔之

最小值

,即:





δ

=

min

i

=

1

,

2

,

.

.

.

,

N

δ

i

\delta = \min_{i = 1,2,…,N}\delta_i






δ




=

















i


=


1


,


2


,


.


.


.


,


N









min




















δ










i























函数间隔可以表示分类预测的正确性和确信度



5、几何间隔(点到超平面距离)

样本空间中任意点



x

x






x





到超平面



(

w

,

b

)

(w,b)






(


w


,




b


)





的距离可写为:





r

=

w

T

x

+

b

w

r = \frac{|w^Tx+b|}{||w||}






r




=

























w
























w










T









x




+




b



























补充:





x

0

x_0







x










0





















到超平面



S

:

w

x

+

b

=

0

S:wx+b=0






S




:








w


x




+








b




=








0





的距离



d

d






d





:





  • x

    0

    x_0







    x










    0

























    S

    S






    S





    上面的投影为



    x

    1

    x_1







    x










    1





















    ,则



    w

    x

    1

    +

    b

    =

    0

    wx_1+b=0






    w



    x










    1




















    +








    b




    =








    0





  • 由向量



    x

    0

    x

    1

    \vec{x_0x_1}















    x










    0



















    x










    1

















































    S

    S






    S





    平面的法向量平行:





    w

    x

    0

    x

    1

    =

    (

    w

    1

    )

    2

    +

    (

    w

    2

    )

    2

    +

    .

    .

    .

    +

    (

    w

    N

    )

    2

    d

    =

    w

    d

    |w \cdot \vec{x_0x_1}| = \sqrt{(w^1)^2 + (w^2)^2+…+(w^N)^2}d = ||w||d









    w






















    x










    0



















    x










    1















































    =
















    (



    w










    1










    )










    2











    +




    (



    w










    2










    )










    2











    +




    .


    .


    .




    +




    (



    w










    N










    )










    2































    d




    =














    w








    d








  • w

    L

    2

    ||w||为L_2范数












    w












    L










    2


























  • 又:





    w

    x

    0

    x

    1

    =

    w

    1

    (

    x

    0

    1

    x

    1

    1

    )

    +

    w

    2

    (

    x

    0

    2

    x

    1

    2

    )

    +

    .

    .

    .

    +

    w

    N

    (

    x

    0

    N

    x

    1

    N

    )

    w \cdot \vec{x_0x_1} = w^1(x_0^1-x_1^1)+w^2(x_0^2-x_1^2)+…+w^N(x_0^N-x_1^N)






    w






















    x










    0



















    x










    1












































    =









    w










    1









    (



    x










    0








    1






























    x










    1








    1


















    )




    +









    w










    2









    (



    x










    0








    2






























    x










    1








    2


















    )




    +








    .


    .


    .




    +









    w










    N









    (



    x










    0








    N






























    x










    1








    N


















    )











    =

    w

    1

    x

    0

    1

    +

    w

    2

    x

    0

    2

    +

    .

    .

    .

    +

    w

    N

    x

    0

    N

    (

    w

    1

    x

    1

    1

    +

    w

    2

    x

    1

    2

    +

    .

    .

    .

    +

    w

    N

    x

    1

    N

    )

    =w^1x_0^1+w^2x_0^2+…+w^Nx_0^N-(w^1x_1^1+w^2x_1^2+…+w^Nx_1^N)






    =









    w










    1










    x










    0








    1




















    +









    w










    2










    x










    0








    2




















    +








    .


    .


    .




    +









    w










    N










    x










    0








    N





























    (



    w










    1










    x










    1








    1




















    +









    w










    2










    x










    1








    2




















    +








    .


    .


    .




    +









    w










    N










    x










    1








    N


















    )





  • 又有:



    w

    x

    +

    b

    =

    0

    w \cdot x + b = 0






    w













    x




    +








    b




    =








    0










    =

    w

    1

    x

    0

    1

    +

    w

    2

    x

    0

    2

    +

    .

    .

    .

    +

    w

    N

    x

    0

    N

    (

    b

    )

    =w^1x_0^1+w^2x_0^2+…+w^Nx_0^N-(-b)






    =









    w










    1










    x










    0








    1




















    +









    w










    2










    x










    0








    2




















    +








    .


    .


    .




    +









    w










    N










    x










    0








    N





























    (





    b


    )





  • 故:





    w

    d

    =

    w

    x

    0

    +

    b

    ||w||d = |w \cdot x_0 + b|












    w








    d




    =











    w














    x










    0




















    +








    b














    d

    =

    w

    x

    0

    +

    b

    w

    d =\frac{|w \cdot x_0 + b|}{||w||}






    d




    =

























    w























    w










    x










    0




















    +




    b


























对于给定的训练数据集



T

T






T





和超平面



(

w

,

b

)

(w,b)






(


w


,




b


)







(1)定义超平面



(

w

,

b

)

(w,b)






(


w


,




b


)





关于样本点



(

x

i

,

y

i

)

(x_i,y_i)






(



x










i


















,





y










i


















)





的几何间隔为:





γ

i

=

y

i

(

w

w

x

i

+

b

w

)

\gamma_i = y_i(\frac{w}{||w||} \cdot x_i+\frac{b}{||w||})







γ










i




















=









y










i


















(



















w




















w
































x










i




















+

























w




















b




















)





(2)定义超平面



(

w

,

b

)

(w,b)






(


w


,




b


)





关于训练数据集



T

T






T





的几何间隔为超平面



(

w

,

b

)

(w,b)






(


w


,




b


)





关于



T

T






T





中所有样本点



(

x

i

,

y

i

)

(x_i,y_i)






(



x










i


















,





y










i


















)





的几何间隔之最小值,即:





γ

=

min

i

=

1

,

2

,

.

.

.

,

N

γ

i

\gamma = \min_{i = 1,2,…,N}\gamma_i






γ




=

















i


=


1


,


2


,


.


.


.


,


N









min




















γ










i





















几何间隔与函数间隔的关系:





γ

=

δ

w

\gamma = \frac{\delta}{||w||}






γ




=

























w




















δ























以上内容可参考:

点到直线的距离



6、支持向量




\quad\quad













训练数据集的样本点中与分离超平面距离最近的样本点的实例称为支持向量,即图中在黑色线上的实例点。

在这里插入图片描述



7、拉格朗日对偶性




\quad\quad













在约束最优化问题中,常常利用拉格朗日对偶性将原始问题转化为对偶问题。通过求解对偶问题而得到原始问题的解。




\quad\quad













支持向量机和最大熵模型都用用到,下面我们来简单介绍下拉格朗日对偶性的主要概念和结果。


1.原始问题:

假设



f

(

x

)

c

i

(

x

)

h

j

(

x

)

f(x),c_i(x),h_j(x)






f


(


x


)






c










i


















(


x


)






h










j


















(


x


)





是定义在



R

n

R^n







R










n












上的连续可微函数,考虑约束最优化问题:





min

x

R

n

f

(

x

)

\min_{x \in R^n} f(x)















x






R










n
















min



















f


(


x


)











s

.

t

.

c

i

(

x

)

0

i

=

1

,

2

,

.

.

.

,

k

s.t. c_i(x) \leqslant 0,i = 1,2,…,k






s


.


t


.



c










i


















(


x


)













0





i




=








1


,




2


,




.


.


.


,




k











h

j

(

x

)

=

0

j

=

1

,

2

,

.

.

.

,

l

h_j(x) = 0,j = 1,2,…,l







h










j


















(


x


)




=








0





j




=








1


,




2


,




.


.


.


,




l





称此约束最优化问题为原始最优化问题或原始问题。

首先,引进广义拉格朗日函数:





L

(

x

,

α

,

β

)

=

f

(

x

)

+

i

=

1

k

α

i

c

i

(

x

)

+

j

=

1

k

β

j

h

j

(

x

)

L(x,\alpha,\beta) = f(x) +\sum_{i=1}^{k}\alpha_ic_i(x)+\sum_{j=1}^{k}\beta_jh_j(x)






L


(


x


,




α


,




β


)




=








f


(


x


)




+

















i


=


1



















k





















α










i



















c










i


















(


x


)




+

















j


=


1



















k





















β










j



















h










j


















(


x


)





这里,



x

=

(

x

(

1

)

x

(

2

)

x

(

n

)

)

T

R

n

α

i

β

j

x=(x^{(1)},x^{(2)},。。。,x^{(n)})^T \in R^n, \alpha_i, \beta_j






x




=








(



x











(


1


)














x











(


2


)


























x











(


n


)











)










T





















R










n













α










i






















β










j





















是拉格朗日乘子,



α

i

0

\alpha_i \geqslant 0







α










i





























0





那么原始问题就是:





θ

p

(

x

)

=

max

α

,

β

:

α

i

0

L

(

x

,

α

,

β

)

\theta_p(x)=\max_{\alpha,\beta:\alpha_i \geqslant0} L(x,\alpha,\beta)







θ










p


















(


x


)




=

















α


,


β


:



α










i





















0









max



















L


(


x


,




α


,




β


)





假设给定某个



x

x






x





,如果



x

x






x





违反了约束条件,即存在某个



i

i






i





使得



c

i

(

w

)

&gt;

0

c_i(w)&gt;0







c










i


















(


w


)




>








0





或者存在某个



j

j






j





使得



h

j

(

w

)

0

h_j(w) \neq 0







h










j


















(


w


)

















̸





















=









0





,那么就有:





θ

p

(

x

)

=

max

α

,

β

:

α

i

0

L

(

x

,

α

,

β

)

=

+

\theta_p(x)=\max_{\alpha,\beta:\alpha_i \geqslant0} L(x,\alpha,\beta) = +\infty







θ










p


















(


x


)




=

















α


,


β


:



α










i





















0









max



















L


(


x


,




α


,




β


)




=








+








因为若某个



i

i






i





使得



c

i

(

w

)

&gt;

0

c_i(w)&gt;0







c










i


















(


w


)




>








0





,则可令



α

i

+

,

\alpha_i \rightarrow +\infty,







α










i





























+





,





若某个



j

j






j





使得



h

j

(

w

)

0

h_j(w) \neq 0







h










j


















(


w


)

















̸





















=









0





,则可令



β

j

\beta_j







β










j





















使



β

j

h

j

(

x

)

+

\beta_jh_j(x) \rightarrow +\infty







β










j



















h










j


















(


x


)













+








,而其余各



α

i

,

β

j

\alpha_i,\beta_j







α










i


















,





β










j





















均为0

相反地,如果满足约束条件,则



i

=

1

k

α

i

c

i

(

x

)

0

j

=

1

k

β

j

h

j

(

x

)

=

0

\sum_{i=1}^{k}\alpha_ic_i(x) \leqslant 0,\sum_{j=1}^{k}\beta_jh_j(x)=0



















i


=


1










k






















α










i



















c










i


















(


x


)













0




















j


=


1










k






















β










j



















h










j


















(


x


)




=








0





,由于



f

(

x

)

f(x)






f


(


x


)





加上一个小于等于的数,最大值就是加上0,所以



θ

p

(

x

)

=

f

(

x

)

\theta_p(x) = f(x)







θ










p


















(


x


)




=








f


(


x


)




综上:





θ

p

(

x

)

=

{

f

(

x

)

,

x

+

,

\theta_p(x) = \begin{cases} f(x), &amp; x满足原始问题约束 \\ +\infty, &amp; 其他\end{cases}







θ










p


















(


x


)




=










{














f


(


x


)


,








+





,



























x





























































所以,如果考虑极小化问题





min

x

θ

p

(

x

)

=

min

x

max

α

,

β

:

α

i

0

L

(

x

,

α

,

β

)

\min_x \theta_p(x) = \min_x \max_{\alpha,\beta : \alpha_i \geqslant 0}L(x,\alpha,\beta)














x








min




















θ










p


















(


x


)




=
















x








min




























α


,


β


:



α










i





















0









max



















L


(


x


,




α


,




β


)





它与原始问题最优化问题等价的,即他们有相同的解。这也称为广义拉格朗日 函数的极小极大问题。


2.对偶问题:


定义:





θ

D

(

α

,

β

)

=

min

x

L

(

x

,

α

,

β

)

\theta_D(\alpha,\beta)=\min_xL(x,\alpha,\beta)







θ










D


















(


α


,




β


)




=
















x








min



















L


(


x


,




α


,




β


)





再考虑极大化上式,即





max

α

,

β

:

α

i

0

θ

D

(

α

,

β

)

=

max

α

,

β

:

α

i

0

min

x

L

(

x

,

α

,

β

)

\max_{\alpha,\beta : \alpha_i \geqslant 0}\theta_D(\alpha,\beta)=\max_{\alpha,\beta : \alpha_i \geqslant 0}\min_xL(x,\alpha,\beta)















α


,


β


:



α










i





















0









max




















θ










D


















(


α


,




β


)




=

















α


,


β


:



α










i





















0









max



























x








min



















L


(


x


,




α


,




β


)





此称为广义拉格朗日函数的极大极小问题。

可以将广义拉格朗日函数的极大极小问题表示为约束最优化问题:





max

α

,

β

θ

D

(

α

,

β

)

=

max

α

,

β

min

x

L

(

x

,

α

,

β

)

\max_{\alpha,\beta }\theta_D(\alpha,\beta)=\max_{\alpha,\beta }\min_xL(x,\alpha,\beta)















α


,


β









max




















θ










D


















(


α


,




β


)




=

















α


,


β









max



























x








min



















L


(


x


,




α


,




β


)











s

.

t

.

α

i

0

i

=

1

,

2

,

.

.

.

,

k

s.t. \alpha_i \geqslant 0 ,i =1,2,…,k






s


.


t


.



α










i





























0





i




=








1


,




2


,




.


.


.


,




k







称为原始问题的对偶问题。


补充:

若原始问题和对偶问题都有最优解,则:





d

=

max

α

,

β

;

α

i

0

min

x

L

(

x

,

α

,

β

)

min

x

max

α

,

β

;

α

i

0

L

(

x

,

α

,

β

)

=

p

d^* = \max_{\alpha,\beta;\alpha_i \geqslant 0} \min_x L(x,\alpha, \beta) \leqslant \min_x \max_{\alpha,\beta;\alpha_i \geqslant 0} L(x, \alpha, \beta) = p^*







d






















=

















α


,


β


;



α










i





















0









max



























x








min



















L


(


x


,




α


,




β


)





















x








min




























α


,


β


;



α










i





















0









max



















L


(


x


,




α


,




β


)




=









p























对任意的



α

,

β

\alpha, \beta






α


,




β









x

x






x





,有:





θ

D

(

α

,

β

)

=

min

x

L

(

x

,

α

,

β

)

L

(

x

,

α

,

β

)

max

α

,

β

:

α

i

0

L

(

x

,

α

,

β

)

=

θ

p

(

x

)

\theta_D(\alpha,\beta)=\min_xL(x,\alpha,\beta) \leqslant L(x,\alpha,\beta) \leqslant \max_{\alpha,\beta:\alpha_i \geqslant0} L(x,\alpha,\beta) = \theta_p(x)







θ










D


















(


α


,




β


)




=
















x








min



















L


(


x


,




α


,




β


)













L


(


x


,




α


,




β


)






















α


,


β


:



α










i





















0









max



















L


(


x


,




α


,




β


)




=









θ










p


















(


x


)







即:





θ

D

(

α

,

β

)

θ

p

(

x

)

\theta_D(\alpha,\beta) \leqslant \theta_p(x)







θ










D


















(


α


,




β


)














θ










p


















(


x


)







由于原始问题和对偶问题都有最优解,所以:





max

α

,

β

:

α

i

0

θ

D

(

α

,

β

)

min

x

θ

p

(

x

)

\max_{\alpha,\beta:\alpha_i \geqslant0}\theta_D(\alpha,\beta) \leqslant \min_x\theta_p(x)















α


,


β


:



α










i





















0









max




















θ










D


















(


α


,




β


)





















x








min




















θ










p


















(


x


)







即:





d

p

d^* \leqslant p^*







d
































p


























\quad\quad













在满足某些条件下,原始问题和对偶问题的最优解相等,即



d

=

p

d^* = p^*







d






















=









p























,这是可以通过解对偶问题替代求原始问题,往往原始问题求解最优解比较困难,但是求它的对偶问题比较容易。




\quad\quad













假设函数



f

(

x

)

f(x)






f


(


x


)









c

i

(

x

)

c_i(x)







c










i


















(


x


)





是凸函数,



h

j

(

x

)

h_j(x)







h










j


















(


x


)





是仿射函数,并且不等式约束



c

i

(

x

)

c_i(x)







c










i


















(


x


)





是严格可行的,则



x

x^*







x



























α

,

β

\alpha^*,\beta^*







α




















,





β























分别是原始问题和对偶问题的解的充分必要条件是



x

,

α

,

β

x^*,\alpha^*,\beta^*







x




















,





α




















,





β























满足

KTT

条件:





x

L

(

x

,

α

,

β

)

=

0

\nabla_xL(x^*,\alpha^*,\beta^*) = 0


















x


















L


(



x




















,





α




















,





β




















)




=








0











α

i

c

i

(

x

)

=

0

,

i

=

1

,

2

,

.

.

.

,

k

\alpha_i^*c_i(x^*) = 0, \quad\quad i=1,2,…,k







α










i




























c










i


















(



x




















)




=








0


,








i




=








1


,




2


,




.


.


.


,




k











c

i

(

x

)

0

,

i

=

1

,

2

,

.

.

.

,

k

c_i(x^*) \leqslant 0, \quad\quad i=1,2,…,k







c










i


















(



x




















)













0


,








i




=








1


,




2


,




.


.


.


,




k











α

i

0

,

i

=

1

,

2

,

.

.

.

,

k

\alpha_i^* \geqslant 0, \quad\quad i=1,2,…,k







α










i






































0


,








i




=








1


,




2


,




.


.


.


,




k











h

j

(

x

)

=

0

,

j

=

1

,

2

,

.

.

.

,

l

h_j(x^*) = 0, \quad\quad j=1,2,…,l







h










j


















(



x




















)




=








0


,








j




=








1


,




2


,




.


.


.


,




l








\quad\quad













以上介绍了理解支持向量机需要的基本概念,接下来我们将分别介绍线性可分支持向量机、线性支持向量机和线性不可分支持向量机。


3.拉格朗日乘子法帮助理解

待优化目标:





y

=

0.6

(

θ

1

+

θ

2

)

2

θ

1

θ

2

y=0.6 * (\theta_1 +\theta_2)^2 – \theta_1 * \theta_2






y




=








0


.


6













(



θ










1




















+









θ










2



















)










2





















θ










1






























θ










2























约束条件:





x

2

x

+

1

=

0

x

[

4

,

4

]

x^2 – x + 1=0 \quad\quad x \in [-4,4]







x










2




















x




+








1




=








0






x













[





4


,




4


]





在这里插入图片描述

上图中曲面为待优化目标,红点形成的曲线便是约束条件,表示要在约束条件下找到目标函数的最优解(最小值)

代码可见:

01_拉格朗日乘子法.py



二、线性可分支持向量机




\quad\quad













我们知道,支持向量机的学习目标是

在特征空间找到一个分离超平面,能将实例分到不同的类。




\quad\quad













当训练数据集线性可分时,存在无穷个分离超平面将两类数据正确分开。感知机利用误分类最小化的策略,求得分离超平面,不过这时的解有无穷多个。


线性可分支持向量机利用间隔最大化求最优分离超平面,并且解是唯一的。




\quad\quad













那么我们如何使得间隔最大化并求得分离超平面呢?



1、间隔最大化(硬间隔)




\quad\quad













间隔最大化的直观解释是:对训练数据集找到

几何间隔最大

的超平面意味着以充分大的确信度对训练数据进行分类。也就是说,不仅将正负实例点分开,而求对最难分的实例点(离超平面最近的点)也有足够大的确信度将它们分开,这样的超平面对于未知的新实例有很好的分类预测能力。




\quad\quad













下面我们考虑如何求得一个几何间隔最大的分离超平面,即最大间隔分离超平面。我们可以将这个问题表示为下面的约束最优化问题:





max

w

,

b

γ

s

.

t

.

y

i

(

w

w

x

i

+

b

w

)

γ

,

i

=

1

,

2

,

.

.

.

,

N

\max_{w,b} \quad \gamma \\ s.t. \quad y_i(\frac{w}{||w||} \cdot x_i + \frac{b}{||w||}) \geqslant \gamma, \quad i = 1,2,…,N















w


,


b









max





















γ








s


.


t


.





y










i


















(



















w




















w
































x










i




















+

























w




















b




















)













γ


,






i




=








1


,




2


,




.


.


.


,




N





即我们希望最大化超平面



(

w

,

b

)

(w,b)






(


w


,




b


)





关于训练数据集的几何间隔



γ

\gamma






γ







约束条件表示:超平面关于每个样本点的几何间隔至少是



γ

\gamma






γ




进一步地,我们考虑几何间隔和函数间隔的关系。





γ

=

δ

w

\gamma =\frac{\delta}{||w||}






γ




=

























w




















δ

























此处:



δ

\delta






δ





为函数间隔



y

i

(

w

x

i

+

b

)

y_i(w\cdot x_i +b)







y










i


















(


w














x










i




















+








b


)




这是可将上面的约束问题改为:





max

w

,

b

δ

w

s

.

t

.

y

i

(

w

x

i

+

b

)

δ

,

i

=

1

,

2

,

.

.

.

,

N

\max_{w,b} \quad \frac{\delta}{||w||} \\ s.t. \quad y_i(w\cdot x_i +b) \geqslant \delta, \quad i = 1,2,…,N















w


,


b









max






































w




















δ


























s


.


t


.





y










i


















(


w














x










i




















+








b


)













δ


,






i




=








1


,




2


,




.


.


.


,




N





这是我们需要注意到,

函数间隔



δ

\delta






δ





的取值并不影响最优化问题的解。

这里,假设我们将



w

,

b

w,b






w


,




b





按比例改为



λ

w

λ

b

\lambda w,\lambda b






λ


w





λ


b





,这是函数间隔变为



y

i

(

λ

w

x

i

+

λ

b

)

=

λ

δ

y_i(\lambda w \cdot x_i + \lambda b) = \lambda \delta







y










i


















(


λ


w














x










i




















+








λ


b


)




=








λ


δ







此时,函数间隔的改变并没有改变上面的约束,对目标函数的优化也没用影响,也就是说,它产生一个等价的最优化问题;

这样,我们就可以把函数间隔



δ

\delta






δ





特殊化,取



δ

=

1

\delta = 1






δ




=








1






将上面



δ

=

1

\delta = 1






δ




=








1





,带入原来最优化问题中,注意到最大化



1

w

\frac{1}{||w||}
























w






















1
























和最小化



1

2

w

2

\frac{1}{2}||w||^2


















2
















1



























w

















2












是等价的。

我们将得到

线性支持向量机学习的最优化问题:





min

w

,

b

1

2

w

2

s

.

t

.

y

i

(

w

x

i

+

b

)

1

0

,

i

=

1

,

2

,

.

.

.

,

N

\min_{w,b} \quad \frac{1}{2}||w||^2 \\ s.t. \quad y_i(w\cdot x_i +b) – 1 \geqslant 0, \quad i = 1,2,…,N















w


,


b









min
































2














1


























w

















2















s


.


t


.





y










i


















(


w














x










i




















+








b


)













1













0


,






i




=








1


,




2


,




.


.


.


,




N







上面这个约束最优化问题是一个凸二次规划的问题。

如果求出了约束最优化问题的解



(

w

,

b

)

(w^*,b^*)






(



w




















,





b




















)





,那么就可以得到最大间隔分离超平面



w

x

+

b

=

0

w^* \cdot x+b^*=0







w































x




+









b






















=








0





及分类决策函数



f

(

x

)

=

s

i

g

n

(

w

x

+

b

)

f(x) = sign(w^* \cdot x+b^*)






f


(


x


)




=








s


i


g


n


(



w































x




+









b




















)





,即线性可分支持向量机。



2、线性可分支持向量机学习算法——最大间隔法如下:

输入:线性可分训练数据集



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




=








{



(



x










1


















,





y










1


















)


,




(



x










2


















,





y










2


















)


,




.


.


.


,




(



x










N


















,





y










N


















)


}





,其中,



x

i

X

=

R

n

y

i

Y

=

{

1

,

+

1

}

i

=

1

,

2

,

.

.

.

,

N

x_i \in \mathcal{X} = R^n,y_i \in \mathcal{Y}=\{-1,+1\},i=1,2,…,N







x










i






























X





=









R










n













y










i






























Y





=








{






1


,




+


1


}





i




=








1


,




2


,




.


.


.


,




N







输出:最大间隔分离超平面和分类决策函数。

(1)构造并求解约束最优化问题:





min

w

,

b

1

2

w

2

s

.

t

.

y

i

(

w

x

i

+

b

)

1

0

,

i

=

1

,

2

,

.

.

.

,

N

\min_{w,b} \quad \frac{1}{2}||w||^2 \\ s.t. \quad y_i(w\cdot x_i +b) – 1 \geqslant 0, \quad i = 1,2,…,N















w


,


b









min
































2














1


























w

















2















s


.


t


.





y










i


















(


w














x










i




















+








b


)













1













0


,






i




=








1


,




2


,




.


.


.


,




N







求得最优解



w

,

b

w^*,b^*







w




















,





b

























(2)由此得到分离超平面:





w

x

+

b

=

0

w^* \cdot x+b^*=0







w































x




+









b






















=








0







分类决策函数:





f

(

x

)

=

s

i

g

n

(

w

x

+

b

)

f(x) = sign(w^* \cdot x+b^*)






f


(


x


)




=








s


i


g


n


(



w































x




+









b




















)






若训练数据集线性可分,则可将训练数据集中的样本点完全正确分开的最大间隔分离超平面存在且唯一。

我们知道

支持向量

就是距离分离超平面最近的实例点。注意到上面约束问题,支持向量便是使约束条件等号成立的点,即:





y

i

(

w

x

+

b

)

1

=

0

y_i(w\cdot x+b) – 1 =0







y










i


















(


w













x




+








b


)













1




=








0





在决定分离超平面时只有支持向量起作用,而其他实例点并不起作用,如果移动支持向量将改变所求的解;但是如果在间隔边界以外移动其他实例点,甚至去掉这些点,则解是不会改变的。



3、对偶算法




\quad\quad













为了求解线性可分支持向量机的最优化问题,将原来的约束最优化问题作为原始问题,应用拉格朗日对偶性,通过求解对偶问题得到原始问题的最优解。

这样做的有点:

对偶问题往往更容易求解

自然引入核函数,进而推广到非线性分类问题(这在后面会介绍)

现在我们就开始构建原始问题的对偶问题:

(1)首先构建拉格朗日函数





L

(

w

,

b

,

α

)

=

1

2

w

2

i

=

1

N

α

i

[

y

i

(

w

x

+

b

)

1

]

L(w,b,\alpha) = \frac{1}{2}||w||^2-\sum_{i=1}^N \alpha_i[y_i(w \cdot x + b) – 1]






L


(


w


,




b


,




α


)




=



















2














1


























w

















2





























i


=


1


















N




















α










i


















[



y










i


















(


w













x




+








b


)













1


]







其中,



α

i

0

α

=

(

α

1

,

α

2

,

.

.

.

,

α

N

)

T

\alpha_i \geqslant 0,\alpha = (\alpha_1,\alpha_2,…,\alpha_N)^T







α










i





























0





α




=








(



α










1


















,





α










2


















,




.


.


.


,





α










N



















)










T












为拉格朗日乘子向量。

根据拉格朗日对偶性,原始问题的对偶问题是极大极小问题。





max

α

min

w

,

b

L

(

w

,

b

,

α

)

\max_\alpha \min_{w,b} L(w,b,\alpha)














α








max




























w


,


b









min



















L


(


w


,




b


,




α


)





即,需要先求



L

(

w

,

b

,

α

)

L(w,b,\alpha)






L


(


w


,




b


,




α


)









w

,

b

w,b






w


,




b





的极小,再求对



α

\alpha






α





的极大。

(2)求



min

w

,

b

L

(

w

,

b

,

α

)

\min_{w,b} L(w,b,\alpha)







min











w


,


b





















L


(


w


,




b


,




α


)




将拉格朗日函数



L

(

w

,

b

,

α

)

L(w,b,\alpha)






L


(


w


,




b


,




α


)





分别对



w

,

b

w,b






w


,




b





求偏导并令其等于0





w

L

(

w

,

b

,

α

)

=

w

i

=

1

N

α

i

y

i

x

i

=

0

b

L

(

w

,

b

,

α

)

=

0

\nabla_wL(w,b,\alpha)=w-\sum_{i=1}^{N}\alpha_iy_ix_i=0 \\ \nabla_bL(w,b,\alpha)=0


















w


















L


(


w


,




b


,




α


)




=








w






















i


=


1



















N





















α










i



















y










i



















x










i




















=








0




















b


















L


(


w


,




b


,




α


)




=








0







得:





w

=

i

=

1

N

α

i

y

i

x

i

i

=

1

N

α

i

y

i

=

0

w=\sum_{i=1}^{N}\alpha_iy_ix_i \\ \sum_{i=1}^{N}\alpha_iy_i=0






w




=

















i


=


1



















N





















α










i



















y










i



















x










i



































i


=


1



















N





















α










i



















y










i




















=








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

y

i

(

(

j

=

1

N

α

j

y

j

x

j

)

x

i

+

b

)

+

i

=

1

N

α

i

=

1

2

i

=

1

N

j

=

1

N

α

i

α

j

y

i

y

j

(

x

i

x

j

)

+

i

=

1

N

α

i

L(w,b,\alpha) = \frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}\alpha_i\alpha_jy_iy_j(x_i \cdot x_j)-\sum_{i=1}^N\alpha_iy_i((\sum_{j=1}^N\alpha_jy_jx_j)\cdot x_i+b)+\sum_{i=1}^N\alpha_i \\ = -\frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}\alpha_i\alpha_jy_iy_j(x_i \cdot x_j)+\sum_{i=1}^N\alpha_i






L


(


w


,




b


,




α


)




=



















2














1































i


=


1



















N





























j


=


1



















N





















α










i



















α










j



















y










i



















y










j


















(



x










i






























x










j


















)






















i


=


1


















N




















α










i



















y










i


















(


(











j


=


1


















N




















α










j



















y










j



















x










j


















)














x










i




















+








b


)




+

















i


=


1


















N




















α










i


























=






















2














1































i


=


1



















N





























j


=


1



















N





















α










i



















α










j



















y










i



















y










j


















(



x










i






























x










j


















)




+

















i


=


1


















N




















α










i























即:





min

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_{w,b} L(w,b,\alpha)= -\frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}\alpha_i\alpha_jy_iy_j(x_i \cdot x_j)+\sum_{i=1}^N\alpha_i















w


,


b









min



















L


(


w


,




b


,




α


)




=






















2














1































i


=


1



















N





























j


=


1



















N





















α










i



















α










j



















y










i



















y










j


















(



x










i






























x










j


















)




+

















i


=


1


















N




















α










i























(3)求



min

w

,

b

L

(

w

,

b

,

α

)

\min_{w,b} L(w,b,\alpha)







min











w


,


b





















L


(


w


,




b


,




α


)









α

\alpha






α





的极大,即是对偶问题:





max

α

1

2

i

=

1

N

j

=

1

N

α

i

α

j

y

i

y

j

(

x

i

x

j

)

+

i

=

1

N

α

i

s

.

t

.

i

=

1

N

α

i

y

i

=

0

α

i

0

,

i

=

1

,

2

,

.

.

.

,

N

\max_\alpha \quad -\frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}\alpha_i\alpha_jy_iy_j(x_i \cdot x_j)+\sum_{i=1}^N\alpha_i \\ s.t. \quad \sum_{i=1}^{N}\alpha_iy_i=0 \\ \alpha_i \geqslant 0, \quad i=1,2,…,N














α








max



































2














1































i


=


1



















N





























j


=


1



















N





















α










i



















α










j



















y










i



















y










j


















(



x










i






























x










j


















)




+

















i


=


1


















N




















α










i
























s


.


t


.















i


=


1



















N





















α










i



















y










i




















=








0









α










i





























0


,






i




=








1


,




2


,




.


.


.


,




N





将上式的目标函数由求极大转换为求极小,得到等价的

对偶最优化问题:





min

α

1

2

i

=

1

N

j

=

1

N

α

i

α

j

y

i

y

j

(

x

i

x

j

)

i

=

1

N

α

i

s

.

t

.

i

=

1

N

α

i

y

i

=

0

α

i

0

,

i

=

1

,

2

,

.

.

.

,

N

\min_\alpha \quad \frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}\alpha_i\alpha_jy_iy_j(x_i \cdot x_j)-\sum_{i=1}^N\alpha_i \\ s.t. \quad \sum_{i=1}^{N}\alpha_iy_i=0 \\ \alpha_i \geqslant 0, \quad i=1,2,…,N














α








min
































2














1































i


=


1



















N





























j


=


1



















N





















α










i



















α










j



















y










i



















y










j


















(



x










i






























x










j


















)






















i


=


1


















N




















α










i
























s


.


t


.















i


=


1



















N





















α










i



















y










i




















=








0









α










i





























0


,






i




=








1


,




2


,




.


.


.


,




N






对于线性可分训练数据集,假设对偶最优化问题对



α

\alpha






α





的解为



α

=

(

α

1

,

α

2

,

.

.

.

,

α

N

)

T

\alpha^*=(\alpha_1^*,\alpha_2^*,…,\alpha_N^*)^T







α






















=








(



α










1



























,





α










2



























,




.


.


.


,





α










N




























)










T












,可以由



α

\alpha^*







α























求得原始最优化问题对



(

w

,

b

)

(w,b)






(


w


,




b


)





的解



w

,

b

w^*,b^*







w




















,





b






















  • 上式可以通过SMO算法求解,具体内容后面将介绍

存在以下定理:

假设



α

=

(

α

1

,

α

2

,

.

.

.

,

α

N

)

T

\alpha^*=(\alpha_1^*,\alpha_2^*,…,\alpha_N^*)^T







α






















=








(



α










1



























,





α










2



























,




.


.


.


,





α










N




























)










T












是对偶最优化问题的解,则存在下标



j

j






j





,使得



α

j

&gt;

0

\alpha_j^* &gt; 0







α










j





























>








0





,并可求得原始最优化问题的解



w

,

b

w^*,b^*







w




















,





b





























w

=

i

=

1

N

α

i

y

i

x

i

b

=

y

j

i

=

1

N

α

i

y

i

(

x

i

x

j

)

w^* = \sum_{i=1}^N\alpha_i^*y_ix_i \\ b^* = y_j – \sum_{i=1}^N\alpha_i^*y_i(x_i \cdot x_j)







w






















=

















i


=


1


















N




















α










i




























y










i



















x










i

























b






















=









y










j






































i


=


1


















N




















α










i




























y










i


















(



x










i






























x










j


















)





至此,分离超平面可以写成:





i

=

1

N

α

i

y

i

(

x

x

i

)

+

b

=

0

\sum_{i=1}^N\alpha_i^*y_i( x \cdot x_i)+b^* = 0















i


=


1


















N




















α










i




























y










i


















(


x














x










i


















)




+









b






















=








0







分类决策函数可以写为:





f

(

x

)

=

s

i

g

n

(

i

=

1

N

α

i

y

i

(

x

x

i

)

+

b

)

f(x) = sign(\sum_{i=1}^N\alpha_i^*y_i( x \cdot x_i)+b^* )






f


(


x


)




=








s


i


g


n


(











i


=


1


















N




















α










i




























y










i


















(


x














x










i


















)




+









b




















)





这就是说,分类决策函数只依赖于输入



x

x






x





和训练数据集样本输入的内积。



4、线性可分支持向量机学习算法——对偶算法:

输入:线性可分训练数据集



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




=








{



(



x










1


















,





y










1


















)


,




(



x










2


















,





y










2


















)


,




.


.


.


,




(



x










N


















,





y










N


















)


}





,其中,



x

i

X

=

R

n

y

i

Y

=

{

1

,

+

1

}

i

=

1

,

2

,

.

.

.

,

N

x_i \in \mathcal{X} = R^n,y_i \in \mathcal{Y}=\{-1,+1\},i=1,2,…,N







x










i






























X





=









R










n













y










i






























Y





=








{






1


,




+


1


}





i




=








1


,




2


,




.


.


.


,




N







输出:最大间隔分离超平面和分类决策函数。

(1)构造并求解约束最优化问题:





min

α

1

2

i

=

1

N

j

=

1

N

α

i

α

j

y

i

y

j

(

x

i

x

j

)

i

=

1

N

α

i

s

.

t

.

i

=

1

N

α

i

y

i

=

0

α

i

0

,

i

=

1

,

2

,

.

.

.

,

N

\min_\alpha \quad \frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}\alpha_i\alpha_jy_iy_j(x_i \cdot x_j)-\sum_{i=1}^N\alpha_i \\ s.t. \quad \sum_{i=1}^{N}\alpha_iy_i=0 \\ \alpha_i \geqslant 0, \quad i=1,2,…,N














α








min
































2














1































i


=


1



















N





























j


=


1



















N





















α










i



















α










j



















y










i



















y










j


















(



x










i






























x










j


















)






















i


=


1


















N




















α










i
























s


.


t


.















i


=


1



















N





















α










i



















y










i




















=








0









α










i





























0


,






i




=








1


,




2


,




.


.


.


,




N







求得最优解



α

=

(

α

1

,

α

2

,

.

.

.

,

α

N

)

T

\alpha^*=(\alpha_1^*,\alpha_2^*,…,\alpha_N^*)^T







α






















=








(



α










1



























,





α










2



























,




.


.


.


,





α










N




























)










T














(2)计算:





w

=

i

=

1

N

α

i

y

i

x

i

w^* = \sum_{i=1}^N\alpha_i^*y_ix_i







w






















=

















i


=


1


















N




















α










i




























y










i



















x










i























并选择



α

\alpha^*







α























的一个正分量



α

j

&gt;

0

\alpha_j^* &gt; 0







α










j





























>








0





,计算:





b

=

y

j

i

=

1

N

α

i

y

i

(

x

i

x

j

)

b^* = y_j – \sum_{i=1}^N\alpha_i^*y_i(x_i \cdot x_j)







b






















=









y










j






































i


=


1


















N




















α










i




























y










i


















(



x










i






























x










j


















)







(3)求得分离超平面:





i

=

1

N

α

i

y

i

(

x

x

i

)

+

b

=

0

\sum_{i=1}^N\alpha_i^*y_i( x \cdot x_i)+b^* = 0















i


=


1


















N




















α










i




























y










i


















(


x














x










i


















)




+









b






















=








0







分类决策函数:





f

(

x

)

=

s

i

g

n

(

i

=

1

N

α

i

y

i

(

x

x

i

)

+

b

)

f(x) = sign(\sum_{i=1}^N\alpha_i^*y_i( x \cdot x_i)+b^* )






f


(


x


)




=








s


i


g


n


(











i


=


1


















N




















α










i




























y










i


















(


x














x










i


















)




+









b




















)







5、下面通过具体的数据,比较两个算法的计算:

数据如下图:正例点是



x

1

=

(

3

,

3

)

T

,

x

2

=

(

4

,

3

)

T

x

3

=

(

1

,

1

)

T

x_1 = (3,3)^T,x_2 = (4,3)^T,负例点是x_3 = (1,1)^T







x










1




















=








(


3


,




3



)










T









,





x










2




















=








(


4


,




3



)










T

























x










3




















=








(


1


,




1



)










T











在这里插入图片描述

问题:试求最大间隔分离超平面?


1.最大间隔法求解:

解:按照最大间隔法,根据训练数据集构造约束最优化问题:





min

w

,

b

1

2

(

w

1

2

+

w

2

2

)

s

.

t

.

3

w

1

+

3

w

2

+

b

0

      

4

w

1

+

3

w

2

+

b

0

      

1

w

1

1

w

2

b

0

\min_{w,b} \quad \frac{1}{2}(w_1^2+w_2^2) \\ s.t. \quad 3w_1+3w_2 + b \geqslant 0 \\ \quad \ \ \ \ \ \ 4w_1+3w_2 + b \geqslant 0 \\ \quad \ \ \ \ \ \ -1w_1-1w_2 – b \geqslant 0















w


,


b









min
































2














1




















(



w










1








2




















+









w










2








2


















)








s


.


t


.




3



w










1




















+








3



w










2




















+








b













0






















4



w










1




















+








3



w










2




















+








b













0

































1



w










1





























1



w










2





























b













0







求得此最优化问题的解为:



w

1

=

w

2

=

1

2

,

b

=

2

w_1=w_2=\frac{1}{2},b=-2







w










1




















=









w










2




















=




















2
















1





















,




b




=











2





。于是最大间隔分离超平面为:





1

2

x

(

1

)

+

1

2

x

(

2

)

2

=

0

\frac{1}{2}x^{(1)}+\frac{1}{2}x^{(2)}-2 = 0

















2














1





















x











(


1


)












+



















2














1





















x











(


2


)





















2




=








0







其中,



x

1

=

(

3

,

3

)

T

x

3

=

(

1

,

1

)

T

x_1 = (3,3)^T 与 x_3 = (1,1)^T







x










1




















=








(


3


,




3



)










T













x










3




















=








(


1


,




1



)










T












是支持向量。


2.对偶算法求解:

解:根据所给数据,对偶问题是:





min

α

1

2

i

=

1

N

j

=

1

N

α

i

α

j

y

i

y

j

(

x

i

x

j

)

i

=

1

N

α

i

=

1

2

(

18

α

1

2

+

25

α

2

2

+

2

α

3

2

+

42

α

1

α

2

12

α

1

α

3

14

α

2

α

3

)

α

1

α

2

α

3

s

.

t

.

α

1

+

α

2

α

3

=

0

α

i

0

,

i

=

1

,

2

,

3

\min_\alpha \quad \frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}\alpha_i\alpha_jy_iy_j(x_i \cdot x_j)-\sum_{i=1}^N\alpha_i \\ = \frac{1}{2}(18\alpha_1^2+25\alpha_2^2+2\alpha_3^2+42\alpha_1\alpha_2-12\alpha_1\alpha_3-14\alpha_2\alpha_3)-\alpha_1-\alpha_2-\alpha_3 \\ s.t. \alpha_1+\alpha_2-\alpha_3=0 \\ \alpha_i \geqslant 0, \quad i=1,2,3














α








min
































2














1































i


=


1



















N





























j


=


1



















N





















α










i



















α










j



















y










i



















y










j


















(



x










i






























x










j


















)






















i


=


1


















N




















α










i


























=



















2














1




















(


1


8



α










1








2




















+








2


5



α










2








2




















+








2



α










3








2




















+








4


2



α










1



















α










2





























1


2



α










1



















α










3





























1


4



α










2



















α










3


















)














α










1






























α










2






























α










3
























s


.


t


.



α










1




















+









α










2






























α










3




















=








0









α










i





























0


,






i




=








1


,




2


,




3







解这一最优化问题,将



α

3

=

α

1

+

α

2

\alpha_3 = \alpha_1+\alpha_2







α










3




















=









α










1




















+









α










2





















代入目标函数并记为:





s

(

α

1

,

α

2

)

=

4

α

1

2

+

13

2

α

2

2

+

10

α

1

α

2

2

α

1

2

α

2

s(\alpha_1,\alpha_2) = 4\alpha_1^2+\frac{13}{2}\alpha_2^2+10\alpha_1\alpha_2-2\alpha_1-2\alpha_2






s


(



α










1


















,





α










2


















)




=








4



α










1








2




















+



















2














1


3





















α










2








2




















+








1


0



α










1



















α










2





























2



α










1





























2



α










2



























α

1

,

α

2

\alpha_1,\alpha_2







α










1


















,





α










2





















求偏导数并令其为0,易知



s

(

α

1

,

α

2

)

s(\alpha_1,\alpha_2)






s


(



α










1


















,





α










2


















)





在点



(

3

2

,

1

)

T

(\frac{3}{2},-1)^T






(














2
















3





















,







1



)










T












取极值,但该点不满足约束条件



α

2

0

\alpha_2 \geqslant 0







α










2





























0





,所以极小值应在边界上达到。





α

1

=

0

\alpha_1 = 0







α










1




















=








0





时,最小值



s

(

0

,

2

13

)

=

2

13

s(0, \frac{2}{13}) = -\frac{2}{13}






s


(


0


,
















1


3
















2





















)




=























1


3
















2
























;当



α

2

=

0

\alpha_2 = 0







α










2




















=








0





时,最小值



s

(

1

4

0

)

=

1

4

s(\frac{1}{4},0) = -\frac{1}{4}






s


(














4
















1
























0


)




=























4
















1
























。于是,



s

(

α

1

,

α

2

)

s(\alpha_1,\alpha_2)






s


(



α










1


















,





α










2


















)









α

1

=

1

4

,

α

2

=

0

\alpha_1=\frac{1}{4},\alpha_2=0







α










1




















=




















4
















1





















,





α










2




















=








0





达到最小,此时



α

3

=

α

1

+

α

2

=

1

4

\alpha_3 = \alpha_1+\alpha_2 = \frac{1}{4}







α










3




















=









α










1




















+









α










2




















=




















4
















1























这样,



α

1

=

α

3

=

1

4

\alpha_1^*=\alpha_3^* = \frac{1}{4}







α










1





























=









α










3





























=




















4
















1
























对应的实例点



x

1

,

x

3

x_1,x_3







x










1


















,





x










3





















是支持向量,根据:





w

=

i

=

1

N

α

i

y

i

x

i

w^* = \sum_{i=1}^N\alpha_i^*y_ix_i







w






















=

















i


=


1


















N




















α










i




























y










i



















x










i



























b

=

y

j

i

=

1

N

α

i

y

i

(

x

i

x

j

)

b^* = y_j – \sum_{i=1}^N\alpha_i^*y_i(x_i \cdot x_j)







b






















=









y










j






































i


=


1


















N




















α










i




























y










i


















(



x










i






























x










j


















)







计算得:





w

=

1

4

(

1

)

(

3

,

3

)

+

1

4

(

1

)

(

1

,

1

)

=

(

1

2

,

1

2

)

w

1

=

w

2

=

1

2

w^* = \frac{1}{4}(1)(3,3)+\frac{1}{4}(-1)(1,1) = (\frac{1}{2},\frac{1}{2})\\ w_1^*=w_2^* = \frac{1}{2}







w






















=



















4














1




















(


1


)


(


3


,




3


)




+



















4














1




















(





1


)


(


1


,




1


)




=








(













2














1




















,















2














1




















)









w










1





























=









w










2





























=



















2














1

























取点



x

1

=

(

3

,

3

)

T

b

j

=

1

,

y

j

=

1

x_1=(3,3)^T求b^*,此时j=1,y_j=1







x










1




















=








(


3


,




3



)










T













b





























j




=








1


,





y










j




















=








1










b

=

1

[

1

4

(

1

)

(

x

1

x

1

)

+

1

4

(

1

)

(

x

3

x

1

)

]

=

1

(

1

4

18

1

4

6

)

=

2

b^* = 1 – [\frac{1}{4}(1)(x_1 \cdot x_1)+\frac{1}{4}(-1)(x_3 \cdot x_1)] \\ = 1-(\frac{1}{4}*18-\frac{1}{4}*6)= -2







b






















=








1













[













4














1




















(


1


)


(



x










1






























x










1


















)




+



















4














1




















(





1


)


(



x










3






























x










1


















)


]










=








1













(













4














1































1


8
























4














1































6


)




=











2





于是分离超平面为:





1

2

x

(

1

)

+

1

2

x

(

2

)

2

=

0

\frac{1}{2}x^{(1)}+\frac{1}{2}x^{(2)}-2 = 0

















2














1





















x











(


1


)












+



















2














1





















x











(


2


)





















2




=








0







分类决策函数为:





f

(

x

)

=

s

i

g

n

(

1

2

x

(

1

)

+

1

2

x

(

2

)

2

)

f(x) = sign(\frac{1}{2}x^{(1)}+\frac{1}{2}x^{(2)}-2 )






f


(


x


)




=








s


i


g


n


(













2














1





















x











(


1


)












+



















2














1





















x











(


2


)





















2


)





由上面两种方法可见,两种方法得到的超平面是一样的,也验证了对偶方法的有效性。

至此,我们得到目标函数:






max

α

i

0

L

(

w

,

b

,

α

)

=

max

α

i

0

1

2

w

2

i

=

1

N

α

i

[

y

i

(

w

x

+

b

)

1

]

\max_{\alpha_i \geqslant 0}L(w,b,\alpha) = \max_{\alpha_i \geqslant 0} \frac{1}{2}||w||^2-\sum_{i=1}^N \alpha_i[y_i(w \cdot x + b) – 1]
















α










i





















0









max



















L


(


w


,




b


,




α


)




=


















α










i





















0









max






























2














1


























w

















2





























i


=


1


















N




















α










i


















[



y










i


















(


w













x




+








b


)













1


]






注意到,如果



x

i

x_i







x










i





















是支持向量的话,上式中



y

i

(

w

x

+

b

)

1

=

0

y_i(w \cdot x + b) – 1 = 0







y










i


















(


w













x




+








b


)













1




=








0





(因为至此向量的函数间隔为1),而对于非支持向量来说,函数间隔会大于1,因此



y

i

(

w

x

+

b

)

1

&gt;

0

y_i(w \cdot x + b) – 1 &gt; 0







y










i


















(


w













x




+








b


)













1




>








0





,而



α

i

0

\alpha_i \geqslant 0







α










i





























0





,为了满足最大化,



α

i

\alpha_i







α










i





















必须等于0。

到目前为止,线性可分支持向量机只能处理线性可分数据集,不过,在得到了对偶问题形式之后,通过核函数(

Kernel

)推广到非线性的情况就变成了一个非常容易的事情了。



三、核函数

Kernel




\quad\quad













在现实任务中,我们得到的一般都不是线性可分的,这时线性可分支持向量机就不适用了。因为这时我们之前所提到的不等式约束并不能都成立。那么对于非线性的数据

SVM

是如何处理的呢?




\quad\quad













对于非线性的情况,

SVM

的处理方法是选择一个核函数



k

(

,

)

k(\cdot,\cdot)






k


(





,







)





,通过将数据映射到高维空间,来解决在原始空间中线性不可分的问题。




\quad\quad













具体来说,在线性不可分的情况下,支持向量机首先在低维空间中完成计算,然后通过核函数将输入空间映射到高维特征空间,最终在高维特征空间中构造出最优的分离超平面,从而把平面上本身不好分的非线性数据分开。如图所示,一维数据在二维空间无法划分,从而映射到三维空间里划分:

在这里插入图片描述

因此,在没有核函数之前,当我们希望用前面线性分类问题的方法来解决这个问题,就需要选择一个非线性特征集,并将数据改写成新的表达方式,这等价于应用一个固定的非线性映射,将数据映射到特征空间,在特征空间中使用线性分类器。





f

(

x

)

=

i

=

1

N

w

i

ϕ

i

(

x

)

+

b

f(x) = \sum_{i=1}^N w_i \phi_i(x) + b






f


(


x


)




=

















i


=


1


















N




















w










i



















ϕ










i


















(


x


)




+








b





其中,



ϕ

\phi






ϕ





:表示从输入空间到某个特征空间的映射,这意味着线性分类方法求解非线性分类问题一般分为两步:

  • 使用一个变换将原空间的数据映射到新空间;
  • 在新空间里使用线性分类学习方法从训练数据中学习分类模型。



1、核函数:如何处理非线性数据




\quad\quad













假设我们有如下图所示的两类数据,分别为两个圆圈的形状,很明显这样的数据是线性不可分的,那么我们如何把这两类数据分开呢?

在这里插入图片描述




\quad\quad













事实上,上图数据集使用两个不同半径的圆圈加上少量噪声生成得到的,所以,一个理想的分类应该是一个“圆圈”而不是一条直线(超平面),如果用



X

1

X_1







X










1

























X

2

X_2







X










2





















来表示这个二维平面的两个坐标,我们知道一个二次曲线的方程可以写成如下形式:





a

1

X

1

+

a

2

X

1

2

+

a

3

X

2

+

a

4

X

2

2

+

a

5

X

1

X

2

+

a

6

=

0

a_1X_1 + a_2X_1^2+a_3X_2+a_4X_2^2+a_5X_1X_2+a_6=0







a










1



















X










1




















+









a










2



















X










1








2




















+









a










3



















X










2




















+









a










4



















X










2








2




















+









a










5



















X










1



















X










2




















+









a










6




















=








0





注意上面的形式,如果我们构造另一个五维的空间,其中五个坐标的值分别为:





Z

1

=

X

1

,

Z

2

=

X

1

2

,

Z

3

=

X

2

,

Z

4

=

X

2

2

,

Z

5

=

X

1

X

2

Z_1 = X_1,Z_2=X_1^2,Z_3=X_2,Z_4=X_2^2,Z_5=X_1X_2







Z










1




















=









X










1


















,





Z










2




















=









X










1








2


















,





Z










3




















=









X










2


















,





Z










4




















=









X










2








2


















,





Z










5




















=









X










1



















X










2























那么,上面的方程就可以写成:





i

=

1

5

a

i

Z

i

+

a

6

=

0

\sum_{i=1}^5a_iZ_i + a_6 =0















i


=


1


















5




















a










i



















Z










i




















+









a










6




















=








0








\quad\quad













关于新的坐标



Z

Z






Z





,如果我们做一个映射



ϕ

R

2

R

5

\phi:R_2 \rightarrow R_5






ϕ






R










2






























R










5





















,将



X

X






X





按照上面的规则映射为



Z

Z






Z





,那么在的新的空间中原来的数据将变成线性可分的,从而使用之前我们推导的线性分类算法就可以进行处理了,这正是

Kernel

方法处理非线性问题的基本思想。




\quad\quad













再进一步描述

Kernel

的细节之前,不妨再来看看上述例子在映射过后的直观形态。当然,我们无法把五维空间画出来,不过由于我们生成数据的时候用了特殊的情形,所以这里的超平面实际的方程是这个样子的(圆心在



X

2

X_2







X










2





















轴上的一个正圆):





i

=

1

5

a

i

Z

i

+

a

6

=

0

\sum_{i=1}^5a_iZ_i + a_6 =0















i


=


1


















5




















a










i



















Z










i




















+









a










6




















=








0








\quad\quad













因此我只需要把它映射到



Z

1

=

X

1

2

,

Z

2

=

X

2

2

,

Z

3

=

X

2

Z_1 = X_1^2,Z_2 = X_2^2,Z_3 = X_2







Z










1




















=









X










1








2


















,





Z










2




















=









X










2








2


















,





Z










3




















=









X










2





















,这样一个三维空间中即可,下图即是映射之后的结果,将坐标经过适当的旋转,就可以很明显地看出,数据是可以通过的一个平面来分开的,如下图:

在这里插入图片描述

核函数相当于把原来的分类函数:





f

(

x

)

=

i

=

1

n

α

i

y

i

x

i

,

x

+

b

f(x) = \sum_{i=1}^n\alpha_iy_i \langle x_i, x \rangle + b






f


(


x


)




=

















i


=


1


















n




















α










i



















y










i






















x










i


















,




x







+








b







映射成:





f

(

x

)

=

i

=

1

n

α

i

y

i

ϕ

(

x

i

)

,

ϕ

(

x

)

+

b

f(x) = \sum_{i=1}^n\alpha_iy_i \langle \phi(x_i), \phi(x) \rangle + b






f


(


x


)




=

















i


=


1


















n




















α










i



















y










i





















ϕ


(



x










i


















)


,




ϕ


(


x


)







+








b





而其中的



α

\alpha






α





可以通过求解如下对偶问题得到:





max

α

i

=

1

n

α

i

1

2

i

,

j

=

1

n

α

i

α

j

y

i

y

j

ϕ

(

x

i

)

,

ϕ

(

x

)

\max_\alpha \sum_{i=1}^n \alpha_i – \frac{1}{2} \sum_{i,j=1}^n \alpha_i \alpha_j y_i y_j\langle \phi(x_i), \phi(x) \rangle














α








max




























i


=


1


















n




















α










i








































2














1































i


,


j


=


1


















n




















α










i



















α










j



















y










i



















y










j





















ϕ


(



x










i


















)


,




ϕ


(


x


)














s

.

t

.

α

i

0

i

=

1

,

2

,

.

.

.

,

n

s.t. \quad \alpha_i \geqslant0 \quad\quad i = 1,2,…,n






s


.


t


.





α










i





























0






i




=








1


,




2


,




.


.


.


,




n











i

=

1

n

α

i

y

i

=

0

\sum_{i=1}^n \alpha_i y_i =0















i


=


1


















n




















α










i



















y










i




















=








0





得到以上对偶问题,似乎我们就可以解决非线性问题,我们只需要找到一个映射



ϕ

(

)

\phi(\cdot)






ϕ


(





)





,然后将非线性数据映射到新空间中,再做线性

SVM

即可,然而事实上并没有这么简单。

  • 在最初的例子里,我们对一个二维空间最映射,选择的新空间是原始空间的所有一阶和二阶的组合,得到五维空间;
  • 如果原始空间是三维的,那么我们就会得到:3个一次项+3个二次交叉项+3个平方项+1个三次交叉项+6个一次和二次交叉项=19维的空间,这个数目层指数级爆炸增长,从而必定给



    ϕ

    (

    )

    \phi(\cdot)






    ϕ


    (





    )





    的计算带来困难,而且如果遇到无穷维的情况,就根本无法计算了。

这时候,

Kernel

核函数就派上用场了。

我们还使用前面的二维原始空间,设两个向量



x

1

=

(

η

1

,

η

2

)

T

x_1 = (\eta_1, \eta_2)^T







x










1




















=








(



η










1


















,





η










2



















)










T
















x

2

=

(

ξ

1

,

ξ

2

)

T

x_2 = (\xi_1, \xi_2)^T







x










2




















=








(



ξ










1


















,





ξ










2



















)










T












,而



ϕ

(

)

\phi(\cdot)






ϕ


(





)





即是前面说的五维空间的映射,因此映射后的内积为:





ϕ

(

x

1

)

,

ϕ

(

x

2

)

=

η

1

ξ

1

+

η

1

2

ξ

1

2

+

η

2

ξ

2

+

η

2

2

ξ

2

2

+

η

1

η

2

ξ

1

ξ

2

\langle \phi(x_1),\phi(x_2)\rangle = \eta_1\xi_1 + \eta_1^2\xi_1^2+\eta_2\xi_2+\eta_2^2\xi_2^2+\eta_1\eta_2\xi_1\xi_2









ϕ


(



x










1


















)


,




ϕ


(



x










2


















)







=









η










1



















ξ










1




















+









η










1








2



















ξ










1








2




















+









η










2



















ξ










2




















+









η










2








2



















ξ










2








2




















+









η










1



















η










2



















ξ










1



















ξ










2





















上式可通过如下推导得到:





  • x

    1

    x

    2

    x_1、x_2







    x










    1






















    x










    2





















    通过



    ϕ

    (

    )

    \phi(\cdot)






    ϕ


    (





    )





    映射到五维空间,然后计算内积:





    ϕ

    (

    x

    1

    )

    (

    η

    1

    ,

    η

    1

    2

    ,

    η

    2

    ,

    η

    2

    2

    ,

    η

    1

    η

    2

    )

    ϕ

    (

    x

    1

    )

    (

    ξ

    1

    ,

    ξ

    1

    2

    ,

    ξ

    2

    ,

    ξ

    2

    2

    ,

    ξ

    1

    ξ

    2

    )

    \phi(x_1) \rightarrow (\eta_1,\eta_1^2,\eta_2,\eta_2^2,\eta_1\eta_2) \quad\quad \phi(x_1) \rightarrow (\xi_1,\xi_1^2,\xi_2,\xi_2^2,\xi_1\xi_2)






    ϕ


    (



    x










    1


















    )













    (



    η










    1


















    ,





    η










    1








    2


















    ,





    η










    2


















    ,





    η










    2








    2


















    ,





    η










    1



















    η










    2


















    )






    ϕ


    (



    x










    1


















    )













    (



    ξ










    1


















    ,





    ξ










    1








    2


















    ,





    ξ










    2


















    ,





    ξ










    2








    2


















    ,





    ξ










    1



















    ξ










    2


















    )







    计算内积,对应位置相乘相加即可

另外,我们注意到:





(

x

1

,

x

2

+

1

)

2

=

x

1

,

x

2

2

+

2

x

1

,

x

2

+

1

=

(

η

1

ξ

1

+

η

2

ξ

2

)

2

+

2

(

η

1

ξ

1

+

η

2

ξ

2

)

+

1

=

2

η

1

ξ

1

+

η

1

2

ξ

1

2

+

2

η

2

ξ

2

+

η

2

2

ξ

2

2

+

2

η

1

η

2

ξ

1

ξ

2

+

1

(\langle x_1,x_2\rangle + 1)^2 = \langle x_1,x_2\rangle^2+2\langle x_1,x_2\rangle+1\\ =(\eta_1\xi_1+\eta_2\xi_2)^2 + 2(\eta_1\xi_1+\eta_2\xi_2) + 1\\ = 2\eta_1\xi_1+\eta_1^2\xi_1^2+2\eta_2\xi_2+ \eta_2^2\xi_2^2 +2\eta_1\eta_2\xi_1\xi_2 +1






(






x










1


















,





x










2























+








1



)










2











=












x










1


















,





x










2






























2











+








2






x










1


















,





x










2























+








1










=








(



η










1



















ξ










1




















+









η










2



















ξ










2



















)










2











+








2


(



η










1



















ξ










1




















+









η










2



















ξ










2


















)




+








1










=








2



η










1



















ξ










1




















+









η










1








2



















ξ










1








2




















+








2



η










2



















ξ










2




















+









η










2








2



















ξ










2








2




















+








2



η










1



















η










2



















ξ










1



















ξ










2




















+








1







可以发现,上面的两个式子有很多相同的地方,实际上,我们只需要把某几个维度线性缩放一下,然后加上一个常数维度,具体来说,上面这个式子的计算实际上和映射:





φ

(

X

1

,

X

2

)

=

(

2

X

1

,

X

1

2

,

2

X

2

,

X

2

2

,

2

X

1

X

2

,

1

)

T

\varphi(X_1,X_2) = (\sqrt2 X_1,X_1^2,\sqrt2X_2, X_2^2,\sqrt2X_1X_2,1)^T






φ


(



X










1


















,





X










2


















)




=








(









2
























X










1


















,





X










1








2


















,











2
























X










2


















,





X










2








2


















,











2
























X










1



















X










2


















,




1



)










T












这个式子是根据上式凑出来的

然后计算内积



φ

(

X

1

)

,

φ

(

X

2

)

\langle \varphi(X_1),\varphi(X_2)\rangle









φ


(



X










1


















)


,




φ


(



X










2


















)








的结果是相同的,那么区别在于什么地方呢?

  • 一个是映射到高维空间中,然后再根据内积的公式计算;
  • 而另一个则

    直接在原始空间中计算,而不需要显式地写出映射后的结果

现在我们回忆下前面提到的维度爆炸,在前一种方法已经无法计算的情况下,后一种方法却依旧能处理,甚至无穷维度也没有问题。

我们把这里的


计算两个向量在隐式映射过后在空间中的内积的函数叫做核函数


,例如,前面的例子中,核函数为:





k

(

x

1

,

x

2

)

=

(

x

1

,

x

2

+

1

)

2

k(x_1,x_2)=(\langle x_1,x_2\rangle + 1)^2






k


(



x










1


















,





x










2


















)




=








(






x










1


















,





x










2























+








1



)










2












由此可以发现,核函数


能够简化映射空间中的内积运算



2、核函数的定义





X

\mathcal{X}







X






是输入空间,



H

\mathcal{H}







H






为特征空间,如果存在一个从



X

\mathcal{X}







X










H

\mathcal{H}







H






的映射:





ϕ

(

x

)

:

X

H

\phi(x):\mathcal{X} \rightarrow \mathcal{H}






ϕ


(


x


)




:









X















H








使得对所有



x

,

z

X

,

x,z \in \mathcal{X},






x


,




z














X



,





函数



K

(

x

,

z

)

K(x,z)






K


(


x


,




z


)





满足条件:





K

(

x

,

z

)

=

ϕ

(

x

)

ϕ

(

z

)

K(x,z) = \phi(x) \cdot \phi(z)






K


(


x


,




z


)




=








ϕ


(


x


)













ϕ


(


z


)







则称



K

(

x

,

z

)

K(x,z)






K


(


x


,




z


)





为核函数,



ϕ

(

x

)

\phi(x)






ϕ


(


x


)





为映射函数,式中



ϕ

(

x

)

ϕ

(

z

)

\phi(x) \cdot \phi(z)






ϕ


(


x


)













ϕ


(


z


)





为内积

核技巧的想法:在学习与预测中只定义核函数



K

(

x

,

z

)

K(x,z)






K


(


x


,




z


)





,而不显式地定义映射函数



ϕ

\phi






ϕ







因为通常计算



K

(

x

,

z

)

K(x,z)






K


(


x


,




z


)





比较容易,而通过



ϕ

(

x

)

ϕ

(

z

)

\phi(x)和\phi(z)






ϕ


(


x


)





ϕ


(


z


)





的内积来计算



K

(

x

,

z

)

K(x,z)






K


(


x


,




z


)





并不容易;




ϕ

\phi






ϕ





是输入空间到特征空间的映射,特征空间



H

\mathcal{H}







H






往往是高维的,甚至是无穷维;

对于给定的核



K

(

x

,

z

)

K(x,z)






K


(


x


,




z


)





,特征空间



H

\mathcal{H}







H






和映射函数



ϕ

\phi






ϕ





的取法并不唯一。




\quad\quad













在我们之前学习线性可分支持向量机和线性支持向量机时,无论是目标函数还是决策函数(分离超平面)都只涉及

输入实例与实例之间的内积

。在对偶问题的目标函数中的内积



x

i

,

x

j

x_i,x_j







x










i


















,





x










j





















,可以用核函数



K

(

x

i

,

x

j

)

=

ϕ

(

x

i

)

ϕ

(

x

j

)

K(x_i,x_j) = \phi(x_i) \cdot \phi(x_j)






K


(



x










i


















,





x










j


















)




=








ϕ


(



x










i


















)













ϕ


(



x










j


















)





来代替。此时对偶问题的目标函数成为:





W

(

α

)

=

1

2

i

=

1

N

j

=

1

N

α

i

α

j

y

i

y

j

K

(

x

i

,

x

j

)

i

=

1

N

α

i

W(\alpha)=\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_jK(x_i,x_j)-\sum_{i=1}^N\alpha_i






W


(


α


)




=



















2














1































i


=


1


















N




























j


=


1


















N




















α










i



















α










j



















y










i



















y










j


















K


(



x










i


















,





x










j


















)






















i


=


1


















N




















α










i























分类决策函数变为:





f

(

x

)

=

s

i

g

n

(

i

=

1

N

s

α

i

y

i

K

(

x

i

,

x

)

+

b

)

f(x) = sign(\sum_{i=1}^{N_s}\alpha_i^*y_iK(x_i,x)+b^*)






f


(


x


)




=








s


i


g


n


(











i


=


1




















N










s





































α










i




























y










i


















K


(



x










i


















,




x


)




+









b




















)





这就等价于:

经过映射函数



ϕ

\phi






ϕ





将原来的输入空间变换到一个新的特征空间,将输入空间中的内积



x

i

x

j

x_i \cdot x_j







x










i






























x










j





















变换为特征空间中的内积



ϕ

(

x

i

)

ϕ

(

x

j

)

\phi(x_i) \cdot \phi(x_j)






ϕ


(



x










i


















)













ϕ


(



x










j


















)





,在新的特征空间里,从训练样本中学习线性支持向量机,当映射函数是非线性函数时,学习到的含有核函数的支持向量机是非线性模型。




\quad\quad













在核函数



K

(

x

,

z

)

K(x,z)






K


(


x


,




z


)





给定的条件下,可以利用求解线性分类问题的方法求解非线性分类问题的支持向量机。学习是隐式地在特征空间进行,不需要显式地定义特征空间和映射函数,这样的技巧称为

核技巧

  • 使用核技巧,这样一来计算的问题就解决了,避开了直接在高维空间中进行计算,而结果却是等价的。当然,我们前面使用的例子是相对简单的,可以手工造出对应的



    ϕ

    (

    )

    \phi(\cdot)






    ϕ


    (





    )





    的核函数,如果对于一个任意的映射,想要造出对应的核函数就很困难了。

  • 所以,我们通常是在常用的核函数中进行选择——根据问题和数据的不同,选择不同的参数,实际上就是得到不同的核函数。



3、常用的核函数


(1)多项式核





k

(

x

i

,

x

j

)

=

(

x

i

T

x

j

)

p

p

1

k(x_i,x_j) = (x_i^Tx_j)^p \quad\quad p \geqslant 1为多项式的次数






k


(



x










i


















,





x










j


















)




=








(



x










i








T



















x










j



















)










p













p













1





























\quad\quad













前面我们举的例子便是这里多项式核的一个特例



R

=

1

d

=

2

(R=1,d=2)









R




=








1





d




=








2








。虽然比较麻烦,而且没有必要,不够这个核所对应的映射实际上是可以写出来的,该空间的维度是



(

m

+

d

d

)

\left(\begin{matrix} m+d\\ d\end{matrix}\right)








(













m




+




d








d




















)







,其中m是原始空间的维度。


(2)高斯核






k

(

x

i

,

x

j

)

=

e

x

p

(

x

i

x

j

2

2

σ

2

)

σ

1

k(x_i,x_j) = exp(-\frac{||x_i-x_j||^2}{2\sigma^2}) \quad\quad \sigma \geqslant 1为高斯核的带宽






k


(



x










i


















,





x










j


















)




=








e


x


p


(
















2



σ










2




























x










i


























x










j

































2



























)






σ













1


























这个核可以将原始空间映射为高维空间(也就是我们前面提到的空间映射)。

  • 如果



    σ

    \sigma






    σ





    选得过大的话,高次特征上的权重实际上衰减的非常快,所以实际上相当于一个低维的子空间;

  • 如果



    σ

    \sigma






    σ





    选得过小的话,则可以将任意的数据映射为线性可分的——当然这并不完全是好事,因为随之而来的是非常严重的过拟合问题;

  • 总的来说,通过调控参数



    σ

    \sigma






    σ





    ,高斯核实际上具有相当高的灵活性,也是使用最广泛的核函数之一


(3)线性核






k

(

x

i

,

x

j

)

=

x

i

T

x

j

k(x_i,x_j) = x_i^Tx_j






k


(



x










i


















,





x










j


















)




=









x










i








T



















x










j
























\quad\quad













这实际上就是原始空间中的内积,这个核存在的主要目的是使得“映射后空间中的问题”和“映射前空间中的问题”两者在形式上同意起来,也就是说,我们在写代码或公式的时候,只要写个模板或通用表达式,然后代入不同的核,就可以了,于是便在形式上统一了起来,不要再分别写一个线性的和一个非线性的



4、核函数的本质




\quad\quad













通常我们遇到的数据都是线性不可分的,我们需要将其映射到高维空间,但是这可能带来维度灾难,这时候,核函数便是一种很好的解决方法,核函数的价值就在于它虽然也是件特征进行从低维到高维的映射,但是核函数就绝在它事先在低维上进行计算,而将实质上的分类效果表现在高维上,这样做也就避免了在高维空间中的复杂运算。

下面我们引用例子来展示核函数解决非线性问题的直观效果:




\quad\quad













假设现在你是一个农场主,圈养了一批羊,但为了预防狼群袭击羊群,你需要搭建一个篱笆来把羊和狼分开,但是篱笆应该建在哪儿呢?比较以下这几种不同的分类器,我们可以看出SVM完成了一个很完美的解决方案。

在这里插入图片描述

这个例子说明了SVM使用非线性分类器的优势,而逻辑回归以及决策树都是使用了直线方法。



四、线性支持向量机




\quad\quad













前面我们介绍了处理线性可分数据集的线性可分支持向量机,也对线性不可分数据集问题通过核函数对原来的线性SVN进行了推广,使得非线性的情况也能处理。但是如果数据并不是因为本身是非线性结构的,而是因为数据有噪声,再如果有些噪声点正好是支持向量,那么对于分类器的影响是很大的。




\quad\quad













缓解该问题的一个办法就是允许支持向量机在一些样本上出错。这就需要我们将

硬间隔最大化改为软间隔最大化



1、软间隔

这里写图片描述

我们之前提到的硬间隔,是要求所有样本都满足约束条件,而软间隔则是允许某些样本不满足约束:





y

i

(

w

x

i

+

b

)

1

y_i(w \cdot x_i+b) \geqslant 1







y










i


















(


w














x










i




















+








b


)













1







自然,在最大化间隔的同时,不满足约束的样本应尽可能的少。

为了解决某些样本不满足约束条件,可以对每个样本点



(

x

i

,

y

i

)

(x_i,y_i)






(



x










i


















,





y










i


















)





引入一个松弛变量



ξ

i

0

\xi_i \geqslant 0







ξ










i





























0





,是函数间隔加上松弛变量大于等于1,这样,约束条件就变为:





y

i

(

w

x

i

+

b

)

1

ξ

i

y_i(w \cdot x_i+b) \geqslant 1-\xi_i







y










i


















(


w














x










i




















+








b


)













1














ξ










i























同时,对每个松弛变量



ξ

i

\xi_i







ξ










i





















,支付一个代价



ξ

i

\xi_i







ξ










i





















。目标函数由原来的



1

2

w

2

\frac{1}{2}||w||^2


















2
















1



























w

















2












变成:





1

2

w

2

+

C

i

=

1

N

ξ

i

\frac{1}{2}||w||^2+C\sum_{i=1}^N\xi_i

















2














1


























w

















2











+








C













i


=


1


















N




















ξ










i























这里,



C

&gt;

0

C &gt; 0






C




>








0





称为惩罚系数,



C

C






C





值大时对误分类的惩罚增加,



C

C






C





值小时对误分类的惩罚减小。

此时,最优化的目标函数包括两个含义:

  • 使



    1

    2

    w

    2

    \frac{1}{2}||w||^2


















    2
















    1



























    w

















    2












    尽量小即间隔尽量大

  • 使误分类点的个数尽量小




C

C






C





是调和二者的系数

有了上面的思路,可以和线性可分支持向量机一样来考虑线性支持向量机的学习问题。

线性不可分的线性支持向量机的学习问题就变为如下凸二次规划问题(原始问题):







min

w

,

b

,

ξ

1

2

w

2

+

C

i

=

1

N

ξ

i

s

.

t

.

y

i

(

w

x

i

+

b

)

1

ξ

i

i

=

1

,

2

,

.

.

.

,

N

ξ

i

0

i

=

1

,

2

,

.

.

.

,

N

\min_{w,b,\xi} \quad \frac{1}{2}||w||^2+C\sum_{i=1}^N\xi_i \\ s.t. \quad y_i(w \cdot x_i+b) \geqslant 1-\xi_i,i = 1,2,…,N \\ \xi_i \geqslant 0,i = 1,2,…,N















w


,


b


,


ξ









min
































2














1


























w

















2











+








C













i


=


1


















N




















ξ










i
























s


.


t


.





y










i


















(


w














x










i




















+








b


)













1














ξ










i





















i




=








1


,




2


,




.


.


.


,




N









ξ










i





























0





i




=








1


,




2


,




.


.


.


,




N







通过求解以上凸二次规划问题,即软间隔最大化问题,得到的分离超平面为:





w

x

+

b

=

0

w^*\cdot x + b^* = 0







w































x




+









b






















=








0







以及相应的分类决策函数:





f

(

x

)

=

s

i

g

n

(

w

x

+

b

)

f(x) = sign(w^*\cdot x + b^*)






f


(


x


)




=








s


i


g


n


(



w































x




+









b




















)







这就称为:线性支持向量机



2、对偶算法

对偶问题的构建和线性可分支持向量机的对偶问题的构建类似。

为了让大家更容易理解,现在我们再来构建一次:

(1)首先构建拉格朗日函数





L

(

w

,

b

,

ξ

,

α

,

μ

)

=

1

2

w

2

+

C

i

=

1

N

ξ

i

i

=

1

N

α

i

(

y

i

(

w

x

i

+

b

)

1

+

ξ

i

)

i

=

1

N

μ

i

ξ

i

L(w,b,\xi,\alpha,\mu) = \frac{1}{2}||w||^2 + C\sum_{i=1}^N\xi_i – \sum_{i=1}^N\alpha_i(y_i(w \cdot x_i + b) -1 + \xi_i) – \sum_{i=1}^N\mu_i\xi_i






L


(


w


,




b


,




ξ


,




α


,




μ


)




=



















2














1


























w

















2











+








C













i


=


1


















N




















ξ










i






































i


=


1


















N




















α










i


















(



y










i


















(


w














x










i




















+








b


)













1




+









ξ










i


















)






















i


=


1


















N




















μ










i



















ξ










i























其中,



α

i

0

μ

i

0

\alpha_i \geqslant 0,\mu_i \geqslant 0







α










i





























0






μ










i





























0




(2)求



min

w

,

b

,

ξ

 

L

(

w

,

b

,

ξ

,

α

,

μ

)

\min_{w,b,\xi} \ L(w,b,\xi,\alpha,\mu)







min











w


,


b


,


ξ























L


(


w


,




b


,




ξ


,




α


,




μ


)




拉格朗日函数



L

(

w

,

b

,

ξ

,

α

,

μ

)

L(w,b,\xi,\alpha,\mu)






L


(


w


,




b


,




ξ


,




α


,




μ


)





依次对



w

,

b

,

ξ

w,b,\xi






w


,




b


,




ξ





求偏导数并令为0:





w

L

(

w

,

b

,

ξ

,

α

,

μ

)

=

w

i

=

1

N

α

i

y

i

x

i

=

0

b

L

(

w

,

b

,

ξ

,

α

,

μ

)

=

i

=

1

N

α

i

y

i

=

0

ξ

i

L

(

w

,

b

,

ξ

,

α

,

μ

)

=

C

α

i

μ

i

=

0

\nabla_wL(w,b,\xi,\alpha,\mu) = w – \sum_{i=1}^N\alpha_iy_ix_i = 0\\ \nabla_bL(w,b,\xi,\alpha,\mu) = -\sum_{i=1}^N\alpha_iy_i = 0\\ \nabla_{\xi_i}L(w,b,\xi,\alpha,\mu) = C – \alpha_i – \mu_i = 0


















w


















L


(


w


,




b


,




ξ


,




α


,




μ


)




=








w






















i


=


1


















N




















α










i



















y










i



















x










i




















=








0




















b


















L


(


w


,




b


,




ξ


,




α


,




μ


)




=






















i


=


1


















N




















α










i



















y










i




















=








0






















ξ










i



































L


(


w


,




b


,




ξ


,




α


,




μ


)




=








C














α










i






























μ










i




















=








0







得:





w

=

i

=

1

N

α

i

y

i

x

i

i

=

1

N

α

i

y

i

=

0

C

α

i

μ

i

=

0

w = \sum_{i=1}^N\alpha_iy_ix_i \\ \sum_{i=1}^N\alpha_iy_i = 0 \\ C – \alpha_i – \mu_i = 0






w




=

















i


=


1


















N




















α










i



















y










i



















x










i



































i


=


1


















N




















α










i



















y










i




















=








0








C














α










i






























μ










i




















=








0





代入拉格朗日函数,得:





min

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_{w,b,\xi} \ L(w,b,\xi,\alpha,\mu) = -\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_j(x_i \cdot x_j) + \sum_{i=1}^N\alpha_i















w


,


b


,


ξ









min





















L


(


w


,




b


,




ξ


,




α


,




μ


)




=






















2














1































i


=


1


















N




























j


=


1


















N




















α










i



















α










j



















y










i



















y










j


















(



x










i






























x










j


















)




+

















i


=


1


















N




















α










i





















(3)再对



min

w

,

b

,

ξ

 

L

(

w

,

b

,

ξ

,

α

,

μ

)

\min_{w,b,\xi} \ L(w,b,\xi,\alpha,\mu)







min











w


,


b


,


ξ























L


(


w


,




b


,




ξ


,




α


,




μ


)









α

\alpha






α





的极大,即得对偶问题:





max

α

1

2

i

=

1

N

j

=

1

N

α

i

α

j

y

i

y

j

(

x

i

x

j

)

+

i

=

1

N

α

i

s

.

t

.

i

=

1

N

α

i

y

i

=

0

C

α

i

μ

i

=

0

α

i

0

μ

i

0

i

=

1

,

2

,

.

.

.

,

N

\max_{\alpha} \quad – \frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_j(x_i \cdot x_j) +\sum_{i=1}^N\alpha_i \\ s.t. \quad \sum_{i=1}^N \alpha_iy_i = 0 \\ C – \alpha_i – \mu_i = 0 \\ \alpha_i \geqslant 0 \\ \mu_i \geqslant 0, i = 1,2,…,N















α









max



































2














1































i


=


1


















N




























j


=


1


















N




















α










i



















α










j



















y










i



















y










j


















(



x










i






























x










j


















)




+

















i


=


1


















N




















α










i
























s


.


t


.















i


=


1


















N




















α










i



















y










i




















=








0








C














α










i






























μ










i




















=








0









α










i





























0









μ










i





























0





i




=








1


,




2


,




.


.


.


,




N







将上式的目标函数由求极大转换为求极小,再将约束条件合并,得到等价的

对偶最优化问题:





min

α

1

2

i

=

1

N

j

=

1

N

α

i

α

j

y

i

y

j

(

x

i

x

j

)

i

=

1

N

α

i

s

.

t

.

i

=

1

N

α

i

y

i

=

0

0

α

i

C

i

=

1

,

2

,

.

.

.

,

N

\min_{\alpha} \quad \frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_j(x_i \cdot x_j) – \sum_{i=1}^N\alpha_i \\ s.t. \quad \sum_{i=1}^N \alpha_iy_i = 0 \\ 0 \leqslant \alpha_i \leqslant C,i = 1,2,…,N















α









min
































2














1































i


=


1


















N




























j


=


1


















N




















α










i



















α










j



















y










i



















y










j


















(



x










i






























x










j


















)






















i


=


1


















N




















α










i
























s


.


t


.















i


=


1


















N




















α










i



















y










i




















=








0








0














α










i





























C





i




=








1


,




2


,




.


.


.


,




N







线性支持向量机对偶算法:

输入:线性可分训练数据集



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




=








{



(



x










1


















,





y










1


















)


,




(



x










2


















,





y










2


















)


,




.


.


.


,




(



x










N


















,





y










N


















)


}





,其中,



x

i

X

=

R

n

y

i

Y

=

{

1

,

+

1

}

i

=

1

,

2

,

.

.

.

,

N

x_i \in \mathcal{X} = R^n,y_i \in \mathcal{Y}=\{-1,+1\},i=1,2,…,N







x










i






























X





=









R










n













y










i






























Y





=








{






1


,




+


1


}





i




=








1


,




2


,




.


.


.


,




N







输出:最大间隔分离超平面和分类决策函数。

(1)选择惩罚系数



C

&gt;

0

C &gt; 0






C




>








0





,构造并求解约束最优化问题:





min

α

1

2

i

=

1

N

j

=

1

N

α

i

α

j

y

i

y

j

(

x

i

x

j

)

i

=

1

N

α

i

s

.

t

.

i

=

1

N

α

i

y

i

=

0

0

α

i

C

i

=

1

,

2

,

.

.

.

,

N

\min_{\alpha} \quad \frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_j(x_i \cdot x_j) – \sum_{i=1}^N\alpha_i \\ s.t. \quad \sum_{i=1}^N \alpha_iy_i = 0 \\ 0 \leqslant \alpha_i \leqslant C,i = 1,2,…,N















α









min
































2














1































i


=


1


















N




























j


=


1


















N




















α










i



















α










j



















y










i



















y










j


















(



x










i






























x










j


















)






















i


=


1


















N




















α










i
























s


.


t


.















i


=


1


















N




















α










i



















y










i




















=








0








0














α










i





























C





i




=








1


,




2


,




.


.


.


,




N







求得最优解



α

=

(

α

1

,

α

2

,

.

.

.

,

α

N

)

T

\alpha^*=(\alpha_1^*,\alpha_2^*,…,\alpha_N^*)^T







α






















=








(



α










1



























,





α










2



























,




.


.


.


,





α










N




























)










T














(2)计算:





w

=

i

=

1

N

α

i

y

i

x

i

w^* = \sum_{i=1}^N\alpha_i^*y_ix_i







w






















=

















i


=


1


















N




















α










i




























y










i



















x










i























并选择



α

\alpha^*







α























的一个分量



α

j

\alpha_j^*







α










j






























适合条件



0

&lt;

α

j

&lt;

C

0 &lt; \alpha_j^* &lt; C






0




<









α










j





























<








C





,计算:





b

=

y

j

i

=

1

N

α

i

y

i

(

x

i

x

j

)

b^* = y_j – \sum_{i=1}^N\alpha_i^*y_i(x_i \cdot x_j)







b






















=









y










j






































i


=


1


















N




















α










i




























y










i


















(



x










i






























x










j


















)







(3)求得分离超平面:





w

x

+

b

=

0

w^* \cdot x+b^* = 0







w































x




+









b






















=








0







分类决策函数:





f

(

x

)

=

s

i

g

n

(

w

x

+

b

)

f(x) = sign(w^* \cdot x+b^* )






f


(


x


)




=








s


i


g


n


(



w































x




+









b




















)







3、软间隔支持向量

这里写图片描述

软间隔的支持向量



x

i

x_i







x










i





















或在间隔边界上,或在间隔边界与分离超平面之间,或在分离超平面误分一侧。





  • α

    i

    &lt;

    C

    \alpha_i^* &lt;C







    α










    i





























    <








    C





    ,则



    ξ

    i

    =

    0

    \xi_i=0







    ξ










    i




















    =








    0





    ,支持向量



    x

    i

    x_i







    x










    i





















    恰好落在间隔边界上;





  • α

    i

    =

    C

    \alpha_i^*=C







    α










    i





























    =








    C









    0

    &lt;

    ξ

    i

    &lt;

    1

    0 &lt; \xi_i &lt; 1






    0




    <









    ξ










    i




















    <








    1





    ,则



    y

    i

    (

    w

    x

    i

    +

    b

    )

    &gt;

    1

    ξ

    i

    &gt;

    0

    y_i(w \cdot x_i+b) &gt; 1-\xi_i &gt;0







    y










    i


















    (


    w














    x










    i




















    +








    b


    )




    >








    1














    ξ










    i




















    >








    0





    ,则正确分类,支持向量



    x

    i

    x_i







    x










    i





















    在间隔边界与分离超平面之间;





  • α

    i

    =

    C

    \alpha_i^* = C







    α










    i





























    =








    C









    ξ

    i

    =

    1

    \xi_i=1







    ξ










    i




















    =








    1





    ,支持向量



    x

    i

    x_i







    x










    i





















    在分离超平面上;





  • α

    i

    =

    C

    \alpha_i^* = C







    α










    i





























    =








    C









    ξ

    i

    &gt;

    1

    \xi_i &gt; 1







    ξ










    i




















    >








    1





    ,支持向量



    x

    i

    x_i







    x










    i





















    在分离超平面误分一侧;



五、非线性支持向量机

通过一个分析,我们可以将非线性支持向量机算法描述如下:

输入:训练数据集




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




=








{



(



x










1


















,





y










1


















)


,




(



x










2


















,





y










2


















)


,




.


.


.


,




(



x










N


















,





y










N


















)


}





,其中



x

i

X

=

R

n

y

i

Y

=

{

1

,

+

1

}

i

=

1

,

2

,

.

.

.

,

N

x_i \in \mathcal{X} = R^n,y_i \in \mathcal{Y} = \{-1,+1\},i = 1,2,…,N







x










i






























X





=









R










n













y










i






























Y





=








{






1


,




+


1


}





i




=








1


,




2


,




.


.


.


,




N





输出:分类决策函数。

(1)选取适当的核函数



K

(

x

,

z

)

K(x,z)






K


(


x


,




z


)





和适当的参数



C

C






C





,构造并求解最优化问题:





min

α

1

2

i

=

1

N

j

=

1

N

α

i

α

j

y

i

y

j

K

(

x

i

,

x

j

)

i

=

1

N

α

i

s

.

t

.

i

=

1

N

α

i

y

i

=

0

0

α

i

C

i

=

1

,

2

,

.

.

.

,

N

\min_\alpha \quad \frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_jK(x_i,x_j)-\sum_{i=1}^N\alpha_i \\ s.t. \quad \sum_{i=1}^N\alpha_iy_i = 0 \\ 0 \leqslant \alpha_i \leqslant C,i=1,2,…,N














α








min
































2














1































i


=


1


















N




























j


=


1


















N




















α










i



















α










j



















y










i



















y










j


















K


(



x










i


















,





x










j


















)






















i


=


1


















N




















α










i
























s


.


t


.















i


=


1


















N




















α










i



















y










i




















=








0








0














α










i





























C





i




=








1


,




2


,




.


.


.


,




N







求得最优解



α

=

(

α

1

,

α

2

,

.

.

.

,

α

N

)

T

\alpha^* = (\alpha_1^*,\alpha_2^*,…,\alpha_N^*)^T







α






















=








(



α










1



























,





α










2



























,




.


.


.


,





α










N




























)










T












(2)选择



α

\alpha^*







α























的一个正分量



0

&lt;

α

j

&lt;

C

0 &lt; \alpha_j &lt; C






0




<









α










j




















<








C





,计算:





b

=

y

j

i

=

1

N

α

i

y

i

K

(

x

i

,

x

j

)

b^* = y_j – \sum_{i=1}^N\alpha_i^*y_iK(x_i,x_j)







b






















=









y










j






































i


=


1


















N




















α










i




























y










i


















K


(



x










i


















,





x










j


















)





(3)构造决策函数:





f

(

x

)

=

s

i

g

n

(

i

=

1

N

α

i

y

i

K

(

x

,

x

i

)

+

b

)

f(x) = sign(\sum_{i=1}^N\alpha_i^*y_iK(x,x_i)+b^*)






f


(


x


)




=








s


i


g


n


(











i


=


1


















N




















α










i




























y










i


















K


(


x


,





x










i


















)




+









b




















)









K

(

x

,

z

)

K(x,z)






K


(


x


,




z


)





是正定核函数时,该问题为凸二次规划问题,解是存在的。



六、

SMO

算法

通过前面的介绍,相信大家已经对支持向量机有了一定的了解,我们知道,支持向量机的学习问题可以形式化为

求解凸二次规划问题





min

α

1

2

i

=

1

N

j

=

1

N

α

i

α

j

y

i

y

j

K

(

x

i

,

x

j

)

i

=

1

N

α

i

s

.

t

.

i

=

1

N

α

i

y

i

=

0

0

α

i

C

,

i

=

1

,

2

,

.

.

.

,

N

\min_\alpha \quad \frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_jK(x_i,x_j)- \sum_{i=1}^N\alpha_i \\ s.t. \quad \sum_{i=1}^N\alpha_iy_i =0 \\ 0 \leqslant \alpha_i \leqslant C,\quad i = 1,2,…,N














α








min
































2














1































i


=


1


















N




























j


=


1


















N




















α










i



















α










j



















y










i



















y










j


















K


(



x










i


















,





x










j


















)






















i


=


1


















N




















α










i
























s


.


t


.















i


=


1


















N




















α










i



















y










i




















=








0








0














α










i





























C


,






i




=








1


,




2


,




.


.


.


,




N





其中,一个变量



α

i

\alpha_i







α










i





















对应一个样本点



(

x

i

,

y

i

)

(x_i,y_i)






(



x










i


















,





y










i


















)





这样的凸二次规划问题具有全局最优解,也有许多最优化算法可以用于求解这一问题,但是当训练数据集容量很大时,这些算法往往变得非常低效。

接下来介绍的

SMO

算法(序列最小最优化算法)便是可以快速求解此问题的算法。



1、

SMO

算法概念




\quad\quad














SMO

算法是由



J

o

h

n

P

l

a

t

t

,

1998

John Platt,1998






J


o


h


n


P


l


a


t


t


,




1


9


9


8





提出,是一种启发式算法。

SMO

算法是

将大优化问题分解为多个小优化问题求解的

,这些小优化问题往往很容易求解,并且对它们进行顺序求解的结果与将它们作为整体来说求解的结果是一样的。


SMO

算法的目标是求出一系列



α

\alpha






α









b

b






b





,一旦求出这些



α

\alpha






α





,就很容易计算出权重向量



w

w






w





并且得到分离超平面。




SMO

算法的基本思路:

如果所有变量(即拉格朗日乘子



α

i

\alpha_i







α










i





















)的解都满足此最优化问题的



K

K

T

KKT






K


K


T





条件,那么这个最优化问题的解就得到了(因为



K

K

T

KKT






K


K


T





条件是该最优化问题的充分必要条件)。


此最优化问题的



K

T

T

KTT






K


T


T





条件:






α

i

=

0

y

i

g

(

x

i

)

1

0

&lt;

α

i

&lt;

C

y

i

g

(

x

i

)

=

1

α

i

=

C

y

i

g

(

x

i

)

1

\alpha_i = 0 \Leftrightarrow y_ig(x_i) \geqslant 1 \\ 0 &lt; \alpha_i &lt; C \Leftrightarrow y_ig(x_i)=1 \\ \alpha_i = C \Leftrightarrow y_ig(x_i) \leqslant 1







α










i




















=








0














y










i


















g


(



x










i


















)













1








0




<









α










i




















<








C














y










i


















g


(



x










i


















)




=








1









α










i




















=








C














y










i


















g


(



x










i


















)













1





其中:





g

(

x

i

)

=

j

=

1

N

α

j

y

j

K

(

x

i

,

x

j

)

+

b

g(x_i) = \sum_{j=1}^N\alpha_jy_jK(x_i,x_j)+b






g


(



x










i


















)




=

















j


=


1


















N




















α










j



















y










j


















K


(



x










i


















,





x










j


















)




+








b





那么问题就是:如何使所有变量都满足



K

T

T

KTT






K


T


T





条件呢?

  • 先固定



    α

    i

    \alpha_i







    α










    i





















    之外的所有参数,然后求



    α

    i

    \alpha_i







    α










    i





















    上的极值。由于约束条件



    i

    =

    1

    N

    α

    i

    y

    i

    =

    0

    \sum_{i=1}^N\alpha_iy_i =0



















    i


    =


    1









    N





















    α










    i



















    y










    i




















    =








    0





    的存在,若固定其他变量,那么



    α

    i

    \alpha_i







    α










    i





















    可由其他变量导出。

  • 于是,

    SMO

    算法每次循环选择两个变量,固定其他变量,针对这两个变量构建一个二次规划问题,这个二次规划问题关于这两个变量的解应该更接近原始二次规划问题的解,因为这会使得原始二次规划问题的目标函数值变得更小。

  • 小优化问题(子问题)可以通过解析方法求解,这样可以大大提高整个算法的计算速度,子问题有两个变量,一个是违背



    K

    K

    T

    KKT






    K


    K


    T





    条件最严重的那一个,一个是由约束条件自动确定。如此,

    SMO

    算法将原始问题不断分解为子问题并对子问题求解,进而达到求解原问题的目的。

  • 整个

    SMO

    算法包括两个部分:求解两个变量二次规划的解析方法和选择变量的启发式方法。



2、两个变量二次规划的求解方法





min

α

1

2

i

=

1

N

j

=

1

N

α

i

α

j

y

i

y

j

K

(

x

i

,

x

j

)

i

=

1

N

α

i

s

.

t

.

i

=

1

N

α

i

y

i

=

0

0

α

i

C

,

i

=

1

,

2

,

.

.

.

,

N

\min_\alpha \quad \frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_jK(x_i,x_j)- \sum_{i=1}^N\alpha_i \\ s.t. \quad \sum_{i=1}^N\alpha_iy_i =0 \\ 0 \leqslant \alpha_i \leqslant C,\quad i = 1,2,…,N














α








min
































2














1































i


=


1


















N




























j


=


1


















N




















α










i



















α










j



















y










i



















y










j


















K


(



x










i


















,





x










j


















)






















i


=


1


















N




















α










i
























s


.


t


.















i


=


1


















N




















α










i



















y










i




















=








0








0














α










i





























C


,






i




=








1


,




2


,




.


.


.


,




N





不失一般性,假设选择的两个变量为



α

1

,

α

2

\alpha_1,\alpha_2







α










1


















,





α










2





















,其他变量



α

i

(

i

=

3

,

4

,

.

.

.

,

N

)

\alpha_i(i=3,4,…,N)







α










i


















(


i




=








3


,




4


,




.


.


.


,




N


)





是固定的,于是上面的最优化问题的子问题就可以写为(注意:这里面去掉了不包含



α

1

,

α

2

\alpha_1,\alpha_2







α










1


















,





α










2





















的常数项):





min

α

1

,

α

2

W

(

α

1

,

α

2

)

=

1

2

K

11

α

1

2

+

1

2

K

22

α

2

2

+

y

1

y

2

K

12

α

1

α

2

(

α

1

+

α

2

)

+

y

1

α

1

i

=

3

N

y

i

α

i

K

i

1

+

y

2

α

2

i

=

3

N

y

i

α

i

K

i

2

s

.

t

.

α

1

y

1

+

α

2

y

2

=

i

=

3

N

y

i

α

i

=

ς

0

α

i

C

,

i

=

1

,

2

\min_{\alpha_1,\alpha_2} \quad W(\alpha_1,\alpha_2) = \frac{1}{2}K_{11}\alpha_1^2+\frac{1}{2}K_{22}\alpha_2^2+y_1y_2K_{12}\alpha_1\alpha_2 \\ -(\alpha_1+\alpha_2)+y_1\alpha_1\sum_{i=3}^Ny_i\alpha_iK_{i1}+y_2\alpha_2\sum_{i=3}^Ny_i\alpha_iK_{i2} \\ s.t. \quad \alpha_1y_1+\alpha_2y_2 = – \sum_{i=3}^Ny_i\alpha_i = \varsigma \\ 0 \leqslant \alpha_i \leqslant C, \quad i=1,2
















α










1


















,



α










2

























min





















W


(



α










1


















,





α










2


















)




=



















2














1





















K











1


1




















α










1








2




















+



















2














1





















K











2


2




















α










2








2




















+









y










1



















y










2



















K











1


2




















α










1



















α










2



































(



α










1




















+









α










2


















)




+









y










1



















α










1





























i


=


3


















N




















y










i



















α










i



















K











i


1





















+









y










2



















α










2





























i


=


3


















N




















y










i



















α










i



















K











i


2

























s


.


t


.





α










1



















y










1




















+









α










2



















y










2




















=






















i


=


3


















N




















y










i



















α










i




















=








ς








0














α










i





























C


,






i




=








1


,




2





其中,



K

i

j

=

K

(

x

i

,

x

j

)

=

K

j

i

,

i

,

j

=

1

,

2

,

.

.

.

,

N

K_{ij} = K(x_i,x_j)=K_{ji},\quad i,j =1,2,…,N







K











i


j





















=








K


(



x










i


















,





x










j


















)




=









K











j


i



















,






i


,




j




=








1


,




2


,




.


.


.


,




N









ς

\varsigma






ς





是常数,



y

i

2

=

1

y_i^2 = 1







y










i








2




















=








1






为了求解两个变量的二次规划问题,首先,我们先来分析约束条件,然后在约束条件下求极小。

因为只有两个变量,我们可以在二维空间表示,由约束条件:





0

α

i

C

,

i

=

1

,

2

0 \leqslant \alpha_i \leqslant C, \quad i=1,2






0














α










i





























C


,






i




=








1


,




2







可画出二维空间图,如下:

在这里插入图片描述

由约束条件:





α

1

y

1

+

α

2

y

2

=

i

=

3

N

y

i

α

i

=

ς

\alpha_1y_1+\alpha_2y_2 = – \sum_{i=3}^Ny_i\alpha_i = \varsigma







α










1



















y










1




















+









α










2



















y










2




















=






















i


=


3


















N




















y










i



















α










i




















=








ς





可用图中虚线表示,该虚线是平行于对角线的。因此要求的是目标函数在一条平行于对角线的线段(即虚线)上的最优解。

我们可以将两个变量的优化问题变为实质上的单变量的最优化问题,不妨考虑变量为



α

2

\alpha_2







α










2





















的最优化问题。

假设两个变量的初始可行解为



α

1

o

l

d

,

α

2

o

l

d

\alpha_1^{old},\alpha_2^{old}







α










1









o


l


d



















,





α










2









o


l


d






















,最优解为



α

1

n

e

w

,

α

2

n

e

w

\alpha_1^{new},\alpha_2^{new}







α










1









n


e


w



















,





α










2









n


e


w






















,并且假设在沿着约束方向未经剪辑(即未考虑不等式约束



0

α

i

C

0 \leqslant \alpha_i \leqslant C






0














α










i





























C





)时



α

2

\alpha_2







α










2





















的最优解为



α

2

n

e

w

,

u

n

c

\alpha_2^{new,unc}







α










2









n


e


w


,


u


n


c





















由于



α

2

n

e

w

\alpha_2^{new}







α










2









n


e


w






















满足不等式约束



0

α

i

C

0 \leqslant \alpha_i \leqslant C






0














α










i





























C





,因此最优解



α

2

n

e

w

\alpha_2^{new}







α










2









n


e


w






















的取值范围必须满足条件:





L

α

2

n

e

w

H

L \leqslant \alpha_2^{new} \leqslant H






L














α










2









n


e


w






























H







其中,若



y

1

y

2

y_1 \neq y_2







y










1

































̸





















=










y










2





















异号,根据



α

1

o

l

d

y

1

+

α

2

o

l

d

y

2

=

ς

\alpha_1^{old}y_1+\alpha_2^{old}y_2 = \varsigma







α










1









o


l


d




















y










1




















+









α










2









o


l


d




















y










2




















=








ς





得,



α

1

o

l

d

α

2

o

l

d

=

ς

\alpha_1^{old}-\alpha_2^{old} = \varsigma







α










1









o


l


d































α










2









o


l


d





















=








ς





,所以:





L

=

m

a

x

(

0

,

ς

)

H

=

m

i

n

(

C

,

C

ς

)

L = max(0, -\varsigma) \\ H = min(C, C-\varsigma)






L




=








m


a


x


(


0


,







ς


)








H




=








m


i


n


(


C


,




C













ς


)









y

1

=

y

2

y_1=y_2







y










1




















=









y










2





















同号,则:





L

=

m

a

x

(

0

,

ς

C

)

H

=

m

i

n

(

C

,

ς

)

L = max(0, \varsigma-C) \\ H = min(C,\varsigma)






L




=








m


a


x


(


0


,




ς













C


)








H




=








m


i


n


(


C


,




ς


)





如此,根据



y

1

y

2

y_1、y_2







y










1






















y










2





















异号或同号,可得出



α

2

n

e

w

\alpha_2^{new}







α










2









n


e


w






















的上下界为:





{

L

=

m

a

x

(

0

,

α

2

o

l

d

α

1

o

l

d

)

,

H

=

m

i

n

(

C

,

C

+

α

2

o

l

d

α

1

o

l

d

)

y

1

y

2

L

=

m

a

x

(

0

,

α

2

o

l

d

+

α

1

o

l

d

C

)

,

H

=

m

i

n

(

C

,

α

2

o

l

d

+

α

1

o

l

d

)

y

1

=

y

2

\begin{cases} L = max(0, \alpha_2^{old}-\alpha_1^{old}),H =min(C,C+ \alpha_2^{old}-\alpha_1^{old}) \quad\quad y_1\neq y_2 \\ L = max(0, \alpha_2^{old}+\alpha_1^{old}-C),H =min(C,\alpha_2^{old}+\alpha_1^{old}) \quad\quad y_1= y_2 \end{cases}








{














L




=




m


a


x


(


0


,





α










2









o


l


d



























α










1









o


l


d



















)


,




H




=




m


i


n


(


C


,




C




+





α










2









o


l


d



























α










1









o


l


d



















)







y










1

































̸





















=






y










2
























L




=




m


a


x


(


0


,





α










2









o


l


d





















+





α










1









o


l


d


























C


)


,




H




=




m


i


n


(


C


,





α










2









o


l


d





















+





α










1









o


l


d



















)







y










1




















=





y










2









































下面我们先求沿着约束方向未经剪辑时



α

2

\alpha_2







α










2





















的最优解



α

2

n

e

w

,

u

n

c

\alpha_2^{new,unc}







α










2









n


e


w


,


u


n


c






















;然后再就剪辑后



α

2

\alpha_2







α










2





















的最优解



α

2

n

e

w

\alpha_2^{new}







α










2









n


e


w






















再求之前,我们先记:





g

(

x

i

)

=

j

=

1

N

α

j

y

j

K

(

x

i

,

x

j

)

+

b

g(x_i) = \sum_{j=1}^N\alpha_jy_jK(x_i,x_j)+b






g


(



x










i


















)




=

















j


=


1


















N




















α










j



















y










j


















K


(



x










i


















,





x










j


















)




+








b







令:





E

i

=

g

(

x

i

)

y

i

=

(

j

=

1

N

α

j

y

j

K

(

x

i

,

x

j

)

+

b

)

y

i

,

i

=

1

,

2

E_i = g(x_i) – y_i = (\sum_{j=1}^N\alpha_jy_jK(x_i,x_j)+b)-y_i, \quad i=1,2







E










i




















=








g


(



x










i


















)














y










i




















=








(











j


=


1


















N




















α










j



















y










j


















K


(



x










i


















,





x










j


















)




+








b


)














y










i


















,






i




=








1


,




2











i

=

1

,

2

i=1,2






i




=








1


,




2





时,




E

i

E_i







E










i





















为函数



g

(

x

)

g(x)






g


(


x


)





对输入



x

i

x_i







x










i





















的预测值与真实输出



y

i

y_i







y










i





















之差


定理:


最优化问题沿着约束方向未经剪辑时的解为:





α

2

n

e

w

,

u

n

c

=

α

2

o

l

d

+

y

2

(

E

1

E

2

)

η

\alpha_2^{new,unc} = \alpha_2^{old}+\frac{y_2(E_1-E_2)}{\eta}







α










2









n


e


w


,


u


n


c





















=









α










2









o


l


d





















+



















η















y










2


















(



E










1


























E










2


















)

























其中:





η

=

K

11

+

K

22

2

K

12

\eta = K_{11}+ K_{22}-2 K_{12}






η




=









K











1


1





















+









K











2


2






























2



K











1


2
























经剪辑后



α

2

\alpha_2







α










2





















的解是:





α

2

n

e

w

=

{

H

,

α

2

n

e

w

,

u

n

c

&gt;

H

α

2

n

e

w

,

u

n

c

,

 

L

α

2

n

e

w

,

u

n

c

H

L

,

α

2

n

e

w

,

u

n

c

&lt;

L

\alpha_2^{new} = \begin{cases} H, \quad \quad \quad \quad \alpha_2^{new,unc} &gt; H \\ \alpha_2^{new,unc}, \quad \ L \leqslant \alpha_2^{new,unc} \leqslant H \\ L, \quad \quad \quad \quad \alpha_2^{new,unc}&lt;L \end{cases}







α










2









n


e


w





















=



















































































H


,













α










2









n


e


w


,


u


n


c





















>




H









α










2









n


e


w


,


u


n


c



















,








L










α










2









n


e


w


,


u


n


c


























H








L


,













α










2









n


e


w


,


u


n


c





















<




L































α

2

n

e

w

\alpha_2^{new}







α










2









n


e


w






















求得



α

1

n

e

w

\alpha_1^{new}







α










1









n


e


w






















是:





α

1

n

e

w

=

α

1

o

l

d

+

y

1

y

2

(

α

2

o

l

d

α

2

n

e

w

)

\alpha_1^{new} = \alpha_1^{old}+y_1y_2(\alpha_2^{old}-\alpha_2^{new})







α










1









n


e


w





















=









α










1









o


l


d





















+









y










1



















y










2


















(



α










2









o


l


d































α










2









n


e


w



















)






证明:


引进记号:





v

i

=

j

=

3

N

α

j

y

j

K

(

x

i

,

x

j

)

=

g

(

x

i

)

j

=

1

2

α

j

y

j

K

(

x

i

,

x

j

)

b

,

i

=

1

,

2

v_i = \sum_{j=3}^N\alpha_jy_jK(x_i,x_j) = g(x_i) – \sum_{j=1}^2\alpha_jy_jK(x_i,x_j)-b, \quad i=1,2







v










i




















=

















j


=


3


















N




















α










j



















y










j


















K


(



x










i


















,





x










j


















)




=








g


(



x










i


















)






















j


=


1


















2




















α










j



















y










j


















K


(



x










i


















,





x










j


















)













b


,






i




=








1


,




2







目标函数可写成:





W

(

α

1

,

α

2

)

=

1

2

K

11

α

1

2

+

1

2

K

22

α

2

2

+

y

1

y

2

K

12

α

1

α

2

(

α

1

+

α

2

)

+

y

1

v

1

α

1

+

y

2

v

2

α

2

W(\alpha_1,\alpha_2) = \frac{1}{2}K_{11}\alpha_1^2+\frac{1}{2}K_{22}\alpha_2^2+y_1y_2K_{12}\alpha_1\alpha_2 -(\alpha_1+\alpha_2)+y_1v_1\alpha_1+y_2v_2\alpha_2






W


(



α










1


















,





α










2


















)




=



















2














1





















K











1


1




















α










1








2




















+



















2














1





















K











2


2




















α










2








2




















+









y










1



















y










2



















K











1


2




















α










1



















α










2





























(



α










1




















+









α










2


















)




+









y










1



















v










1



















α










1




















+









y










2



















v










2



















α










2



























α

1

y

1

=

ς

α

2

y

2

\alpha_1y_1 = \varsigma – \alpha_2y_2







α










1



















y










1




















=








ς














α










2



















y










2





















以及



y

i

2

=

1

y_i^2 =1







y










i








2




















=








1





,可将



α

1

\alpha_1







α










1





















表示为:





α

1

=

(

ς

y

2

α

2

)

y

1

\alpha_1 = (\varsigma-y_2\alpha_2)y_1







α










1




















=








(


ς














y










2



















α










2


















)



y










1























代入改写后的目标函数得:





W

(

α

1

,

α

2

)

=

1

2

K

11

(

ς

y

2

α

2

)

2

+

1

2

K

22

α

2

2

+

y

2

K

12

(

ς

y

2

α

2

)

α

2

(

ς

y

2

α

2

)

y

1

α

2

+

v

1

(

ς

y

2

α

2

)

+

y

2

v

2

α

2

W(\alpha_1,\alpha_2) = \frac{1}{2}K_{11}(\varsigma-y_2\alpha_2)^2+\frac{1}{2}K_{22}\alpha_2^2+y_2K_{12}(\varsigma-y_2\alpha_2)\alpha_2 -(\varsigma-y_2\alpha_2)y_1-\alpha_2+v_1(\varsigma-y_2\alpha_2)+y_2v_2\alpha_2






W


(



α










1


















,





α










2


















)




=



















2














1





















K











1


1



















(


ς














y










2



















α










2



















)










2











+



















2














1





















K











2


2




















α










2








2




















+









y










2



















K











1


2



















(


ς














y










2



















α










2


















)



α










2





























(


ς














y










2



















α










2


















)



y










1






























α










2




















+









v










1


















(


ς














y










2



















α










2


















)




+









y










2



















v










2



















α










2



























α

2

\alpha_2







α










2





















求偏导:





W

α

2

=

K

11

α

2

+

K

22

α

2

2

K

12

α

2

K

11

ς

y

2

+

K

12

ς

y

2

+

y

1

y

2

1

v

1

y

2

+

y

2

v

2

\frac{\partial W}{\partial \alpha_2} = K_{11}\alpha_2+K_{22}\alpha_2-2K_{12}\alpha_2-K_{11}\varsigma y_2+K_{12}\varsigma y_2+y_1y_2-1-v_1y_2+y_2v_2





















α










2

































W






















=









K











1


1




















α










2




















+









K











2


2




















α










2





























2



K











1


2




















α










2






























K











1


1



















ς



y










2




















+









K











1


2



















ς



y










2




















+









y










1



















y










2





























1














v










1



















y










2




















+









y










2



















v










2























令偏导数为0,得到:





(

K

11

+

K

22

2

K

12

)

α

2

=

y

2

(

y

2

y

1

+

ς

K

11

ς

K

12

+

v

1

v

2

)

=

y

2

[

y

2

y

1

+

ς

K

11

ς

K

12

+

(

g

(

x

1

)

j

=

1

2

y

j

α

j

K

1

j

b

)

(

g

(

x

2

)

j

=

1

2

y

j

α

j

K

2

j

b

)

]

(K_{11}+K_{22}-2K_{12})\alpha_2 = y_2(y_2-y_1+\varsigma K_{11}-\varsigma K_{12}+v_1-v_2) \\ = y_2\Big[y_2-y_1+\varsigma K_{11}-\varsigma K_{12}+\Big(g(x_1) – \sum_{j=1}^2y_j\alpha_jK_{1j}-b\Big)-\Big(g(x_2) – \sum_{j=1}^2y_j\alpha_jK_{2j}-b\Big)\Big]






(



K











1


1





















+









K











2


2






























2



K











1


2



















)



α










2




















=









y










2


















(



y










2






























y










1




















+








ς



K











1


1






























ς



K











1


2





















+









v










1






























v










2


















)










=









y










2



















[




y










2






























y










1




















+








ς



K











1


1






























ς



K











1


2





















+









(



g


(



x










1


















)






















j


=


1


















2




















y










j



















α










j



















K











1


j






























b



)















(



g


(



x










2


















)






















j


=


1


















2




















y










j



















α










j



















K











2


j






























b



)




]












ς

=

α

1

o

l

d

y

1

+

α

2

o

l

d

y

2

\varsigma = \alpha_1^{old}y_1+\alpha_2^{old}y_2






ς




=









α










1









o


l


d




















y










1




















+









α










2









o


l


d




















y










2





















代入,得到:





(

K

11

+

K

22

2

K

12

)

α

2

n

e

w

,

u

n

c

=

y

2

(

(

K

11

+

K

22

2

K

12

)

α

2

o

l

d

y

2

+

y

2

y

1

+

g

(

x

1

)

g

(

x

2

)

)

=

(

K

11

+

K

22

2

K

12

)

α

2

o

l

d

+

y

2

(

E

1

E

2

)

(K_{11}+K_{22}-2K_{12})\alpha_2^{new,unc}=y_2\Big((K_{11}+K_{22}-2K_{12})\alpha_2^{old}y_2+y_2-y_1+g(x_1)-g(x_2)\Big) \\ = (K_{11}+K_{22}-2K_{12})\alpha_2^{old}+y_2(E_1-E_2)






(



K











1


1





















+









K











2


2






























2



K











1


2



















)



α










2









n


e


w


,


u


n


c





















=









y










2



















(



(



K











1


1





















+









K











2


2






























2



K











1


2



















)



α










2









o


l


d




















y










2




















+









y










2






























y










1




















+








g


(



x










1


















)













g


(



x










2


















)



)











=








(



K











1


1





















+









K











2


2






























2



K











1


2



















)



α










2









o


l


d





















+









y










2


















(



E










1






























E










2


















)











η

=

K

11

+

K

22

2

K

12

\eta = K_{11}+K_{22}-2K_{12}






η




=









K











1


1





















+









K











2


2






























2



K











1


2






















代入,得到:





α

2

n

e

w

.

u

n

c

=

α

2

o

l

d

+

y

2

(

E

1

E

2

)

η

\alpha_2^{new.unc} = \alpha_2^{old}+\frac{y_2(E_1-E_2)}{\eta}







α










2









n


e


w


.


u


n


c





















=









α










2









o


l


d





















+



















η















y










2


















(



E










1


























E










2


















)

























要是其满足不等式约束必须限制在



[

L

,

H

]

[L,H]






[


L


,




H


]





内,从而得到



α

2

n

e

w

\alpha_2^{new}







α










2









n


e


w






















的表达式:





α

2

n

e

w

=

{

H

,

α

2

n

e

w

,

u

n

c

&gt;

H

α

2

n

e

w

,

u

n

c

,

 

L

α

2

n

e

w

,

u

n

c

H

L

,

α

2

n

e

w

,

u

n

c

&lt;

L

\alpha_2^{new} = \begin{cases} H, \quad \quad \quad \quad \alpha_2^{new,unc} &gt; H \\ \alpha_2^{new,unc}, \quad \ L \leqslant \alpha_2^{new,unc} \leqslant H \\ L, \quad \quad \quad \quad \alpha_2^{new,unc}&lt;L \end{cases}







α










2









n


e


w





















=



















































































H


,













α










2









n


e


w


,


u


n


c





















>




H









α










2









n


e


w


,


u


n


c



















,








L










α










2









n


e


w


,


u


n


c


























H








L


,













α










2









n


e


w


,


u


n


c





















<




L



























由等式约束:



α

1

y

1

+

α

2

y

2

=

ς

\alpha_1y_1+\alpha_2y_2 = \varsigma







α










1



















y










1




















+









α










2



















y










2




















=








ς





得到



α

1

n

e

w

\alpha_1^{new}







α










1









n


e


w






















的表达式:





α

1

n

e

w

=

α

1

o

l

d

+

y

1

y

2

(

α

2

o

l

d

α

2

n

e

w

)

\alpha_1^{new} = \alpha_1^{old}+y_1y_2(\alpha_2^{old}-\alpha_2^{new})







α










1









n


e


w





















=









α










1









o


l


d





















+









y










1



















y










2


















(



α










2









o


l


d































α










2









n


e


w



















)







至此,我们就得到了最优化问题的解:





(

α

1

n

e

w

,

α

2

n

e

w

)

(\alpha_1^{new},\alpha_2^{new})






(



α










1









n


e


w



















,





α










2









n


e


w



















)







3、变量的选择方法


SMO

称选择第一个变量的过程为外层循环,外层循环在训练样本中选违反



K

K

T

KKT






K


K


T





条件最严重的样本点,并将其对应的变量作为第一个变量。具体地,检验训练样本点



(

x

i

,

y

i

)

(x_i,y_i)






(



x










i


















,





y










i


















)





是否满足



K

K

T

KKT






K


K


T





条件。


SMO

称选择第二个变量的过程为内层循环。假设在外层循环中已经找到第一个变量



α

1

\alpha_1







α










1





















,现在要在内层循环中找第二个变量



α

2

\alpha_2







α










2





















。第二个变量选择的标准是希望能使



α

2

\alpha_2







α










2





















有足够大的变化。有前面的公式可知,



α

2

n

e

w

\alpha_2^{new}







α










2









n


e


w






















依赖于



E

1

E

2

|E_1-E_2|










E










1






























E










2
























,一种简单的做法就是使其对应的



E

1

E

2

|E_1-E_2|










E










1






























E










2
























最大,因为



α

1

\alpha_1







α










1





















已定,



E

1

E_1







E










1





















也就确定了。那么,如果



E

1

E_1







E










1





















为正的,那么选择最小的



E

i

E_i







E










i





















作为



E

2

E_2







E










2





















;如果



E

1

E_1







E










1





















为负的,那么选择最大的



E

i

E_i







E










i





















作为



E

2

E_2







E










2





















一般情况下,采用启发式规则选择第二个变量



α

2

\alpha_2







α










2





















。遍历在间隔边界上的支持向量点,依次将其对应的变量作为



α

2

\alpha_2







α










2





















试用,直到目标函数有足够的下降。若找不到合适的



α

2

\alpha_2







α










2





















,那么遍历整个训练数据集;若找不到合适的



α

2

\alpha_2







α










2





















,则放弃第一个



α

2

\alpha_2







α










2





















,再通过外层循环寻找另一个



α

1

\alpha_1







α










1























4、计算阀值



b

b






b





和差值



E

i

E_i







E










i





















在每次完成两个变量的优化后,都要重新计算阀值



b

b






b





,当



0

&lt;

α

1

n

e

w

&lt;

C

0 &lt; \alpha_1^{new} &lt; C






0




<









α










1









n


e


w





















<








C





时,由



K

K

T

KKT






K


K


T





条件可知:





i

=

1

N

α

i

y

i

K

i

1

+

b

=

y

1

\sum_{i=1}^N\alpha_iy_iK_{i1} + b = y_1















i


=


1


















N




















α










i



















y










i



















K











i


1





















+








b




=









y










1























于是:





b

1

n

e

w

=

y

1

i

=

3

N

α

i

y

i

K

i

1

α

1

n

e

w

y

1

K

11

α

2

n

e

w

y

2

K

21

b_1^{new} = y_1 – \sum_{i=3}^N\alpha_iy_iK_{i1} – \alpha_1^{new}y_1K_{11} – \alpha_2^{new}y_2K_{21}







b










1









n


e


w





















=









y










1






































i


=


3


















N




















α










i



















y










i



















K











i


1































α










1









n


e


w




















y










1



















K











1


1































α










2









n


e


w




















y










2



















K











2


1
























由前面我们定义式



E

i

E_i







E










i





















得:





E

1

=

i

=

3

N

α

i

y

i

K

i

1

+

α

1

o

l

d

y

1

K

11

+

α

2

o

l

d

y

2

K

21

+

b

o

l

d

y

1

E_1 = \sum_{i=3}^N\alpha_iy_iK_{i1} +\alpha_1^{old}y_1K_{11} + \alpha_2^{old}y_2K_{21} + b^{old}-y_1







E










1




















=

















i


=


3


















N




















α










i



















y










i



















K











i


1





















+









α










1









o


l


d




















y










1



















K











1


1





















+









α










2









o


l


d




















y










2



















K











2


1





















+









b











o


l


d






















y










1























根据上面式子得:





y

1

i

=

3

N

α

i

y

i

K

i

1

=

E

1

+

α

1

o

l

d

y

1

K

11

+

α

2

o

l

d

y

2

K

21

+

b

o

l

d

y_1 – \sum_{i=3}^N\alpha_iy_iK_{i1} = -E_1+ \alpha_1^{old}y_1K_{11} + \alpha_2^{old}y_2K_{21} + b^{old}







y










1






































i


=


3


















N




















α










i



















y










i



















K











i


1





















=












E










1




















+









α










1









o


l


d




















y










1



















K











1


1





















+









α










2









o


l


d




















y










2



















K











2


1





















+









b











o


l


d















代入上面



b

1

n

e

w

b_1^{new}







b










1









n


e


w






















式子得:





b

1

n

e

w

=

E

1

y

1

K

11

(

α

1

n

e

w

α

1

o

l

d

)

y

2

K

21

(

α

2

n

e

w

α

2

o

l

d

)

+

b

o

l

d

b_1^{new} = -E_1 – y_1K_{11}(\alpha_1^{new}-\alpha_1^{old}) – y_2K_{21}(\alpha_2^{new}-\alpha_2^{old}) + b^{old}







b










1









n


e


w





















=












E










1






























y










1



















K











1


1



















(



α










1









n


e


w































α










1









o


l


d



















)














y










2



















K











2


1



















(



α










2









n


e


w































α










2









o


l


d



















)




+









b











o


l


d















同样,如果



0

&lt;

α

2

n

e

w

&lt;

C

0 &lt; \alpha_2^{new} &lt; C






0




<









α










2









n


e


w





















<








C





,那么:





b

2

n

e

w

=

E

2

y

1

K

12

(

α

1

n

e

w

α

1

o

l

d

)

y

2

K

22

(

α

2

n

e

w

α

2

o

l

d

)

+

b

o

l

d

b_2^{new} = -E_2 – y_1K_{12}(\alpha_1^{new}-\alpha_1^{old}) – y_2K_{22}(\alpha_2^{new}-\alpha_2^{old}) + b^{old}







b










2









n


e


w





















=












E










2






























y










1



















K











1


2



















(



α










1









n


e


w































α










1









o


l


d



















)














y










2



















K











2


2



















(



α










2









n


e


w































α










2









o


l


d



















)




+









b











o


l


d













如果



α

1

n

e

w

,

α

2

n

e

w

\alpha_1^{new},\alpha_2^{new}







α










1









n


e


w



















,





α










2









n


e


w






















同时满足



0

&lt;

α

i

n

e

w

&lt;

C

,

i

=

1

,

2

0 &lt; \alpha_i^{new} &lt; C, i=1,2






0




<









α










i









n


e


w





















<








C


,




i




=








1


,




2





,那么



b

1

n

e

w

=

b

2

n

e

w

b_1^{new} = b_2^{new}







b










1









n


e


w





















=









b










2









n


e


w
























如果



α

1

n

e

w

,

α

2

n

e

w

\alpha_1^{new},\alpha_2^{new}







α










1









n


e


w



















,





α










2









n


e


w


























0

0






0





或者



C

C






C





,那么



b

1

n

e

w

b

2

n

e

w

b_1^{new} ,b_2^{new}







b










1









n


e


w























b










2









n


e


w






















以及他们之前的数都满足



K

K

T

KKT






K


K


T





条件的阀值,选择他们的中点作为



b

n

e

w

b^{new}







b











n


e


w













,即:





b

n

e

w

=

b

1

n

e

w

+

b

2

n

e

w

2

b^{new} = \frac{b_1^{new} + b_2^{new}}{2}







b











n


e


w












=



















2















b










1









n


e


w





















+





b










2









n


e


w








































在每次计算两个变量的优化之后,还必须更新对应的



E

i

E_i







E










i





















值,并保存在列表中。



E

i

E_i







E










i





















值的更新需要用到



b

n

e

w

b^{new}







b











n


e


w













值,以及所有支持向量对应的



α

j

\alpha_j







α










j



























E

i

n

e

w

=

S

y

j

α

j

K

(

x

i

,

y

j

)

+

b

n

e

w

y

i

E_i^{new} = \sum_Sy_j\alpha_jK(x_i,y_j)+b^{new}-y_i







E










i









n


e


w





















=
















S





























y










j



















α










j


















K


(



x










i


















,





y










j


















)




+









b











n


e


w






















y










i























其中,



S

S






S





是所有支持向量



x

j

x_j







x










j





















的集合。



5、至此



S

M

O

SMO






S


M


O





算法可描述为:

输入:训练数据集




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




=








{



(



x










1


















,





y










1


















)


,




(



x










2


















,





y










2


















)


,




.


.


.


,




(



x










N


















,





y










N


















)


}





,其中,



x

i

X

=

R

n

,

y

i

Y

=

{

1

,

+

1

}

,

i

=

1

,

2

,

.

.

.

,

N

x_i \in \mathcal{X} = R^n,y_i \in \mathcal{Y} = \{-1,+1\},i =1,2,…,N







x










i






























X





=









R










n









,





y










i






























Y





=








{






1


,




+


1


}


,




i




=








1


,




2


,




.


.


.


,




N





,精度为



ε

\varepsilon






ε







输出:近似解



α

\alpha






α






(1)取初值



α

(

0

)

=

0

\alpha^{(0)} = 0







α











(


0


)












=








0





,令



k

=

0

k=0






k




=








0







(2)选取优化变量



α

1

(

k

)

,

α

2

(

k

)

\alpha_1^{(k)},\alpha_2^{(k)}







α










1









(


k


)



















,





α










2









(


k


)






















,解析求解两个变量的最优化问题,求得最优解



α

1

(

k

+

1

)

,

α

1

(

k

+

1

)

\alpha_1^{(k+1)},\alpha_1^{(k+1)}







α










1









(


k


+


1


)



















,





α










1









(


k


+


1


)
























(3)若在进度



ε

\varepsilon






ε





范围内满足停止条件:





i

=

1

N

a

i

y

i

=

0

0

α

i

C

,

i

=

1

,

2

,

.

.

,

N

y

i

g

(

x

i

)

=

{

1

,

{

x

i

α

i

=

0

}

=

1

,

{

x

i

0

&lt;

α

i

&lt;

C

}

1

,

{

x

i

α

i

=

C

}

\sum_{i=1}^Na_iy_i = 0\\ 0 \leqslant \alpha_i \leqslant C, \quad i = 1,2,..,N \\ y_i \cdot g(x_i) = \begin{cases} \geqslant 1, \quad \{x_i | \alpha_i =0 \} \\ = 1,\quad \{x_i |0 &lt; \alpha_i &lt;C \} \\ \leqslant 1,\quad \{x_i | \alpha_i =C \} \\ \end{cases}















i


=


1


















N




















a










i



















y










i




















=








0








0














α










i





























C


,






i




=








1


,




2


,




.


.


,




N









y










i





























g


(



x










i


















)




=
























































































1


,






{




x










i






















α










i




















=




0


}








=




1


,






{




x










i





















0




<





α










i




















<




C


}













1


,






{




x










i






















α










i




















=




C


}



























其中,





g

(

x

i

)

=

j

=

1

N

α

j

y

j

K

(

x

i

,

x

j

)

+

b

g(x_i) = \sum_{j=1}^N\alpha_jy_jK(x_i,x_j)+b






g


(



x










i


















)




=

















j


=


1


















N




















α










j



















y










j


















K


(



x










i


















,





x










j


















)




+








b







则转(4);否则令



k

=

k

+

1

k = k+1






k




=








k




+








1





,转(2);

(4)取



α

=

α

(

k

+

1

)

\alpha = \alpha^{(k+1)}






α




=









α











(


k


+


1


)















6、简化版

SMO

算法实现




\quad\quad













通过之前的学习,我们知道

SMO

算法中的外循环确定要优化的



α

\alpha






α





,而简化版的会跳过这一部分,首先在训练数据集上遍历每一个



α

\alpha






α





,然后在剩下的



α

\alpha






α





集合中随机选取另一个



α

\alpha






α





,从而构建



α

\alpha






α





对。

这里有一点非常重要,之前我们也提到过,这里再说明一下:

我们需要同时改变两个变量



α

\alpha






α





,因为约束条件:





α

1

y

1

+

α

2

y

2

=

i

=

3

N

α

i

y

i

=

ς

\alpha_1y_1+\alpha_2y_2 = -\sum_{i=3}^N\alpha_iy_i=\varsigma







α










1



















y










1




















+









α










2



















y










2




















=






















i


=


3


















N




















α










i



















y










i




















=








ς







其中,



ς

\varsigma






ς





为常数


伪代码如下:

创建一个alpha向量并将其初始化为0向量
	当迭代次数小于最大迭代次数时(外循环):
		对数据集中的每个数据向量(内循环):
			如果该数据向量可以被优化:
				随机选择另一个数据向量
				同时优化这两个向量
				如果两个向量都不能被优化,退出内循环
	如果所有向量都没有被优化,增加迭代次数,继续下一次循环

在这里插入图片描述

在几百个点 组成的小规模数据集上,简化版



S

M

O

SMO






S


M


O





算法的运行是没有什么问题的,但是在更大的数据集上运行的速度就会很慢。

算法代码可见:

02_简化版SMO算法实现.py


画图代码可见:

00_plot.py

,需要将算法运行后得到的



b

w

b、w






b





w





和支持向量坐标手动修改代码中的坐标



7、完整版

SMO

算法实现——不加核函数




\quad\quad













在这两个版本中,实现



α

\alpha






α





的更改和代数运算的优化环节一模一样。在优化过程中,唯一不同的就是选择



α

\alpha






α





的方式。完整版

SMO

算法应用了一些能够提速的启发式方法。


SMO

算法是通过一个外循环来选择第一个



α

\alpha






α





值的,并且其选择过程会在两种方式之间进行交替:

  • 在所有数据集上进行单遍扫描
  • 在非边界



    α

    \alpha






    α





    中实现单遍扫描

所谓非边界



α

\alpha






α





,即:指那些不等于边界0或C的



α

\alpha






α





值。

对整个数据集的扫描相当容易,而实现非边界扫描,首先需要建立这些



α

\alpha






α





值的列表,然后再对这个列表进行遍历,同时该步骤会跳过那些已知的不会改变的



α

\alpha






α





值。

在选择第一个



α

\alpha






α





值后,算法会通过一个内循环来选择第二个



α

\alpha






α





值。在优化过程中通过

最大化步长

来获取第二个



α

\alpha






α





值。

我们建立一个全局的缓存用于保存误差值,从中选择使得步长或者



E

i

E

j

E_i – E_j







E










i






























E










j





















最大的



α

\alpha






α





值。

在这里插入图片描述

图中我们可以看出,这两个类的数据点分布在一条直线的两侧,我们可以得到两类的分割线。但倘若两类数据集分布在一个圆的内部和外部呢?

前面部分我们说明了非线性支持向量机,使用核技巧

算法代码可见:

03_完整版SMO算法实现_不加核函数.py


上图代码可见:

00_plot.py

,需要将上面算法运行结果手动修改下



8、完整版

SMO

算法实现——加核函数

假设数据如下图:

在这里插入图片描述

上图代码可见:

00_plotRBF.py

算法代码可见:

04_完整版SMO算法实现_加核函数.py

算法运行结果:

iteration number: 5
there are 26 Support Vectors
the training error rate is: 0.070000
the test error rate is: 0.030000

你可以尝试更换不同的



k

1

k1






k


1





值以观察测试错位率、训练错误率,支持向量个数



七、案例



1、sklearn.svm.SVC:API

(C=1.0, kernel='rbf', degree=3, gamma='auto', coef0=0.0, shrinking=True, 
	probability=False,tol=0.001, cache_size=200, class_weight=None, 
	verbose=False, max_iter=-1, decision_function_shape=None,random_state=None)

参数:


  • C

    :C-SVC的惩罚参数C?默认值是1.0

C越大,相当于惩罚松弛变量,希望松弛变量接近0,即对误分类的惩罚增大,趋向于对训练集全分对的情况,这样对训练集测试时准确率很高,但泛化能力弱。C值小,对误分类的惩罚减小,允许容错,将他们当成噪声点,泛化能力较强。


  • kernel

    :核函数,默认是rbf,可以是‘linear’, ‘poly’, ‘rbf’, ‘sigmoid’, ‘precomputed’:线性、多项式、 RBF函数、sigmoid

  • degree

    :多项式poly函数的维度,默认是3,选择其他核函数时会被忽略。

  • gamma

    : ‘rbf’,‘poly’ 和‘sigmoid’的核函数参数。默认是’auto’,则会选择1/n_features

  • coef0

    :核函数的常数项。对于‘poly’和 ‘sigmoid’有用。

  • probability

    :是否采用概率估计?.默认为False

  • shrinking

    :是否采用shrinking heuristic方法,默认为true

  • tol

    :停止训练的误差值大小,默认为1e-3

  • cache_size

    :核函数cache缓存大小,默认为200

  • class_weight

    :类别的权重,字典形式传递。设置第几类的参数C为weight*C(C-SVC中的C)

  • verbose

    :允许冗余输出?

  • max_iter

    :最大迭代次数。-1为无限制。

  • decision_function_shape

    :‘ovo’, ‘ovr’ or None, default=None3

  • random_state

    :数据洗牌时的种子值,int值

主要调节的参数有:

C



kernel



degree



gamma



coef0



1、案例1:鸢尾花数据SVM分类

本案例基于鸢尾花数据,使用SVM进行分类。

在这里插入图片描述

代码可见:

05_鸢尾花数据SVM分类.py



2、案例2:鸢尾花数据不同分类器的比较

在这里插入图片描述

在这里插入图片描述

代码可见:

06_鸢尾花数据不同分类器效果比较.py



3、案例3:不同惩罚系数C比较

在这里插入图片描述

在这里插入图片描述

代码可见:

07_不同SVM惩罚参数C值不同效果比较.py



4、案例4:手写数字识别

在这里插入图片描述

score_svm : 0.968854

代码可见:

08_手写数字识别.py



5、案例5:自定义SVM内部核函数

在这里插入图片描述

代码可见:

09_自定义SVM内部核函数.py



6、案例6:使用SVM预测波士顿房价(使用的是SVR,是SVM的回归形式)

在这里插入图片描述

代码可见:

10_使用SVM预测波士顿房价.py



7、案例7:分类算法的比较

在这里插入图片描述

代码可见:

11_分类算法的比较.py



8、案例8:异常值检查(使用的API是OneClassSVM)

在这里插入图片描述

代码可见:

12_异常值检测.py

以上便是支持向量机的相关内容,博主也仅限于此,待今后进一步学习之后再来更新,也希望大家多多指教。



版权声明:本文为Daycym原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。