zoukankan      html  css  js  c++  java
  • SVM

    目录:

    1.间隔

    2.符号标记

    3.函数间隔和几何间隔(Functional and geometric margins)

    4.最佳间隔分类器

    5.拉格朗日对偶(Lagrange duality)

    6.最佳间隔分类器(续4)

    7.核学习

    8.正则化和不可分样例(Regularization and the non-separable case)

    9.SMO(sequential minimal optimization)算法

     

    1.间隔(Margins) 返回目录

    考虑逻辑回归,概率值 $p(y=1|x; heta)$ 是由模型 $h_{ heta}(x)=g( heta^{T}x)$ 预测出来的,给定 $x$,如果 $ heta^{T}xgeq0$,则 $h_{ heta}(x)geq0.5$,预测最终类别就为 1.

    对于一个正类样本 $y=1$,$ heta^{T}x$ 越大,$h_{ heta}(x)=p(y=1|x;w,b)$ 也就越大,我们也就更大程度上确定该样本属于类别 1.也就是说如果 $ heta^{T}x$>>$0$,那么预测 $y=1$ 就非常可信,类似地,如果 $ heta^{T}x$<<$0$,我们就能很自信 $y=0$ 是正确的预测.换种角度,对于给定的训练集,如果我们拟合出合适的参数$ heta$,对于任何一正类样本$y=1$,使得 $ heta^{T}x$>>$0$,对于任何负类样本 $y=0$,使得 $ heta^{T}x$<<$0$,那么就可以说拟合出了很好的参数,因为这个参数对应的分类器可以将样本很“自信”地区分开来,如果拟合出侧参数使得 $ heta^{T}x$=$0$ ,这就使得 $p(y=1|x; heta)=0$,也就是说很难确定到底是哪一类,也就是参数使得 $ heta^{T}x$ 的值距离 0 越远越好,这样就越加容易确定出给定特征所属类别。

    考虑下面的图:

     

     

    上面的直线就是决策边界(也叫分割超平面)根据所得 $A,B,C$ 是三个已经被分出类的点。注意到,点A距离决策边界很远,如果被问对于 $A$ 的 $y$ 值得预测是多少,我们可以很大胆且自信的说 $y=1$.反观点 $C$,距离决策边界很近,虽然我们根据当前的决策边界也预测 $y=1$,但是当决策边界作出很小的改变,就很容易使得 $y=0$,因此我们对 $A$ 的预测比对 $C$ 的预测更加自信,也就是说如果某点距离决策边界越远,那么根据此决策边界对该点作出的预测就更加可信。

    2.符号标记 返回目录

    为了使得讨论SVM更加清晰,首先来介绍一些符号标记。我们将用 $yin{-1,1}$ 来表示正负类,用 $w,b$ 来表示参数,我们要学习出的分类器模型如下:

    $h_{w,b}(x)=g(w^{T}x+b)$

     其中,如果 $zgeq0$,$g(z)=1$,否则 $g(z)=-1$

    3.函数间隔和几何间隔(Functional and geometric margins) 返回目录

    给定某一训练样本 $(x^{(i)},y^{(i)})$,我们定义的关于参数 $w,b$ 函数间隔:

    $hat{gamma}^{(i)}=y^{(i)}(w^{T}x+b)$.

    如果 $y^{(i)}=1$,为了让函数间隔较大(正如前面讨论,为了预测更加可信和正确),需要 $w^{T}x+b$ 是一个很大的正值,当 $y^{(i)}=-1$,

    同样为了让函数间隔较大,就需要 $w^{T}x+b$ 是一个绝对值很大的负值。简单来说,当 $y^{(i)}(w^{T}x+b)$ 是一个很大的正值时,我们对样本的预测的正确性就会相当大,因此一个较大的函数间隔就意味着更加可信和正确的预测。然而增大 $w^{T}x+b$ 绝对值得方法其实很简单,用 $(2w,2b)$ 代替 $(w,b)$ 就很容易达到目的,但这样做真的可行或者有意义吗?考虑下面的讨论。

    对于一个线性分类器,我们选择上面提到的函数 $h_{w,b}(x)=g(w^{T}x+b)$ (只能取 $1$ 或者 $-1$),如果我们用 $(2w,2b)$ 代替 $(w,b)$,显然有 $g(w^{T}x+b)=g(2w^{T}x+2b)$,也就是说 $h_{w,b}(x)$ 的值就没变,即 $h_{w,b}(x)$ 只取决于 $w^{T}x+b$ 的符号,而不是 $w^{T}x+b$ 值的大小。但是,用 $(2w,2b)$ 代替 $(w,b)$ 后,导致上面提到的函数间隔$hat{gamma}^{(i)}=y^{(i)}(w^{T}x+b)$ 也变为原来的两倍。但是,如果原来预测 $h_{w,b}(x)=0.5$,就是 $p(y=1|x; heta)=0.5$,意味着是 1 或者 -1 类的几率仍然是一样的,很难确定到底是哪一类,即使代替后函数间隔变为原来的 2 倍,由于 $h_{w,b}(x)$ 没变,所以还是很难确定,所以增大函数间隔后并没有提高预测的可信度和准确性,那么之前说的“一个较大的函数间隔就意味着更加可信和正确的预测”是不是有问题呢?显然是有问题的,所以为了解决这个问题,我们得从函数间隔的定义入手:采取一种归一化手段,令 $||w||_{2}=1$,用$(w/||w||_{2},b/||w||_{2})$ 代替 $(w,b)$. 后面会继续讨论这个问题。

    给定训练集 $S={(x^{(i)},y^{(i)});i=1,...,m}$,前面 $hat{gamma}^{(i)}$ 是代表训练集中某一个样本的函数间隔,我们定义训练集的函数间隔是训练集中所有样本的函数间隔中最小的那个,用 $hat{gamma}$ 表示训练集的函数间隔,则根据定义:

     $hat{gamma}=min_{i=1,...,m}hat{gamma}^{(i)}$

     

    下面讨论几何间隔,考虑下面图片:

     

     

    在参数还是 $(w,b)$ 的情况下决策边界如上面直线所示。因为决策边界的方程是 $w^{T}x+b=0$,根据几何知识可以知道,决策边界是与向量 $w$ 垂直的。考虑点 $A$ 代表着某个训练样本 $x^{(i)}$ 被标记为 $1$ 类,点 $A$ 到决策边界的距离就是线段 $AB$ 的长度,用 $gamma^{(i)}$ 表示,注意区别于 $hat{gamma}^{(i)}$.

    如何计算出 $A$ 的 $gamma^{(i)}$ 值呢?可以看出 $w/||w||_{2}$ 是与 $w$ 同向的单位向量,$A$ 代表 $x^{(i)}$,因此点 $B$ 就可以表示为 $x^{(i)}-gamma^{(i)}cdot w/||w||$

    但是点 $B$ 是决策边界上的一点,根据决策边界的方程 $w^{T}x+b=0$ 可以得到:

    $w^{T}(x^{(i)}-gamma^{(i)}frac{w}{||w||})+b=0$

    解出 $gamma^{(i)}$:

     $gamma^{(i)}=frac{w^{T}x^{(i)}+b}{||w||}=(frac{w}{||w||})^{T}x^{(i)}+frac{b}{||w||}$ 

    然而这只是位于决策边界上方的正样本的,更加一般地,我们定义出任意训练集中的样本的 $gamma^{(i)}$:

    $gamma^{(i)}=y^{(i)}((frac{w}{||w||})^{T}x^{(i)}+frac{b}{||w||})$

    这就是任意样本的几何间隔(geometric margin).

    当 $||w||=1$,函数间隔就和几何间隔相等,这就将两种不同间隔联系了起来。

    但是,当我们用 $(2w,2b)$ 代替 $(w,b)$,函数间隔会变为原来的 $2$ 倍,而几何间隔却不会变(这个在后面性质会很有用),

    这就解释了为什么前面用 $(2w,2b)$ 代替 $(w,b)$,函数间隔变大,而分类准确度和可信度没有变化,因为函数间隔虽然变大,但是反映到实际的图形中,我们可以看到该点到分类边界的距离  $gamma^{(i)}$(几何间隔)并没有变化,分类准确度和可信度当然不会提高,所以函数间隔存在局限性,而几何间隔就不存在这种问题,只要几何间隔变大,在图形中很显然就可以反映出分类可信度的提高。

    最后定义出训练集 $S={(x^{(i)},y^{(i)});i=1,...,m}$ 的几何间隔,就是所有样本个体的几何间隔最小的间隔:

    $gamma=min_{i=1,...,m}gamma^{(i)}$

    4.最佳间隔分类器 返回目录

    根据之前的讨论,在给定训练集的情况下,最重要是找到一个决策边界最大化该训练集的几何间隔,最终的分类结果就是,几何间隔就像一条河沟一样,一边是正类,另一边是负类。

    现在假设给定的训练集是线性可分的,即可以用超平面将样本分成正负类。那么如何得到最大几何间隔呢?于是自然我们想到优化下面的问题:

    $max_{gamma,w,b}gamma$

    s.t.$y^{(i)}(w^{T}x+b)geqgamma,i=1,2,...m$

    $||w||=1$ 

    第一个约束保证所有函数间隔都至少为 $gamma$ ,$||w||=1$ 进一步保证函数间隔和几何间隔相等(为了解决上面讨论过的函数间隔的局限性),这样就保证了所有几何间隔都至少为 $gamma$. 优化这个问题,我们就可以得到最大几何间隔时的参数 $(w,b)$.

    由于 $||w||=1$ 的限制,使得上述优化的问题,变成了一个非凸的问题,就很用常规的解析的方法去优化,于是把问题转换一下,由前面讨论可知,函数间隔和几何间隔有如下关系: 

    $gamma=hat{gamma}/||w||$

    于是优化问题可以转换为:

    $max_{hat{gamma},w,b}frac{hat{gamma}}{||w||}$

    s.t. $y^{(i)}(w^{T}x+b)geqhat{gamma},i=1,2,...m$

     

    然而, $hat{gamma}/||w||$ 仍然是一个非凸目标,下面继续

    回想我们之前说过,对 $(w,b)$ 随意扩大或者缩小任意倍数对最终分类的性能是没有什么影响的,下面就要利用这一点。

    我们限制含有参数 $(w,b)$ 的函数间隔为1:

    $hat{gamma}=1$

     

    于是 $hat{gamma}/||w||=1/||w||$ ,而最大化 $hat{gamma}/||w||=1/||w||$ 和最小化 $||w||^{2}$ 是等价的,

    于是问题进一步转化:

    $min_{gamma,w,b}frac{1}{2}||w||^{2}$

    s.t. $y^{(i)}(w^{T}x+b)geq1,i=1,2,...m$

    成功转化非凸目标到一个可解析的凸目标,而且只有一个线性约束,它的解就是最佳间隔分类器。

    传统的二次规划就可以解决这个问题。下面要介绍一种对偶优化的方法。

    5.拉格朗日对偶(Lagrange duality) 返回目录

    下面讨论注重思想,不要在意公式。

    考虑下面问题:

    $min_{w}f(w)$

    s.t. $h_{i}(w)=0,i=1,2,...,l$

    转化为无约束问题求解, 定义拉格朗日算子:

    $mathcal{L}(w,b)=f(w)+sum_{i=1}^{l}eta_{i}h_{i}(w)$

    这里 $eta_{i}$ 是拉格朗日乘子,对拉格朗日算子求偏导并让导数为 $0$:

    $frac{partialmathcal{L}}{partial w_{i}}=0;frac{partialmathcal{L}}{partialeta_{i}}=0$

     

    解出 $w$ 和 $eta$.

    上面的问题只有一个等式约束,下面讨论更为一般的既含有等数约束,又含有不等式约束。

    定义一个原问题:

    $min_{w}f(w)$

    s.t. $h_{i}(w)=0,i=1,2,...,l$

    $g_{i}(w)leq0,i=1,2,...,k$

    类似与上面问题的求解方式,定义一个拉格朗日算子:

    $mathcal{L}(w,alpha,eta)=f(w)+sum_{i=1}^{k}alpha_{i}g_{i}(w)+sum_{i=1}^{l}eta_{i}h_{i}(w)$

    这里 $alpha_{i}$ 和 $eta_{i}$ 都是拉格朗日乘子.

    考虑下面数值:

    $ heta_{p}(w)=max_{alpha,eta:alpha_{i}geq0}mathcal{L}(w,alpha,eta)$

    假如给定 $w$,假如 $w$ 不满足原约束条件,即 $g_{i}(w)>0$ 或者 $h_{i}(w) eq0$,

    那么:

    $ heta_{p}(w)=max_{alpha,eta:alpha_{i}geq0}f(w)+sum_{i=1}^{k}alpha_{i}g_{i}(w)+sum_{i=1}^{l}eta_{i}h_{i}(w)=infty$

     

    相反,如果 $w$ 满足原约束条件,那么:

    $ heta_{p}(w)=f(w).$

    由此可见,在 $w$ 满足原约束条件下,$ heta_{p}$ 和我们所要解决的问题目标有着相同的值,如 $w$ 不满足原约束条件,

    $ heta_{p}$ 就趋向正无穷.于是我们发现下面等式成立:

    $min_{w} heta_{p}(w)=min_{w}max_{alpha,eta:alpha_{i}geq0}mathcal{L}(w,alpha,eta)$

    于是定义 $p^{*}=min_{w} heta_{p}(w)$,称为原问题的目标值.

    现在来讨论一个稍微有些不同问题:

    $ heta_{D}(alpha,eta)=min_{w}mathcal{L}(w,alpha,eta)$.

    注意 $ heta_{p}(w)=max_{alpha,eta:alpha_{i}geq0}mathcal{L}(w,alpha,eta)$ 是最大化过程中 $alpha,eta$ 是变量,而这个问题在最小化过程中 $w$ 是变量. 由此得到如下问题,称为对偶问题:

    $max_{alpha,eta:alpha_{i}geq0} heta_{D}(alpha,eta)=max_{alpha,eta:alpha_{i}geq0}min_{w}mathcal{L}(w,alpha,eta).$,

    回头看看原问题: $min_{w} heta_{p}(w)=min_{w}max_{alpha,eta:alpha_{i}geq0}mathcal{L}(w,alpha,eta)$,可以发现,原问题和对偶问题除了“$max$”和“$min$”交换了位置之外,其余的完全一样. 同样,我们定义对偶问题的目标值:$d^{*}=max_{alpha,eta:alpha_{i}geq0} heta_{D}(alpha,eta)$. 于是,可以得出对偶问题和原问题的关系:

    $d^{*}=max_{alpha,eta:alpha_{i}geq0}min_{w}mathcal{L}(w,alpha,eta)leqmin_{w}max_{alpha,eta:alpha_{i}geq0}mathcal{L}(w,alpha,eta)=p^{*}$

    (函数极小值的极大值肯定小于极大值的极小值)

    但是,在一定条件下有:

    $d^{*}=p^{*}$

    所以,在这个条件成立的时候,有时为了方便,我们可以解原问题的对偶问题而不去直接解原问题。下面讨论原问题和对偶问题目标值相等的条件。

    将最初的问题再写出来:

    $min_{w}f(w)$

    s.t. $h_{i}(w)=0,i=1,2,...,l$

    $g_{i}(w)leq0,i=1,2,...,k$

    假设函数 $f$ 和约束条件 $g_{i}$ 都是凸函数,约束条件 $h_{i}$ 是线性函数(即存在 $a_{i},b_{i}$ 使得 $h_{i}(w)=a_{i}^{T}w+b_{i}$ 成立),进一步假设$g_{i}$ 是严格可行,对于所有 $i$ 即至少存在一个 $w$ 使得 $g_{i}(w)<0$. 

    在上述假设条件下,一定存在 $w^{*},alpha^{*},eta^{*}$,使得 $w^{*}$ 是原问题 $min_{w} heta_{p}(w)=min_{w}max_{alpha,eta:alpha_{i}geq0}mathcal{L}(w,alpha,eta)$ 的解,$alpha^{*},eta^{*}$ 是对偶问题 $ heta_{D}(alpha,eta)=min_{w}mathcal{L}(w,alpha,eta)$ 的解,并且 $p^{*}=d^{*}=mathcal{L}(w^{*},alpha^{*},eta^{*})$. 此外,$w^{*},alpha^{*},eta^{*}$ 满足KKT条件(Karush-Kuhn-Tucker conditions):

    1. $frac{partialmathcal{L}(w^{*},alpha^{*},eta^{*})}{partial w_{i}}=0,i=1,2,...,m$
    2. $frac{partialmathcal{L}(w^{*},alpha^{*},eta^{*})}{partialeta_{i}}=0,i=1,2,...,l$
    3. $alpha_{i}^{*}g_{i}(w^{*})=0,i=1,2,...,k$
    4. $g_{i}(w^{*})leq0,i=1,2,...,k$
    5. $alpha^{*}geq0$

     总的来说,如果 $w^{*},alpha^{*},eta^{*}$ 满足 $KKT$ 条件,原问题的解就和对偶问题的解相等. 特别注意条件 (3) 是对偶互补条件,它意味着如果 $alpha_{i}^{*}>0$,则 $g_{i}(w^{*})=0$, 这将会成为后面讨论的一个关键.

    6.最佳间隔分类器(续4) 返回目录

    在第4部分,为了找到最佳间隔分类器,采取优化下面的问题(原问题):

    $min_{gamma,w,b}frac{1}{2}||w||^{2}$

    s.t. $y^{(i)}(w^{T}x+b)geq1,i=1,2,...m$

    为和第5部分讨论的优化问题形式上统一,可以把这个优化问题的约束条件写为:

    $g_{i}(w)=-y^{(i)}(w^{T}x+b)+1leq0$

    由 $KKT$ 对偶互补条件可知:$alpha_{i}^{*}g_{i}(w^{*})=0$, 又由 $KKT$ 条件可知 $alpha^{*}geq0$, 这里就是 $alpha_{i}geq0$. 如果 $alpha_{i}>0$, 则 $g_{i}(w)=0$,即

    $-y^{(i)}(w^{T}x+b)+1=0$, 于是 $y^{(i)}(w^{T}x+b)=1$,而 $y^{(i)}(w^{T}x+b)$ 就是样本 $(x^{(i)},y^{(i)})$ 的函数间隔. 由此可知,只有当样本函数间隔为 $1$ 时,才有 $alpha_{i}>0$.

    考虑下面的示意图:

     

    实线代表最大间隔分割超平面.最靠近决策边界的点的间隔最小,如图只有三个点距离决策边界最近,即这三个点的间隔是 $1$,三个点(两个正样本和一个负样本)正好位于与决策边界平行的虚线上。由前面讨论可知使得 $alpha_{i}>0$ 的点只有这三个,那么这三个点就是这个问题的支持向量(support vectors). 可以看出支持向量的数目要远比训练样本数目小.

    下面我们试图用对偶的方法解这个问题,构造原问题的拉格朗日算子:

    $mathcal{L}(w,b,alpha)=frac{1}{2}||w||^{2}-sum_{i=1}^{m}alpha_{i}[y^{(i)}(w^{T}x^{(i)}+b)-1]$

    根据 $KKT$ 条件:

    $ abla_{w}mathcal{L}(w,b,alpha)=w-sum_{i=1}^{m}alpha_{i}y^{(i)}x^{(i)}=0$

    于是得到:$w=sum_{i=1}^{m}alpha_{i}y^{(i)}x^{(i)}$

    于是拉格朗日算子可以写为:

    $mathcal{L}(w,b,alpha)=sum_{i=1}^{m}alpha_{i}-frac{1}{2}sum_{i,j=1}^{m}y^{(i)}y^{(j)}alpha_{i}alpha_{j}(x^{(i)})^{T}x^{(j)}-bsum_{i=1}^{m}alpha_{i}y^{(i)}.$

     

    同样有 $KKT$ 条件:

    $frac{partialmathcal{L}(w,b,alpha)}{partial b}=sum_{i=1}^{m}alpha_{i}y^{(i)}=0$

     

    进一步简化:

    $mathcal{L}(w,b,alpha)=sum_{i=1}^{m}alpha_{i}-frac{1}{2}sum_{i,j=1}^{m}y^{(i)}y^{(j)}alpha_{i}alpha_{j}(x^{(i)})^{T}x^{(j)}$

     

    于是得到对偶问题:

    $max_{alpha}W(alpha)=sum_{i=1}^{m}alpha_{i}-frac{1}{2}sum_{i,j=1}^{m}y^{(i)}y^{(j)}alpha_{i}alpha_{j}<x^{(i)},x^{(j)}>$

    s.t. $alpha_{i}geq0,i=1,2,...,m$

    $sum_{i=1}^{m}alpha_{i}y^{(i)}=0$

    $<x^{(i)},x^{(j)}>$ 表示 $(x^{(i)})^{T}x^{(j)}$

    如何解这个对偶问题暂时不谈,假如已经解出了这对偶问题,得到了最优的 $alpha$,那么根据上面的 $w=sum_{i=1}^{m}alpha_{i}y^{(i)}x^{(i)}$,

    就可以得到最佳的 $w$,即找到了 $w^{*}$,然后由下面的等式:

    $b^{*}=-frac{max_{i:y^{(i)}=-1}w^{*T}x^{(i)}+min_{i:y^{(i)}=1}w^{*T}x^{(i)}}{2}$

    得到最优的 $b$,即 $b^{*}$.

    假设根据训练集现在已经拟合出了各个参数,对于新来的输入点 $x$,我们通过计算 $w^{T}x+b$,当且仅当这个值大于 $0$ 时,给出预测 $y=1$, 而根据 $w=sum_{i=1}^{m}alpha_{i}y^{(i)}x^{(i)}$:

    $w^{T}x+b=(sum_{i=1}^{m}alpha_{i}y^{(i)}x^{(i)})^{T}x+b=sum_{i=1}^{m}alpha_{i}y^{(i)}<x^{(i)},x>+b$

    因此,如果已经拟合出 $alpha$, 为了计算这个值只需要计算训练集中的点和 $x$ 的内积即可.由上面的讨论可知,除了支持向量对应的几个点对应的 $alpha$ 不为 $0$,其余情况下 $alpha$ 均为 $0$. 所以累加的许多项都为 $0$,我们只需计算出支持向量(往往数量很少)和 $x$ 的内积即可.

    7.核学习 返回目录

    假如现在有一堆房屋面积 $(x)$ 和房屋价格 $(y)$ 的数据,现在要用该数据进行回归,然后根据给的的面积预测出价格,当我们发现拟合一次函数或者二次函数都不能很好预测的时候,考虑拟合一个三次函数,所以我们需要将原始特性$x$ 由一维空间映射到三维空间:

    $phi(x)=left[egin{array}{c}x\x^{2}\x^{3}end{array} ight]$

    $phi$ 被称为特征映射. 就是说我们向高维映射映射的目的是为了提供预测的准确性,当然在高维空间的计算也会出现麻烦,核学习的动机也正是由此而来。

    首先给出核的定义:

    $K(x,z)=phi(x)^{T}phi(z)$

    就是将特征 $x, z$ 进过特征映射 $phi$ 后,求映射的内积. 一句话,核就是两个向量映射到另一个空间之后的内积.

    核的作用是什么呢?之前的讨论可知,要预测新特征 $x$ 的类别,需要计算训练集的支持向量与$x$ 的内积,一般分为两步:

    • 把原始向量映射到特征空间,得到特征向量
    • 计算特征向量的内积

    但是当我们把特征向量映射到一个超高维空间的时候,常常会由于维度很高,导致映射的计算的复杂度很高,使得问题变得很棘手。但是不去计算映射而是直接计算核的值,却往往大大减少计算复杂度,具体看下面分析。

    假设: $x,zinmathbb{R^{n}}$,考虑核:

    $K(x,z)=(x^{T}z)^{2}$

    还可以写成如下形式:

    $K(x,z)=left(sum_{i=1}^{n}x_{i}z_{i} ight)left(sum_{j=1}^{n}x_{i}z_{i} ight)=sum_{i=1}^{n}sum_{j=1}^{n}x_{i}x_{j}z_{i}z_{j}=sum_{i,j=1}^{n}(x_{i}x_{j})(z_{i}z_{j})$

    从上面的式子可以看出,特征映射 $phi$(假定特征维数为 $3$)是由如下方式给出:

    可以看出,计算 $n$ 维 $phi(x)$ 时间复杂度是 $O(n^{2})$.

    而计算 $K(x,z)$ 的时间复杂度是 $O(n)$, 和输入的特征维数是线性关系. 所以在计算核的时候,根本不需要算出特征映射的结果,而是像上面给出的核定义一样,直接计算出 $K(x,z)$,时间复杂度大大减小。

    同样考虑一个相关的核:

    $K(x,z)=(x^{T}z+c)^{2}=sum_{i,j=1}^{n}(x_{i}x_{j})(z_{i}z_{j})+sum_{i=1}^{n}(sqrt{2c}x_{i}sqrt{2c}z_{i})+c^{2}$

     

    计算这个核的相应的特征映射(假设特征维度 $3$):

    这里将特征映射到了一个更加高维的空间,但是计算 $K(x,z)$ 的时间复杂度还是 $O(n)$, 保持不变,这就是支持向量机可以处理超高维特征的内在原因。

    到底该如何定义核呢?什么样的核才合理?

    最开始给出核的定义是:

    $K(x,z)=phi(x)^{T}phi(z)$

     

    由前面讨论可知 $phi(x)$ 和 $phi(z)$ 是将特征映射到高维空间后的特征向量,根据向量的知识很容易知道,当 $phi(x)$ 和 $phi(z)$ 之间很相似(极限是平行)的时候,$K(x,z)$ 的值会很大,如果 $phi(x)$ 和 $phi(z)$ 差别很大(如互相垂直),$K(x,z)$ 的值就会很小,所以,可以认为核就是对 $phi(x)$ 和 $phi(z)$ 之间的相似度的度量,符合前面所说(两向量相似,核值很大,两向量差别大,核值很小)的特点的函数都可以用来作为 $SVM$ 的核.

    如高斯核:

    $K(x,z)=exp(-frac{||x-z||^{2}}{2sigma^{2}})$,

    容易验证该核函数符合上面所说的核函数应有的特点. 当然还有许多其它核函数,这里不一一给出,网上很容易查到,都很容易看出这些核函数具有上面的特点。

    但是记住,核学习的方法不仅仅只用于SVM,它要比SVM应有的更加广泛,如果某一个算法可以引入一个恰当的核函数,算法的效率通常会大大提升。

    8.正则化和不可分样例(Regularization and the non-separable case) 返回目录

    到目前为止,所有关于 $SVM$ 的推导都是假设数据时线性可分的,即使某些时候在低维空间线性很难分开,我们会用特征映射将数据映射到高维空间之后,使得在高维空间可分。

    但是,情况并不总是如此。例如下面的图像:

     

    左边直线代表最佳间隔分类器,很好地分开了数据。但是添加一个如右图所示的圆点后,使得决策边界发生摆动,从而大大减小了分类器的间隔。

    为了使得 $SVM$ 非线性可分,调整优化问题(正则化)如下:

     回忆之前我们规定(函数)间隔为 $1$,就是说所有样本的最小间隔是 $1$,但是这个优化问题允许样本的最小间隔小于 $1$,如果某个样本的函数间隔小于1,即 $1-xi_{i}$, 就对目标函数加一个惩罚项 $Cxi_{i}$.

    写出该问题的拉格朗日算子:

     其中 $alpha_{i}$ 和 $r_{i}$ 均大于等于 $0$.

    得到其对偶问题:

     对比以前的对偶问题,可以发现,只有  $0leqalpha_{i}$  变成了 $0leqalpha_{i}leq C$,  以前计算 $b^{*}$ 的等式就无效了。

    $KKT$ 对偶互补条件如下:

    这对后面验证 $SMO$ 算法是否收敛很有用。

    现在,问题全部归结到找出一个算法来解决这个对偶问题,这就是下一部分要讨论的内容.

    9.SMO(sequential minimal optimization)算法 返回目录

    首先讨论坐标上升算法(coordinate ascent algorithm).

    试着解决一个无约束优化问题:

     现在不要将函数 $W$ 与前面 $SVM$ 的讨论联系起来。

    目前为止已经介绍了两种算法(可以查阅我以前的博客):梯度下降和牛顿法。下面这个算法叫做坐标上升:

    最内层循环的意思是除了 $alpha_{i}$ 之外,其他参数 $alpha_{j}(j eq i)$ 都是固定的,即 $W$ 只是关于 $alpha_{i}$ 的函数,只有一个参数的函数优化很简单,对该参数求导,令导数为 $0$,解出即可.

    下面一张图展示了坐标上升的执行过程:

     

    图中椭圆是二次函数的等高线,初始位置为 $(2, -2)$,每一步更新步伐都与某个坐标轴平行,因为每次只优化一个变量而固定了其他变量.

    好了,下面正式开始讨论 $SMO$ 算法。

    上一部分我们说为了使得 $SVM$ 线性可分,要优化的对偶问题是:

     由上面最后一个等式约束可得:

     

    然后等式两边同时乘以 $y^{(1)}$, 因为 $y^{(1)}in{1,-1}$, 所以 $(y^{(1)})^{2}=1$, 于是可以得到:

    因此,$alpha_{1}$ 的值是由其他 $alpha_{i}(i eq1)$ 决定的,所以如果如上面所说的坐标上升那样,固定其他 $alpha_{i}(i eq1)$,去更新 $alpha_{1}$ ,会发现 $alpha_{1}$ 根本不会发生变化,所以对每个 $alpha_{i}$ 的更新都存在在这样的问题,所以每次只更新一个参数的方法行不通,即每次至少需要更新两个参数,这正是 $SMO$ 算法的动机:

    重复操作直至收敛{

      1. 选择某对参数 $alpha_{i}$ 和 $alpha_{j}$ 进行更新(用启发式的方式选择出这两个参数, 就是这两个参数使得当前的目标函数值能向全局最大值迈出最大的一步)

      2.  不断重复优化 $W(alpha)$, 此时把 $W(alpha)$ 看做是关于 $alpha_{i}$ 和 $alpha_{j}$ 的函数(这两个参数就是第一步选择出来的),固定其他参数(即固  定 $alpha_{k}(k eq i,j)$)

    }

    为了检测算法是否收敛,我们需要检测上面提到的 $KKT$ 条件:

     看一看在一定的可接受范围内,这些条件是否满足.

    下面具体讨论如何成对更新参数:

    为了方便再次将优化问题重写在这里:

     假如我们现在选出 $alpha_{1}$ 和 $alpha_{2}$ 作为需要更新的参数,那么就要固定 $alpha_{3},$..., $alpha_{m}$, 由等式约束可以得到:

    很显然等式右边是个常量(因为固定了 $alpha_{3},$..., $alpha_{m}$),用 $zeta$ 表示右边的常量:

    于是画出关于 $alpha_{1}$ 和 $alpha_{2}$ 的约束:

    由约束条件可知,$alpha_{1}$ 和 $alpha_{2}$ 必然位于 $left[0,C ight] imesleft[0,C ight]$ 多限制的方框内,且必须位于直线 $alpha_{1}y^{(1)}+alpha_{2}y^{(2)}=zeta$ 上. 由图可知,$Lleqalpha_{2}leq H$, 在此例中 $L=0$.

    由 $alpha_{1}y^{(1)}+alpha_{2}y^{(2)}=zeta$ 可以得到:$alpha_{1}=(zeta-alpha_{2}y^{(2)})y^{(1)}$,于是就有:

    注意把 $alpha_{3},$..., $alpha_{m}$ 看作常量, 那么这个函数就变成了关于 $alpha_{2}$ 的二次函数. 假如 $alpha_{2}$ 没有上图所画的约束,我们只需对函数求导,令导数为 $0$ 就会得到需要的 $alpha_{2}$ 的最优值,用 $alpha_{2}^{new,unclipped}$ 来表示这个最优值, 当然这个值 $alpha_{2}^{new,unclipped}$ 有可能恰好就满足了上述约束,关键是不满足约束的时候,就需要对这个值进行调整,使其满足上图所示约束:

     调整后的值 $alpha_{2}^{new}$ 就是满足约束的更新后的 $alpha_{2}$ 的值,再由 $alpha_{1}=(zeta-alpha_{2}y^{(2)})y^{(1)}$ 就可以出 $alpha_{1}^{new}$.

  • 相关阅读:
    HTTP协议
    JavaScript学习(一)
    Cookie&Session
    注解初学
    反射初学
    XML
    Web概念
    Response对象
    Servlet
    LeetCode Notes_#617 Merge Two Binary Trees
  • 原文地址:https://www.cnblogs.com/90zeng/p/SVM.html
Copyright © 2011-2022 走看看