支持向量机 tensorflow线性与非线性(高斯核函数)实现

14 篇文章 0 订阅
10 篇文章 0 订阅
  • 函数间隔

    • 对于给定的训练数据集 { ( X 1 , y 1 ) , ( X 2 , y 2 ) , . . . . . . , ( X m , y m ) } \left \{ (X^{1},y^{1}), (X^{2},y^{2}),......,(X^{m},y^{m})\right \} {(X1,y1),(X2,y2),......,(Xm,ym)}和分隔超平面 W X + b = 0 WX + b = 0 WX+b=0,定义分隔超平面关于样本点 ( X i , y i ) (X^{i},y^{i}) (Xi,yi)的函数间隔为: γ i ^ = y i ( W X i + b ) \hat{\gamma_{i}} = y^{i}(WX^{i} + b) γi^=yi(WXi+b)
      定义分隔超平面关于训练数据集的函数间隔为分隔超平面关于训练数据及中所有样本点的函数间隔的最小值: γ ^ = m i n i = 1 , . . . . . . , m γ i ^ \hat{\gamma} = min_{i=1,......,m}\hat{\gamma_{i}} γ^=mini=1,......,mγi^
  • 几何间隔

    • 几何间隔其实就是样本点到超平面的距离: γ i = y i ( W X i + b ∥ W ∥ ) \gamma_{i} = y_{i}\left ( \frac{WX^{i} + b}{\left \| W \right \|} \right ) γi=yi(WWXi+b)
      分隔超平面关于训练数据集的几何间隔为分隔超平面关于训练数据集中所有样本点的几何间隔的最小值: γ = m i n i = 1 , . . . . . . , m γ i \gamma = min_{i=1,......,m}{\gamma_{i}} γ=mini=1,......,mγi
  • 支持向量机

    支持向量机求解出来的分隔超平面不仅能够正确划分训练数据集,而且几何间隔最大

    • 间隔最大化
      对于几何间隔最大的分隔超平面: m a x ( W , b ) γ max_{(W,b)} \gamma max(W,b)γ,对于每一个样本,需要满足: y i ( W X i + b ∥ W ∥ ) ⩾ γ , i = 1 , . . . . . , m y^{i}\left ( \frac{WX^{i} + b}{\left \| W \right \|} \right ) \geqslant \gamma ,i=1,.....,m yi(WWXi+b)γ,i=1,.....,m
      因为几何间隔和函数间隔之间的关系,所以上面的几何间隔最大的分隔超平面可以等价为: m a x ( W , b ) γ ^ ∥ W ∥ max_{(W,b)}\frac{\hat{\gamma }}{\left \| W \right \|} max(W,b)Wγ^
      同时需要满足 y i ( W X i + b ) ⩾ γ ^ , i = 1 , . . . . . , m y^{i}(WX^{i} + b)\geqslant \hat{\gamma },i=1,.....,m yi(WXi+b)γ^,i=1,.....,m
      在函数间隔中,函数间隔的取值并不影响最优问题的解。因为从上述的公式可以看出,当 W W W b b b同时扩大2倍之后,函数间隔也扩大为原来的2倍。因此,可以令 γ ^ = 1 \hat{\gamma } = 1 γ^=1
      则上述的几何间隔最大的优化问题转化为: γ ^ = 1 \hat{\gamma } = 1 γ^=1
      同时需要满足: y i ( W X i + b ) − 1 ⩾ 0 , i = 1 , . . . . . . , m y^{i}(WX^{i} + b) - 1 \geqslant 0,i=1,......,m yi(WXi+b)10i=1,......,m
  • 支持向量和间隔边界

    • 支持向量
      在m个训练样本中,与分割超平面距离最近的样本称为支持向量。支持向量 X i X^{i} Xi的约束条件: y i ( W X i + b ) − 1 = 0 y^{i}(WX^{i} + b) - 1 = 0 yi(WXi+b)1=0
      y i = + 1 y^{i} = +1 yi=+1时,支持向量所在的超平面为: H 1 : W X + b = 1 H_{1}: WX + b = 1 H1:WX+b=1
      y i = − 1 y^{i} = -1 yi=1时,支持向量所在的超平面为: H 2 : W X + b = − 1 H_{2}: WX + b = -1 H2:WX+b=1
    • 间隔边界
      超平面 H 1 H_{1} H1 H 2 H_{2} H2之间的距离称为间隔, H 1 H_{1} H1 H 2 H_{2} H2称为间隔边界。
  • 线性支持向量机

    • 对于一个数据集中大部分线性可分,某些线性不可分的数据点 ( X i , y i ) (X^{i},y^{i}) (Xi,yi),是不可能所有数据都满足函数间隔 ⩾ 1 \geqslant 1 1的约束条件。所以需要给每个样本点 ( X i , y i ) (X^{i},y^{i}) (Xi,yi)引入一个松弛变量 ξ i ⩾ 0 \xi _{i} \geqslant 0 ξi0使得约束条件变为: y i ( W X i + b ) ⩾ 1 − ξ i , i = 1 , . . . . . . , m y^{i}(WX^{i} + b) \geqslant 1-\xi _{i},i=1,......,m yi(WXi+b)1ξii=1,......,m
      同时,对每个松弛变量 ξ i \xi _{i} ξi,添加一个代价 C C C,使得目标函数变为: ( ∥ W ∥ ) 2 + C ∑ i = 1 m ξ i (\left \| W \right \|)^{2} + C\sum_{i=1}^{m}\xi _{i} (W)2+Ci=1mξi
      此时,求分隔超平面的优化目标为: m i n ( W , b , ξ ) ( ∥ W ∥ ) 2 + C ∑ i = 1 m ξ i min_{(W,b,\xi )}(\left \| W \right \|)^{2} + C\sum_{i=1}^{m}\xi _{i} min(W,b,ξ)(W)2+Ci=1mξi
      约束条件为: y i ( W X i + b ) ⩾ 1 − ξ i , i = 1 , . . . . . . , m y^{i}(WX^{i} + b) \geqslant 1-\xi _{i},i=1,......,m yi(WXi+b)1ξii=1,......,m ξ i ⩾ 0 , i = 1 , . . . . , m \xi _{i} \geqslant 0 ,i=1,....,m ξi0,i=1,....,m
  • 支持向量机的训练

    • 对偶算法
      对于上面带约束的优化问题,可以用拉格朗日乘数法转化为不带约束的优化问题。对于拉格朗日乘数法我就不记录了。经过拉格朗日乘数法转换,上述带约束的优化问题可以转换为: L ( W , b , ξ , α , β ) = 1 2 ( ∥ W ∥ ) 2 + C ∑ i = 1 m − ∑ i = 1 m α i ( y i ( W X i + b ) − 1 + ξ i ) − ∑ i = 1 m β i ξ i L_{(W,b,\xi ,\alpha ,\beta )} = \frac{1}{2}(\left \| W \right \|)^{2} + C\sum_{i=1}^{m} - \sum_{i=1}^{m}\alpha _{i}(y^{i}(WX^{i} + b) -1 + \xi _{i}) - \sum_{i=1}^{m}\beta _{i}\xi _{i} L(W,b,ξ,α,β)=21(W)2+Ci=1mi=1mαi(yi(WXi+b)1+ξi)i=1mβiξi
      其中, α = ( α 1 , α 2 , . . . . . . , α m ) ⩾ 0 , β = ( β 1 , β 2 , . . . . . . , β m ) ⩾ 0 \alpha = {(\alpha_{1},\alpha_{2},......,\alpha_{m})} \geqslant 0,\beta = {(\beta_{1},\beta_{2},......,\beta_{m})} \geqslant 0 α=(α1,α2,......,αm)0,β=(β1,β2,......,βm)0 。向量 α \alpha α β \beta β称为拉格朗日乘子向量。加上 1 2 \frac{1}{2} 21是为了求导方便。
      经过拉格朗日乘数法的转化,原始问题 m i n ( W , b , ξ ) m a x ( α , β ) L ( W , b , ξ , α , β ) min_{(W,b,\xi )}max_{(\alpha ,\beta )}L(W,b,\xi ,\alpha ,\beta ) min(W,b,ξ)max(α,β)L(W,b,ξ,α,β)转化为 m a x ( α , β ) m i n ( W , b , ξ ) L ( W , b , ξ , α , β ) max_{(\alpha ,\beta )}min_{(W,b,\xi )}L(W,b,\xi ,\alpha ,\beta ) max(α,β)min(W,b,ξ)L(W,b,ξ,α,β)
      先求 m i n ( W , b , ξ ) L ( W , b , ξ , α , β ) min_{(W,b,\xi )}L(W,b,\xi ,\alpha ,\beta ) min(W,b,ξ)L(W,b,ξ,α,β),将 L ( W , b , ξ , α , β ) L(W,b,\xi ,\alpha ,\beta ) L(W,b,ξ,α,β)分别对 W , b , ξ W,b,\xi W,b,ξ求导可以得到: ϑ L ( W , b , ξ , α , β ) ϑ W = W − ∑ i 1 m α i y i X i = 0 \frac{\vartheta L(W,b,\xi ,\alpha ,\beta )}{\vartheta W} = W - \sum_{i1}^{m}\alpha _{i}y^{i}X^{i} = 0 ϑWϑL(W,b,ξ,α,β)=Wi1mαiyiXi=0
      ϑ L ( W , b , ξ , α , β ) ϑ b = − ∑ i = 1 m α i y i = 0 \frac{\vartheta L(W,b,\xi ,\alpha ,\beta )}{\vartheta b} = -\sum_{i=1}^{m}\alpha _{i}y^{i} = 0 ϑbϑL(W,b,ξ,α,β)=i=1mαiyi=0
      ϑ L ( W , b , ξ , α , β ) ϑ ξ = C − α i − β i = 0 \frac{\vartheta L(W,b,\xi ,\alpha ,\beta )}{\vartheta \xi } = C - \alpha _{i} - \beta _{i} = 0 ϑξϑL(W,b,ξ,α,β)=Cαiβi=0
      将求导结果代入 L ( W , b , ξ , α , β ) L(W,b,\xi ,\alpha ,\beta ) L(W,b,ξ,α,β),可以得到: m i n ( W , b , ξ ) L ( W , b , ξ , α , β ) = − 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j ( X i ⋅ X j ) + ∑ i = 1 m α i min_{(W,b,\xi )} L(W,b,\xi ,\alpha ,\beta ) = -\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha _{i}\alpha _{j}y^{i}y^{j}(X^{i}\cdot X^{j}) + \sum_{i=1}^{m}\alpha _{i} min(W,b,ξ)L(W,b,ξ,α,β)=21i=1mj=1mαiαjyiyj(XiXj)+i=1mαi
      在对 m i n ( W , b , ξ ) L ( W , b , ξ , α , β ) min_{(W,b,\xi )} L(W,b,\xi ,\alpha ,\beta ) min(W,b,ξ)L(W,b,ξ,α,β)求关于 α \alpha α的极大值: m a x ( α ) − 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j ( X i ⋅ X j ) + ∑ i = 1 m α i max_{(\alpha )} -\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha _{i}\alpha _{j}y^{i}y^{j}(X^{i}\cdot X^{j}) + \sum_{i=1}^{m}\alpha _{i} max(α)21i=1mj=1mαiαjyiyj(XiXj)+i=1mαi
      约束条件为: ∑ i = 1 m α i y i = 0 \sum_{i=1}^{m}\alpha _{i}y^{i} = 0 i=1mαiyi=0 C − α i − β i = 0 C - \alpha _{i} - \beta _{i} = 0 Cαiβi=0 α i ⩾ 0 , β i ⩾ 0 , i = 1 , 2 , . . . . . . , m \alpha _{i} \geqslant 0, \beta _{i} \geqslant 0, i=1,2,......,m αi0,βi0,i=1,2,......,m
      可以将上述最大化问题转化为最小化问题: m i n ( α ) 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j ( X i ⋅ X j ) − ∑ i = 1 m α i min_{(\alpha )} \frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha _{i}\alpha _{j}y^{i}y^{j}(X^{i}\cdot X^{j}) - \sum_{i=1}^{m}\alpha _{i} min(α)21i=1mj=1mαiαjyiyj(XiXj)i=1mαi
      约束条件与上一致。假设 α ∗ \alpha^{*} α为上述问题的解,可得: W = ∑ i 1 m α i y i X i W = \sum_{i1}^{m}\alpha _{i}y^{i}X^{i} W=i1mαiyiXi
      b = y j − ∑ i 1 m α i y i X i X j b = y^{j} - \sum_{i1}^{m}\alpha _{i}y^{i}X^{i}X^{j} b=yji1mαiyiXiXj
    • tensorflow求解线性svm
      在上面的线性支持向量机的分析里面,将优化问题与约束条件相结合,最后得出的优化问题为: m i n ( W , b , ξ ) ( ∥ W ∥ ) 2 + C ∑ i = 1 m m a x ( 0 , 1 − y i ( W X i + b ) ) min_{(W,b,\xi )} (\left \| W \right \|)^{2} + C\sum_{i=1}^{m}max(0, 1-y_{i}(WX^{i} + b)) min(W,b,ξ)(W)2+Ci=1mmax(0,1yi(WXi+b))
      C称为惩罚系数,C值大时,对误分类的惩罚增大,C值小时,对误分类的惩罚减小。最小化上述公式一方面要使得 ( ∥ W ∥ ) 2 (\left \| W \right \|)^{2} (W)2尽量小即间隔尽量大,另一方面使得误分类的数据尽量少。
      tensoeflow的线性svm代码在https://github.com/xzccfzy/svm.git
      以iris数据中的花瓣宽度和花瓣长度为数据集,运行结果如下图:
      在这里插入图片描述
    • tensorflow 求解非线性svm(高斯核函数)
      tensoeflow的非线性svm代码在https://github.com/xzccfzy/svm.git
      以numpy随机生成的环数据为数据集,运行结果如下图:
      在这里插入图片描述
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值