【学习笔记】基与核的故事 - 4 支持向量机SVM

151 阅读1分钟

这是我参与11月更文挑战的第6天

支持向量机(SVM)是再生希尔伯特空间(RKHS)最广为人知的应用之一,假设存在数据对(xi,yi)i=1n(x_i,y_i)^n_{i=1}yiy_i的值为1或-1决定了点xix_i所属的类别。SVM假设存在一个超平面在对这两个分类进行最优分割。

minβ,β012β2+Ci=1nξisubject to ξi0,yi(xiTβ+β0)1ξi,i\min_{\beta,\beta_0}\frac{1}{2}||\beta||^2+C\sum^n_{i=1}\xi_i \\ subject\ to\ \xi_i \geq 0 , y_i(x^T_i\beta+\beta_0)\geq 1 -\xi_i,\forall i

有时候两个分类很难在RnR^n空间中分离,因此需要将xix_i映射到一个易于将两个分类分离的高维特征空间中(即核方法)。原来的问题转化为:

minβ,β012β2+Ci=1nξisubject to ξi0,yi(Φ(xi)Tβ+β0)1ξi,i\min_{\beta,\beta_0}\frac{1}{2}||\beta||^2+C\sum^n_{i=1}\xi_i \\ subject\ to\ \xi_i \geq 0 , y_i(\Phi(x_i)^T\beta+\beta_0)\geq 1 -\xi_i,\forall i

拉格朗日乘子法求最小值,得到:

Lp=12β2+Ci=1nξii=1nαi[yi(Φ(xi)Tβ+β0)(1ξi)]i=1nμiξiL_p=\frac{1}{2}||\beta||^2+C\sum^n_{i=1}\xi_i-\sum^n_{i=1}\alpha_i[ y_i(\Phi(x_i)^T\beta+\beta_0)-(1-\xi_i)]-\sum^n_{i=1}\mu_i\xi_i

求极值,即令Lpβ=0\frac{\partial L_p}{\partial \beta}=0,得到:

β=i=1nαiyiΦ(xi)\beta=\sum^n_{i=1}\alpha_iy_i\Phi(x_i)

从上式中可以发现β\beta可以由多个xix_i的线性组合来表达,用其替代β\beta得到新的优化问题,目标函数转变为:

12i=1nαiyiΦ(xi)2+Ci=1nξi\frac{1}{2}||\sum^n_{i=1}\alpha_iy_i\Phi(x_i)||^2+C\sum^n_{i=1}\xi_i

上述式转化为xix_ixjx_j的内积:

12<i=1nαiyiΦ(xi),j=1nαjyjΦ(xj)>+Ci=1nξi=12i=1nj=1nαiyiαjyj<Φ(xi),Φ(xj)>+Ci=1nξi\frac{1}{2}<\sum^n_{i=1}\alpha_iy_i\Phi(x_i),\sum^n_{j=1}\alpha_jy_j\Phi(x_j)>+C\sum^n_{i=1}\xi_i \\ =\frac{1}{2}\sum^n_{i=1}\sum^n_{j=1}\alpha_iy_i\alpha_jy_j<\Phi(x_i),\Phi(x_j)>+C\sum^n_{i=1}\xi_i

将函数内积转换成核函数表达:

12i=1nj=1nαiyiαjyjK(xi,xj)+Ci=1nξi\frac{1}{2}\sum^n_{i=1}\sum^n_{j=1}\alpha_iy_i\alpha_jy_jK(x_i,x_j)+C\sum^n_{i=1}\xi_i

限制可以改写为:

yi[Φ(xi)T(j=1nαjyjΦ(xj))+β0]=yi[(j=1nαjyj<Φ(xi),Φ(xj)>)+β0]=yi[(j=1nαjyjK(xi,xj))+β0]1ξi,iy_i[\Phi(x_i)^T(\sum^n_{j=1}\alpha_jy_j\Phi(x_j))+\beta_0] \\ = y_i[(\sum^n_{j=1}\alpha_jy_j<\Phi(x_i),\Phi(x_j)>)+\beta_0] \\ =y_i[(\sum^n_{j=1}\alpha_jy_jK(x_i,x_j))+\beta_0] \geq 1-\xi_i,\forall i

现在要做的就是找到一个核函数并求解α,β0,ξi\alpha,\beta_0,\xi_i,并不需要真正地构造一个向量空间,对于一个新的未知分类的数据xx,可以将其分类使用下面的方法预测(sign:取正负值):

y^=sign[Φ(x)Tβ+β0]=sign[Φ(x)T(i=1nαiyiΦ(xi))+β0]=sign(i=1nαiyi<Φ(x),Φ(xi)>+β0)=sign(i=1nαiyiK(x,xi)+β0)\hat{y}=sign[\Phi(x)^T\beta+\beta_0] \\ =sign[\Phi(x)^T(\sum^n_{i=1}\alpha_iy_i\Phi(x_i))+\beta_0] \\ =sign(\sum^n_{i=1}\alpha_iy_i<\Phi(x),\Phi(x_i)>+\beta_0) \\ =sign(\sum^n_{i=1}\alpha_iy_iK(x,x_i)+\beta_0)