写在开头:今天将跟着昨天的节奏来分享一下线性支持向量机。
内容安排
线性回归(一)、逻辑回归(二)、K近邻(三)、决策树值ID3(四)、CART(五)、感知机(六)、神经网络(七)、线性可分支持向量机(八)、线性支持向量机(九)、线性不可分支持向量机(十)、朴素贝叶斯(十一)、Lasso回归(十二)、Ridge岭回归(十三)等。
昨天再分享线性可分支持向量机的时候,大家不免会发现其既定前提是数据线性可分,但实际生活中对于线性可分的数据来说还是比较少,那么如何在线性可分支持向量机的基础上进行改机使得线性支持向量机能够在线性不可分的数据中绘制超平面进行分类任务。这就是我们今天要分享的线性支持向量机。
1.线性支持向量机的数学推导
同样我们尽量采用提问的方式来对模型进行探索,模型参考《统计学习方法(第二版)》。
Q1:如何在线性不可分数据中使用线性支持向量机?
在上一节中,我们对数据采用的最大间隔法会使得所有数据都在分离超平面的距离1之外,那么如果训练数据中无法找到满足与分离超平面间隔1的点怎么办。这是我们就需要把上一节中类似于硬间隔最大化改为软间隔最大化,也就是使得我们的间隔边界可动,不再是固定的1。为了实现这个想法,我们需要引入松弛变量来使得间隔边间进行外扩,加入松弛变量后就会使得函数间隔大于等于1,约束条件变为,
y i ( w ⋅ x i + b ) ⩾ 1 − ξ i y_i(w\cdot x_i+b)\geqslant 1-\xi_i yi(w⋅xi+b)⩾1−ξi然后为了避免加入一个过大的 ξ i \xi_i ξi,这里在目标函数处添加一个代价项,
1 2 ( ∣ ∣ w ∣ ∣ ) 2 + C ∑ i = 1 N ξ i \frac{1}{2}(||w||)^2+C\sum \limits_{i=1}^{N}\xi_i 21(∣∣w∣∣)2+Ci=1∑NξiC在这里成为惩罚参数,C值大当 ξ i \xi_i ξi增加,代价项就会增大很多,也就是对于 ξ i \xi_i ξi的变化越敏感。又因为之前讨论过这里是求目标函数的最小值,所以如果增加过大的 ξ i \xi_i ξi就会使得目标函数变大,于是目标函数的左右两项就是一个博弈的过程,寻找到一个满足约束条件的最优解。
于是我们加入松弛变量的凸二次规划问题如下,因为这仍然是一个凸二次规划问题,所以可以证明 w , b w,b w,b有解,但 b b b有可能不是唯一解,
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 \begin{aligned} {\underset {w,b,\xi}{\operatorname {min} }} &\quad\frac{1}{2}(||w||)^2+C\sum \limits_{i=1}^{N}\xi_i \\ s.t.&\ \ \ \ y_i(w\cdot x_i+b)\geqslant 1-\xi_i,\ \ i=1,2,\dots,N\\ &\ \ \ \ \xi_i>=0,\ \ i=1,2,\dots,N \end{aligned} w,b,ξmins.t.21(∣∣w∣∣)2+Ci=1∑Nξi yi(w⋅xi+b)⩾1−ξi, i=1,2,…,N ξi>=0, i=1,2,…,NQ2:该方法也有对偶算法吗
对于凸二次优化都是有一种对偶算法可以进行求解的,首先仍然需要构造拉格朗日函数,然后对拉格朗日函数求偏导设为0,并将最后的结果带回式子中,与上一节方法类似。首先构造拉格朗日函数,(这里勒格朗日函数中间项的减号是因为约束条件是大于等于0,需要添加符号变为小于等于0。对于求和号是因为一个样本点就算一个约束,于是就有N个约束一起计算需要求和)
L ( w , b , ξ , a , u ) = 1 2 ( ∣ ∣ w ∣ ∣ ) 2 + C ∑ i = 1 N ξ i − ∑ i = 1 N a i ( y i ( w ⋅ x i + b ) − 1 + ξ i ) − ∑ i = 1 N u i ξ i L(w,b,\xi,a,u)=\frac{1}{2}(||w||)^2+C\sum \limits_{i=1}^{N}\xi_i -\sum \limits_{i=1}^{N}a_i(y_i(w\cdot x_i+b)-1+\xi_i)-\sum \limits_{i=1}^{N}u_i\xi_i L(w,b,ξ,a,u)=21(∣∣w∣∣)2+Ci=1∑Nξi−i=1∑Nai(yi(w⋅xi+b)−1+ξi)−i=1∑Nuiξi然后分别对其中的参数进行求偏导,
∇ w L ( w , b , ξ , a , u ) = w − ∑ i = 1 N a i y i x i = 0 \nabla_wL(w,b,\xi,a,u)=w-\sum\limits_{i=1}^{N}a_iy_ix_i=0 ∇wL(w,b,ξ,a,u