zoukankan      html  css  js  c++  java
  • 支持向量机

    支持向量机

    一、线性模型
    图1 线性可分情况

    找一个平面,向上或向下评选移动该平面,使之擦过一些向量,将距离 (d) 定义为此平面的优化量度,使 (d) 尽可能的大,(d) 叫做间距(margin),擦过的向量叫做支持向量(support vectors),即$ B_8$ 和 (A_5)

    设空间有 (N) 个向量 (x_1,x_2,...x_N),它们要么属于 (c_1) 类,要么属于 (c_2) 类。即,

    [y_i = egin{cases} 1,& x_i in c_1 \ -1,& x_i in c_2 end{cases} ]

    • 优化问题

    最小化(Minimize): (frac{1}{2}||omega||^2)

    限制条件(Subject to):(y_i[omega^Tx_i+b]geq 1(i=1,2,...N))

    那么优化问题为什么要最小化 (frac{1}{2}||omega||^2) 呢?首先先了解两个“事实”。

    (1)若 (omega^T+b=0) 表示一个平面,那么 (aomega^T+ab=0)(ain R^+)(正实数) 的情况下表示的平面是同一个平面。

    (2)点 ((x_0,y_0)) 到平面 (omega_1x+omega_2y+b=0) 的距离 (s=frac{|omega_1x_0+omega_2y_0+b|}{sqrt{omega_1^2+omega_2^2}}),那么根据推广可知,向量 (x_0) 到超平面 (omega^Tx+b=0) 的距离为 (d=frac{omega^Tx_0+b}{||omega||}(||omega||=sqrt{omega_x^2+omega_2^2+...+omega_N^2}))

    我们可以用 (a) 去缩放 ((omega,b) ightarrow (aomega,ab)) ,使得 (|omega_*^Tx_0+b_*|=1),那么此时,间隔 (d=frac{1}{||omega||}) ,我们的目的是使得 (d) 尽可能的大,那么根据距离公式,可以使 (||omega||^2) 最小化((frac{1}{2}) 是为了求导方便,没有实际意义)以达到目的。

    扩展:上述优化问题是凸优化问题(也叫二次规划),特点是要么无解,要么只有一个极值。定义为

    (1)目标函数是二次项。

    (2)限制条件是一次项。

    二、非线性模型

    在线性不可分的情况下,优化问题可以写成:

    最小化:(frac{1}{2}||omega||+Csum_{i=1}^{N}delta_i)

    限制条件:(1)(delta_igeq0);(2)(y_i[omega^Tx_i+b]geq 1-delta_i(i=1,2,...,N))

    注意:

    (1)(C)是常数,是事先设定好的,为了平衡权重。(omega,b,delta_i(i=1,2,...,N)) 为待求变量。

    (2)此优化问题(也是凸优化)对任意点集,无论是否线性可分都有解。

    支持向量机处理非线性情况是通过将向量 (x) 映射到高维空间,再用线性方式去分开。通俗的说,在低纬空间线性不可分,那么在高维有很大的概率能够线性可分。例如异或问题是线性不可分的。

    图2 异或问题

    ​ 设 (A=left[egin{matrix} 0\ 0 end{matrix} ight] in c_1 ,quad B=left[egin{matrix} 1\ 1 end{matrix} ight] in c_1 ,quad C=left[egin{matrix} 1\ 0 end{matrix} ight] in c_2 ,quad D=left[egin{matrix} 0\ 1 end{matrix} ight] in c_2) ,让 (x) 通过 (varphi(x)) 变换映射到高维空间。即

    [x=left[ egin{matrix} a\b end{matrix} ight] Longrightarrow varphi(x)=left[egin{matrix} a^2\b^2 \a\b\ab end{matrix} ight] ]

    那么

    [varphi(A)=left[egin{matrix} 0\ 0\0\0\0 end{matrix} ight] in c_1 ,quad varphi(B)=left[egin{matrix} 1\ 1 \1\1\1 end{matrix} ight] in c_1 ,quad varphi(C)=left[egin{matrix} 1\ 0 \1\0\0 end{matrix} ight] in c_2 ,quad varphi(D)=left[egin{matrix} 0\ 1\0\1\0 end{matrix} ight] in c_2 ]

    那么可以找到一组解使其线性可分,即

    [omega_*=left[egin{matrix} -1\-1\-1\-1\6 end{matrix} ight] quad , quad b=1 ]

    代入式子可得如下式子,显然线性可分。

    [omega_*^Tvarphi(A)+b = 1 geq0quad omega_*^Tvarphi(B)+b = 3geq0 quad omega_*^Tvarphi(C)+b = -1 <0 quad omega_*^Tvarphi(D)+b = -1 < 0 ]

    (varphi(x)) 接近无限维度时,线性可分的概率会接近到1,对于此问题,只需要修改 SVM(x)(varphi(x)) 即可。

    最小化:(frac{1}{2}||omega||+Csum_{i=1}^{N}delta_i)

    限制条件:(1)(delta_igeq0);(2)(y_i[omega^Tvarphi(x_i)+b]geq 1-delta_i(i=1,2,...,N))

    (varphi(x)) 这会是一个非常复杂的式子。其实我们不需要知道 (varphi(x)) 的显示表达也可以计算。我们只需要知道一个核函数(kernel function),即 (k(x_1,x_2)=varphi(x_1)^Tvarphi(x_2)) 就可以了。

    • 常用的核函数有如下:
    名称 表达式
    线性核 (k(x_i,x_j)=x_i^Tx_j)
    多项式核 (k(x_i,x_j)=(x_i^Tx_j)^d)
    高斯核 $k(x_i,x_j)=exp(-frac{
    sigmoid核 (k(x_i,x_j)=tanh(eta x^T_ix_j + heta))

    (Mercer's quad Theorem) :核函数 (k(x_1,x_2)) 可拆分为 (varphi(x_1)^T varphi(x_2)) 的充分条件为:对任意函数 (varphi(x)) 满足 :

    [(1)quad k(x_1,x_2)=k(x_2,x_1)(交换律) quad;quad(2)quad forall c_i,x_i(x=1...N),sum_{i=1}^{N}sum_{j=1}^{N}c_ic_jk(x_i,x_j) geq 0(半正定性) ]

    • 原问题(Prime Problem)与对偶问题(Dual Problem)

    (1)原问题:

    最小化(Minimize): (f(omega))

    限制条件(Subject to): (g_i(omega) le 0(i=1,2...K) quad ;quad h_i(omega)=0(i=1,2,...M))

    (2)对偶问题:

    定义:(L(omega,alpha,eta) = f(w)+sum_{i=1}^{K}alpha_ig_i(omega)+sum_{i=1}^{M}eta_i h_i(omega)=f(omega)+alpha^Tg(omega)+eta^Th(omega))

    最大化(Maximize): ( heta(alpha,eta) = inf_{定义域内所有的omega}L(omega,alpha,eta))

    ((inf即求最小值,该式是在alpha,eta 固定下,遍历omega,求最小值))

    限制条件(Subject to): $alpha_i ge 0(i=1,2,...K) $

    (3)定理1:如果 (omega^*) 是原问题的解,而 (alpha^*,eta^*) 是其对偶问题的解,则有 (f(omega^*) ge heta(alpha^*,eta^*))

    证明:

    [egin{aligned} heta(alpha^*,eta^*) & = inf_{定义域内所有的omega}L(omega^*,alpha^*,eta^*)\ &le L(omega^*,alpha^*,eta^*) \ &=f(omega^*)+underbrace{alpha^{*T}}_{ge0} underbrace{g(omega^*)}_{le0}+eta^{*T}underbrace{h(omega^*)}_{=0} \ &le f(omega^*) end{aligned} ]

    (G = f(omega^*) - heta(alpha^*,eta^*) ge0) 叫原问题与对偶问题的间距(Duality Gap)。

    注意:如果 (f(omega^*) = heta(alpha^*,eta^*)),必能推出对于所有的 (i=1-K,alpha_i^* = 0 或 g_i^*(omega^*)=0) ,此为 (KKT) 条件。

    (4)定理2(强对偶定理):如果 (g(omega) = Aomega +b,h(omega) = Comega+d,f(omega)) 为凸函数,则 (f(omega^*) = heta(alpha^*,eta^*)),即间距为0。

    凸函数定义是(forall omega_1,omega_2),有 (f(lambdaomega_1+(1-lambda)omega_2)lelambda f(omega_1)+(1-lambda)f(omega_2) quad lambdain[0,1])

    • 支持向量机(原问题与对偶问题)

    (1)原问题

    最小化:(frac{1}{2}||omega||-Csum_{i=1}^{N}delta_i)

    限制条件:(1)(delta_ile0);(2)(1+delta_i-y_iomega^Tvarphi(x_i)+y_ible 0(i=1,2,...,N))

    (2)对偶问题

    最大化 ( heta(alpha,eta) = inf_{所有 omega,delta_i,b}frac{1}{2}||omega||^2-Csum_{i=1}^{N}delta_i+sum_{i=1}^Neta_idelta_i+sum_{i=1}^Nalpha_i[1+delta_i-y_iomega^Tvarphi(x_i)+y_ib])

    限制条件:(1)(alpha_ige0(i=1,2,...,N));(2)(eta_ige0(i=1,2,...,N))

    现在的待求参数是 (omega ,delta_i ,b),对其求偏导,并等于0处取得最优值。

    [egin{aligned} &frac{partial heta}{partial omega} = omega-sum_{i=1}^{N}alpha_ivarphi(x_i)y_i=0Longrightarrow omega=sum_{i=1}^{N}alpha_ivarphi(x_i)y_i qquad (1) \ &frac{partial heta}{partial delta_i}=-C+eta_i+alpha_i=0Longrightarrow alpha_i+eta_i=C qquad (2) \ &frac{partial heta}{partial b} = -sum_{i=1}^Nalpha_iy_i=0Longrightarrowsum_{i=1}^Nalpha_iy_i =0qquad(3) end{aligned} ]

    把(1)(2)(3)代入后的对偶问题为

    最大化:

    ( heta(alpha,eta)=sum_{i=1}^N-frac{1}{2}sum_{i=1}^Nsum_{j=1}^{N}y_iy_jalpha_ialpha_jvarphi(x_i)^Tvarphi(x_j)=sum_{i=1}^N-frac{1}{2}sum_{i=1}^Nsum_{j=1}^{N}y_iy_jalpha_ialpha_jk(x_i,x_j))

    限制条件:

    (1)(0lealpha_ile C(因为eta_ige0且eta_i=C-alpha_i,所以 alpha_i le C,i=1,2,...,N))

    (2)(sum_{i=1}^{N}alpha_iy_i=0(i=1,2,...,N))

    这也是一个二次规划问题,解此问题时,由于 (varphi(x_i)^Tvarphi(x_j)=k(x_i,x_j)),我们只需要知道核函数,不需要知道 (varphi(x)) 的具体表达。现在我们计算 (omega^Tvarphi(x_i) +b)

    首先计算 (omega^T varphi(x_i)),根据(1)式子可得 (omega^T varphi(x_i) = sum_{j=1}^{N}y_jalpha_jvarphi(x_j)^Tvarphi(x_i)=sum_{j=1}^{N}y_jalpha_jk(x_j,x_i))

    然后算 (b),根据KKT条件,对于所有 (i(i=1,2...N))(alpha_i[1+delta_i-y_iomega^Tvarphi(x_i)+y_ib] = 0)(eta_idelta_i = 0 Longrightarrow(C-alpha_i)delta_i = 0),如果对于某一个 (i,alpha_i ot=0,且alpha_i ot=C),则必有 (delta_i=0(由eta_i ot=0推出))(1+delta_i-y_iomega^Tvarphi(x_i)+y_ib=0(由alpha_i ot=0推出)),因此 (b) 的值为

    [b=frac{1-y_iomega^Tvarphi(x_i)}{y_i} =frac{1-y_isum_{j=1}^Nvarphi_jy_jk(x_i,x_j)}{y_i} ]

    最后,我们可以对测试样本 (x) 进行判断,即

    [ egin{cases} xin c_1 ,如果omega^Tvarphi(x_i) +b=sum_{j=1}^{N}y_jalpha_jk(x_j,x_i)+frac{1-y_isum_{j=1}^Nvarphi_jy_jk(x_i,x_j)}{y_i} ge0 \ xin c_2 ,如果omega^Tvarphi(x_i) +b=sum_{j=1}^{N}y_jalpha_jk(x_j,x_i)+frac{1-y_isum_{j=1}^Nvarphi_jy_jk(x_i,x_j)}{y_i} <0 \ end{cases} ]

  • 相关阅读:
    LeetCode "Median of Two Sorted Arrays"
    LeetCode "Distinct Subsequences"
    LeetCode "Permutation Sequence"

    LeetCode "Linked List Cycle II"
    LeetCode "Best Time to Buy and Sell Stock III"
    LeetCode "4Sum"
    LeetCode "3Sum closest"
    LeetCode "3Sum"
    LeetCode "Container With Most Water"
  • 原文地址:https://www.cnblogs.com/zhangyazhou/p/13561934.html
Copyright © 2011-2022 走看看