支持向量机与核机器

介绍
第一部分 参数方法——类密度模型参数估计
第二部分 监督学习——分类(基于似然的方法)
第三部分 监督学习——分类(基于判别式的方法)(参数方法——判别式参数估计)
第四部分 监督学习——回归
第五部分 监督学习——关联规则
第六部分 维度规约(特征的提取和组合)
第七部分 半参数方法
第八部分 非监督学习——聚类
第九部分 非参数方法——密度估计
第十部分 非参数方法——决策树实现的判别式
第十一部分 多层感知器——非参数估计器
第十二部分 局部模型
第十三部分 支持向量机与核机器
第十四部分 隐马尔科夫模型
第十五部分 参数的贝叶斯估计
第十六部分 集成学习——组合多学习器
第十七部分 增强学习
第十八部分 机器学习实验
第十九部分 特征工程与数据预处理

本部分介绍支持向量机(SVM),是一种不同的分类和回归方法(也就是一种不同的归纳偏倚)。该模型最大化实例的分离性,或称最大化边缘的方法。将模型表示为训练实例的一个子集的影响之和。这些影响用面向应用的相似核给出。
SVM是基于判别式的方法。通过训练实例来估计边界。边界的线性模型用训练实例的一个子集表示,这个子集称作支持向量。对于分类,这个子集是靠近边界的实例。输出用支持向量的影响之和表示,用核函数给出。
核函数是数据实例之间相似度的面向应用的度量。根据相似性定义新的空间,如果一个核函数在其对应的新空间中有更好的分离性,则它是好的。

支持向量机

  1. 首先讨论最简单的二类分类问题,并假设线性可分

对于二类分类,使用-1和+1标记这两个类,样本为。希望找到和,使得对于,;而对于,。
或可改写为。

这不同于线性判别式中常见的,这里不仅希望实例在超平面正确的一侧,还希望它们离超平面有一定距离。超平面到它两侧最近实例的距离称作边缘。为了更好地泛化,希望最大化边缘

实例到判别式的距离为(见《监督学习——分类(基于判别式的方法)》中的推导),而我们希望这个距离大于某个值,。
我们希望最大化,为了得到唯一解,我们固定。这样,为了最大化边缘,则最小化。也就是

这是一个标准的二次优化问题,复杂度依赖于的维度d。
由于很多问题都不是线性可分的,我们会使用非线性基函数将问题映射到新空间,变成新空间中的线性问题。但新空间的维度往往比原始空间高很多。所以希望将问题转换成复杂度依赖于训练实例数N而不依赖于d的形式。

  • 求解约束问题
    问题(a)的函数和约束条件都是凸函数,所以可以解其对偶问题来得到原问题的最优解,并且解满足KKT条件。
    首先使用拉格朗日乘子,得到广义拉格朗日方程:
    \begin{align} L(\boldsymbol{\omega},\omega_0,\alpha)=&\frac12\|\boldsymbol{\omega}\|^2-\sum^N_{t=1}\alpha^t[r^t(\boldsymbol{\omega}^T\mathbf{x}^t+\omega_0)-1]\\ =&\frac12\|\boldsymbol{\omega}\|^2-\sum^N_{t=1}\alpha^tr^t(\boldsymbol{\omega}^T\mathbf{x}^t+\omega_0)+\sum^N_{t=1}\alpha^t \end{align}
    原始问题等价于,其对偶问题为。
    先求,有

    将结果带入拉格朗日方程中
    \begin{align} L(\boldsymbol{\omega},\omega_0,\alpha)=&\frac12\|\boldsymbol{\omega}\|^2-\sum^N_{t=1}\alpha^tr^t(\boldsymbol{\omega}^T\mathbf{x}^t+\omega_0)+\sum^N_{t=1}\alpha^t\\ =&\frac12(\boldsymbol{\omega}^T\boldsymbol{\omega})-\boldsymbol{\omega}^T\sum^N_{t=1}\alpha^tr^t\mathbf{x}^t-\omega_0\sum^N_{t=1}\alpha^tr^t+\sum^N_{t=1}\alpha^t\\ =&-\frac12(\boldsymbol{\omega}^T\boldsymbol{\omega})+\sum^N_{t=1}\alpha^t \\ =&-\frac12\sum_t\sum_s\alpha^t\alpha^sr^tr^s(\mathbf{x}^t)^T\mathbf{x}^s+\sum^N_{t=1}\alpha^t \end{align}
    进而只需对下面的对偶问题求解

