机器学习之支持向量机

  1. 线性分类器中主要任务是在样本空间中寻找一个超平面将不同类别的样本分开。
    这些超平面有很多,一般来说,”正中间“的泛化性能最强,鲁棒性最好。

  2. 间隔与支持向量
    划分超平面可描述为:ωTx+b=0\omega^Tx+b=0
    ω=(ω1;ω2;;ωd)\omega=(\omega_1;\omega_2;\cdots;\omega_d)为法向量,决定方向;
    bb为位移量,决定超平面到原点的距离。
    任意点x到超平面(ω,b)(\omega,b)的距离为r=ωTx+bωr=\frac{|\omega^Tx+b|}{||\omega||}
    假设超平面分类正确,那么
    (xi,yi)D(x_i,y_i)\in D,yi=+1y_i=+1ωTxi+b>0\omega^Tx_i+b>0,yi=1y_i=-1ωTxi+b<0\omega^Tx_i+b<0;令ωTxi+b>=1\omega^Tx_i+b>=1,yi=+1y_i=+1;ωTxi+b<=1\omega^Tx_i+b<=-1,yi=1y_i=-1
    距离超平面最近的几个训练样本点使得上式成立,称为支持向量。
    两个异类支持向量到超平面的距离之和为γ=2ω\gamma=\frac{2}{||\omega||},称为间隔。

  3. SVM的基本型
    找到ω\omegabb满足yi(ωTxi+b)>=1y_i(\omega^Tx_i+b)>=1,i=1,2,,mi=1,2,\cdots,m使得间隔γ=2ω\gamma=\frac{2}{||\omega||}最大。
    这等价于:找到ω\omegabb满足yi(ωTxi+b)>=1y_i(\omega^Tx_i+b)>=1,i=1,2,,mi=1,2,\cdots,m使得12ω2\frac{1}{2}{||\omega||}^2最小(式1)。

  4. 对偶问题
    对式1使用拉格朗日乘子法,得到其对偶问题。
    #1.L(ω,b,α)=12ω2+i=1mαi(1yi(ωTxi+b))L(\omega,b,\alpha)=\frac{1}{2}||\omega||^2+\sum\limits_{i=1}^{m}\alpha_i(1-y_i(\omega^Tx_i+b))
    #2.令L(ω,b,α)L(\omega,b,\alpha)ω\omega和b的偏导等于零,即得:ω=i=1mαiyixi\omega=\sum\limits_{i=1}^{m}\alpha_iy_ix_i i=1mαiyi=0()\sum\limits^{m}_{i=1}\alpha_iy_i=0(*) #3.代回即得:L(ω,b,α)=i=1mαi12i=1mj=1mαiαjyiyjxiTxjL(\omega,b,\alpha)=\sum\limits_{i=1}^{m}\alpha_i-\frac{1}{2}\sum\limits_{i=1}^{m}\sum\limits_{j=1}^{m}\alpha_i\alpha_jy_iy_jx_i^Tx_j #4.考虑(*)处约束,即得式1的对偶问题:maxα       i=1mαi12i=1mj=1mαiαjyiyjxiTxj\max\limits_{\alpha}\,\,\,\,\,\,\,\sum\limits_{i=1}^{m}\alpha_i-\frac{1}{2}\sum\limits_{i=1}^{m}\sum\limits_{j=1}^{m}\alpha_i\alpha_jy_iy_jx_i^Tx_js.t.i=1mαiyi=0()\sum\limits^{m}_{i=1}\alpha_iy_i=0(*)αi>=0\alpha_i>=0.

  5. 解的稀疏性
    求出α\alpha后即得最终模型:
    f(x)=ωTx+b=i=1mαiyixiTx+bf(x)=\omega^Tx+b=\sum\limits^{m}_{i=1}\alpha_iy_ix_i^Tx+b
    KKT条件:{αi>=0yif(xi)>=1αi(1yif(xi))=0\left\{\begin{matrix} \alpha_i>=0\\ y_if(x_i)>=1\\\alpha_i(1-y_if(x_i))=0 \end{matrix}\right.
    即必有:αi=0\alpha_i=0或者yif(xi)=1y_if(x_i)=1
    由此体现解的稀疏性:训练完成后,最终模型只与支持向量有关。

  6. 特征空间映射
    不存在一个超平面能将两类样本正确划分时,可将样本从原始空间映射到更高维度的特征空间,使得样本在这个特征空间内线性可分。
    设样本xx映射后的向量为ϕ(x)\phi(x),划分超平面为:
    f(x)=ωTϕ(x)+bf(x)=\omega^T\phi(x)+b
    原始问题:找到ω\omegabb满足yi(ωTϕ(xi)+b)>=1y_i(\omega^T\phi(x_i)+b)>=1,i=1,2,,mi=1,2,\cdots,m使得12ω2\frac{1}{2}{||\omega||}^2最小
    对偶问题:maxα       i=1mαi12i=1mj=1mαiαjyiyjϕ(xi)Tϕ(xj)\max\limits_{\alpha}\,\,\,\,\,\,\,\sum\limits_{i=1}^{m}\alpha_i-\frac{1}{2}\sum\limits_{i=1}^{m}\sum\limits_{j=1}^{m}\alpha_i\alpha_jy_iy_j\phi(x_i)^T\phi(x_j)s.t.i=1mαiyi=0()\sum\limits^{m}_{i=1}\alpha_iy_i=0(*)αi>=0\alpha_i>=0.
    预测模型: f(x)=ωTϕ(x)+b=i=1mαiyiϕ(xi)Tϕ(x)+bf(x)=\omega^T\phi(x)+b=\sum\limits^{m}_{i=1}\alpha_iy_i\phi(x_i)^T\phi(x)+b

  7. 核函数
    设计核函数k(xi,xj)=ϕ(xi)Tϕ(xj)k(x_i,x_j)=\phi(x_i)^T\phi(x_j)解决内积ϕ(xi)Tϕ(xj)\phi(x_i)^T\phi(x_j)因维度过高计算困难的问题。
    只要一个对称函数对应的矩阵半正定,这个函数就能作为核函数使用。
    常用核函数:机器学习之支持向量机文本数据常用线性核,情况不明时先尝试高斯核。
    k1(xi,xj)k_1(x_i,x_j),k1(xi,xj)k_1(x_i,x_j)均为核函数,那么对任意正数γ1\gamma_1γ1\gamma_1和任意函数g(x)g(x)γ1k1(xi,xj)+γ2k2(xi,xj)\gamma_1k_1(x_i,x_j)+\gamma_2k_2(x_i,x_j)k1(xi,xj)k1(xi,xj)k_1(x_i,x_j)k_1(x_i,x_j)k(xi,xj)=g(xi)k1(xi,xj)g(xj))k(x_i,x_j)=g(x_i)k_1(x_i,x_j)g(x_j))均为核函数。

  8. 软间隔
    允许在一些样本上不满足约束
    优化目标:在最大化间隔的同时,让不满足约束yi(ωTxi+b)>=1y_i(\omega^Tx_i+b)>=1的样本数尽可能少。
    minω,b     12ω2+Ci=1ml0/1(yi(ωTxi+b)1)\min\limits_{\omega,b}\,\,\,\,\,\frac{1}{2}||\omega||^2+C\sum\limits_{i=1}^{m}l_{0/1}(y_i(\omega^Tx_i+b)-1)
    其中,l0/1(z)={1   ifz<00   elsel_{0/1}(z)=\left\{\begin{matrix} 1\,\,\,if\,z<0\\ 0\,\,\,else \end{matrix}\right.
    非凸、不连续、不易优化
    替代损失函数:lhinge(z)=max(0,1z)l_{hinge}(z)=max(0,1-z)lexp(z)=exp(z)l_{exp}(z)=exp(-z)llog(z)=log(1+exp(z))l_{log}(z)=log(1+exp(-z))
    替代损失的一致性问题讨论:
    原始问题:minω,b     12ω2+Ci=1mmax(0,1yi(ωTxi+b))\min\limits_{\omega,b}\,\,\,\,\,\frac{1}{2}||\omega||^2+C\sum\limits_{i=1}^{m}max(0,1-y_i(\omega^Tx_i+b))
    引入松弛变量ξi\xi_i:minω,b     12ω2+Ci=1mξi\min\limits_{\omega,b}\,\,\,\,\,\frac{1}{2}||\omega||^2+C\sum\limits_{i=1}^{m}\xi_i,
    s.t.yi(ωTxi+b)>=1ξiy_i(\omega^Tx_i+b)>=1-\xi_iξi>=0\xi_i>=0
    对偶问题:maxα       i=1mαi12i=1mj=1mαiαjyiyjxiTxj\max\limits_{\alpha}\,\,\,\,\,\,\,\sum\limits_{i=1}^{m}\alpha_i-\frac{1}{2}\sum\limits_{i=1}^{m}\sum\limits_{j=1}^{m}\alpha_i\alpha_jy_iy_jx_i^Tx_js.t.i=1mαiyi=0\sum\limits^{m}_{i=1}\alpha_iy_i=00αi<=C0\leq\alpha_i<=C.
    最终模型仍只与支持向量有关。

  9. 支持向量回归(SVR)
    基本思路:允许模型输出与实际输出存在2ϵ2\epsilon的差别。
    使用 ϵ\epsilon不敏感损失函数: lϵ(z)={0   ifzϵzϵ   elsel_\epsilon(z)=\left\{\begin{matrix} 0\,\,\,if\,z\leq|\epsilon|\\ |z|-\epsilon\,\,\,else \end{matrix}\right.,表示落入2ϵ2\epsilon间隔段内的数据不计算损失。
    原始问题:minω,b,ξi,ξi^  12ω2+Ci=1m(ξi+ξi^)\min\limits_{\omega,b,\xi_i,\hat{\xi_i}}\,\,\frac{1}{2}||\omega||^2+C\sum\limits_{i=1}^{m}(\xi_i+\hat{\xi_i}),s.t.f(xi)yiξi+ϵf(x_i)-y_i\leq\xi_i+\epsilonyif(xi)ξi^+ϵy_i-f(x_i)\leq\hat{\xi_i}+\epsilonξi>=0\xi_i>=0ξi^>=0\hat{\xi_i}>=0
    对偶问题:机器学习之支持向量机
    机器学习之支持向量机
    KKT条件:
    机器学习之支持向量机
    最终模型:
    f(x)=i=1m(αi^αi)xiTx+bf(x)=\sum\limits_{i=1}^{m}(\hat{\alpha_i}-\alpha_i)x_i^Tx+b
    在求得αi\alpha_i后,根据KKT条件,当Cαi0C-\alpha_i\neq 0时,利用αi(f(xi)yiϵ)=0\alpha_i(f(x_i)-y_i-\epsilon)=0求出bb。更鲁棒的方法是找到所以0=<αiC0=<\alpha_i\leq Cαi\alpha_i求出b后取平均值。

  10. 核方法
    表示定理:机器学习之支持向量机
    最常见的核方法是通过引入核函数(核化)将线性学习器拓展为非线性学习器。