可见对偶问题的复杂度依赖于训练集的大小N,而不依赖于输入维度d。记,,为问题的解。根据KKT条件有。
又由,可知对于的实例,有,或。也就是说一定在边缘的边界上,也就是支持向量
由上面求解最小化时所得的可以看出,只有那些,处于边缘上的实例的集合才决定了。并得以求得。

作为基于判别式的算法,SVM值关注那些靠近边界的实例。丢弃落在边界之外的实例,不会影响结果。所以在使用SVM之前,可以使用较简单的分类器,过滤掉远离边界的大部分实例,从而降低SVM阶段的复杂度。

  1. 对于数据不是线性可分时

可以考虑寻找错分类最少的超平面。定义松弛变量,表示实例到边缘的误差。我们要求

有两种情况的误差,一种是实例被正确分类,但不像线性可分情况下所讨论的在边缘外,而是在边缘内,这时令。另一种情况,是实例被误分类,。而当时,则实例仍在边缘上。
对每个,记为误差,并作为惩罚项。则目标函数变为
\begin{array}{} \min_{\boldsymbol{\omega},\omega_0,\xi} & \frac12\|\boldsymbol{\omega}\|^2 +C\sum^N_{t=1}\xi^t\\ s.t. & r^t(\boldsymbol{\omega}^T\mathbf{x}^t+\omega_0)\geq 1-\xi^t\\ & \xi^t\geq0,\ \forall \ t \tag{b} \end{array}
C称作惩罚因子

这样,广义拉格朗日方程变成

求解对偶问题,先对最小化方程,对参数求导



带入拉格朗日方程中,得。
再对求极大,也就是对偶问题
\begin{array}{} \max_{\alpha} & -\frac12\sum_s\sum_t\alpha^s\alpha^tr^sr^t(\mathbf{x}^t)^T\mathbf{x}^s+\sum_t\alpha^t\\ s.t. & \sum_t\alpha^tr^t=0\\ & C-\alpha^t-\mu^t=0\\ & \alpha^t\geq0,\ \mu^t\geq0,\ \ \forall \ t \end{array}

后三条约束条件等价于
同样的,的实例为支持向量,它们定义。这当中,的实例在边缘上,的实例在边缘内或被误分类。

C的取值与任意正则化模式一样,需要交叉检验微调,在边缘最大化和误差最小化之间权衡。如果C太大,则对未正确分类的点惩罚较大,边缘更宽而纳入许多支持变量,且过拟合;如果太小,则可能过于简单而欠拟合。

  1. 当存在多个类

情况同基于判别式的分类方法中所提及的一样。
考虑每个类可与其他类分开的情况,学习K个支持向量机。
或对于复杂情况,构建个逐对分类器,

换个角度,在SVM中如果实例在错误一侧或者离边界距离小于1在边缘内,可视为错误。这样,用反应实例到超平面的距离,为期望的输出。
SVM相当于最小化转折点损失(hinge loss):

为正则项。


非线性边界的情况

如果类边界是非线性的,则使用合适的基函数将非线性问题映射到新空间,在新空间使用线性模型。这种方法在介绍线性判别式和多层感知器的章节中都有运用。

核技巧

设有基函数,其中。将 d 维的空间映射到 k 维的空间。新空间中的线性判别式为

这里判别式的常数项不单独使用,而是假定。这样问题和线性可分的情况一样:

约束条件变为
拉格朗日方程是

这时作为新空间上的线性可分问题,由前文可知对偶问题为
\begin{array}{} \max_{\alpha} & -\frac12\sum_s\sum_t\alpha^s\alpha^tr^sr^t\Phi(\mathbf{x}^t)^T\Phi(\mathbf{x}^s)+\sum_t\alpha^t\\ s.t. & \sum_t\alpha^tr^t=0\\ & C-\alpha^t-\mu^t=0\\ & \alpha^t\geq0,\ \mu^t\geq0,\ \ \forall \ t \end{array}
判别式参数
这其中称为核函数,它是原向量经基函数映射到新空间后的内积。在计算时,直接计算核函数要比计算基函数映射后的向量内积简单得多。所以很多算法都被核化,使用原空间中实例之间的核函数,取代基函数的内积,这正是使用核机器的原因。

核值矩阵记做,其中,是Garm矩阵。对称半正定。

一些常用的核函数如下

  • q次多项式
  • 径向基函数

    推广欧氏距离,可使用马氏距离的核

    或更一般地,对于某个距离函数定义核函数
  • S型核
    tanh函数、Sigmoid函数
  • 面向应用的核
    除了使用常用的核函数,还可以定义面向应用的核。核通常被看做相似性的度量,从应用的角度看,当x 和y 更相似时,取更大的值。这意味着,关于应用的先验知识可以通过定义合适的核提供给学习系统。

除了单一核,还可以通过使用多核。如一些简单的核可以构造新的核。如任意两个合法的核,,c是常数,则
、、
也是合法的核。
一般地对多个和求加权和,可由数据学习权重。这称为多核学习

此外,还可以对x的不同维度子集,分别使用不同的核。将x表示为,分别对两部分使用不同的核,每个核分别度量子集领域的相似度,
\begin{align} K_A(\mathbf{x}_A,\mathbf{y}_A)+K_B(\mathbf{x}_B,\mathbf{y}_B)=&\Phi_A(\mathbf{x}_A)^T\Phi_A(\mathbf{y}_A)+\Phi_B(\mathbf{x}_B)^T\Phi_B(\mathbf{y}_B)\\ =&\Phi(\mathbf{x})^T\Phi(\mathbf{y}) \\ =&K(\mathbf{x},\mathbf{y}) \end{align}
这也是一种局部思想。一般地,固定一个向量输入为,使用混合模型表示有

用于回归的核机器

先从线性回归问题开始,后面在推广核函数的运用。
考虑线性模型,对于一般的回归方法,使用拟合输出与实际输出差的平方作为误差:

在支持向量机中,使用敏感损失函数:

这意味着对于拟合与实际差小于的误差是被接受的,而超出的误差才保留线性影响,而不是平方影响。
SVM就是用超平面来拟合未知函数,对应于边缘。类似于软边缘超平面,引入松弛变量来处理超出范围外的误差。任务可描述为


拉格朗日方程是
\begin{align} L_p=&\frac12\|\boldsymbol{\omega}\|^2+C\sum_t(\xi^t_++\xi^t_-)-\sum_t\alpha^t_+[\epsilon+\xi^t_+-r^t+(\boldsymbol{\omega}^T\mathbf{x}+\omega_0)]\\ &-\sum_t\alpha^t_-[\epsilon+\xi^t_-+r^t-(\boldsymbol{\omega}^T\mathbf{x}+\omega_0)]-\sum^t(\mu^t_+\xi^t_++\mu^t_-\xi^t_-)\\ \end{align}
求解对偶问题,首先对最小化,




再对最大化。
通过训练数据集,求出问题的解。其中落在内的实例,都有;支持向量满足或者;而在外的实例,或。
所得到的的拟合直线为

将其中的向量内积用核函数替代,则可以得到非线性拟合。使用多项式核将类似于你和一个多项式函数,

使用非线性基函数将问题映射到新空间的思想应用比较普遍。而支持向量机在使用这种方法的特别之处在于其不需要现实地计算基函数,而是把这个过程集成到学习过程中,参数直接由训练数据来定义。
核函数的使用意味着不再只是把实例定义成属性的向量,而是依赖实例之间的相似性来定义它们。

你可能感兴趣的:(支持向量机与核机器)