支持向量机

在机器学习中，-{zh-cn:支持向量机; zh-tw:支援向量机; zh-hk:支援向量机;}-
（-{zh-cn:台湾称支援向量机; zh-tw:中国大陆称支持向量机}-，support vector machine，常简称为SVM，又名支援向量网络）是在分类与回归分析中分析数据的监督式学习模型与相关的学习算法。给定一组训练实例，每个训练实例被标记为属于两个类别中的一个或另一个，SVM训练算法建立一个将新的实例分配给两个类别之一的模型，使其成为非概率线性分类器。SVM模型是将实例表示为空间中的点，这样映射就使得单独类别的实例被尽可能宽的明显的间隔分开。然后，将新的实例映射到同一空间，并基于它们落在间隔的哪一侧来预测所属类别。
除了进行线性分类之外，SVM还可以使用所谓的有效地进行非线性分类，将其输入隐式映射到高维特征空间中。
当数据未被标记时，不能进行监督式学习，需要用非监督式学习，它会尝试找出数据到簇的自然聚类，并将新数据映射到这些已形成的簇。将支援向量机改进的聚类算法被称为支援向量聚类，当数据未被标记或者仅一些数据被标记时，支援向量聚类经常在工业应用中用作分类步骤的预处理。
动机.
将数据进行分类是机器学习中的一项常见任务。
假设某些给定的数据点各自属于两个类之一，而目标是确定新数据点将在哪个类中。对于支持向量机来说，数据点被视为 formula_1 维向量，而我们想知道是否可以用 formula_2 维超平面来分开这些点。这就是所谓的线性分类器。可能有许多超平面可以把数据分类。最佳超平面的一个合理选择是以最大间隔把两个类分开的超平面。因此，我们要选择能够让到每边最近的数据点的距离最大化的超平面。如果存在这样的超平面，则称为最大间隔超平面，而其定义的线性分类器被称为最大，或者叫做最佳稳定性感知器。"
定义.
更正式地来说，支持向量机在高维或无限维空间中构造超平面或超平面集合，其可以用于分类、回归或其他任务。直观来说，分类边界距离最近的训练资料点越远越好，因为这样可以缩小分类器的泛化误差。
尽管原始问题可能是在有限维空间中陈述的，但用于区分的集合在该空间中往往。为此，有人提出将原有限维空间映射到维数高得多的空间中，在该空间中进行分离可能会更容易。为了保持计算负荷合理，人们选择适合该问题的 formula_3 来定义SVM方案使用的映射，以确保用原始空间中的变量可以很容易计算点积。 高维空间中的超平面定义为与该空间中的某向量的点积是常数的点的集合。定义超平面的向量可以选择在数据集中出现的特征向量 formula_4 的图像的参数 formula_5 的线性组合。通过选择超平面，被映射到超平面上的特征空间中的点集 formula_6 由以下关系定义：formula_7 注意，如果随着 formula_8 逐渐远离 formula_6，formula_3 变小，则求和中的每一项都是在衡量测试点 formula_6 与对应的数据基点 formula_4 的接近程度。这样，上述内核的总和可以用于衡量每个测试点相对于待分离的集合中的数据点的相对接近度。
历史.
原始SVM算法是由苏联数学家弗拉基米尔·瓦普尼克和亚历克塞·泽范兰杰斯于1963年发明的。1992年，伯恩哈德·E·博瑟（Bernhard E. Boser）、伊莎贝尔·M·盖昂（Isabelle M. Guyon）和瓦普尼克提出了一种通过将核技巧应用于最大间隔超平面来创建非线性分类器的方法。 当前标准的前身（软间隔）由科琳娜·科特斯和瓦普尼克于1993年提出，并于1995年发表。
线性SVM.
我们考虑以下形式的 formula_13 点测试集：
其中 formula_15 是 1 或者 −1，表明点 formula_16 所属的类。formula_17 中每个都是一个 formula_1 维实向量。我们要求将 formula_19 的点集 formula_20 与 formula_21 的点集分开的 “最大间隔超平面”，使得超平面与最近的点 formula_20 之间的距离最大化。
任何超平面都可以写作满足下面方程的点集 formula_23
其中 formula_25（不必是归一化的）是该法向量。参数 formula_26 决定从原点沿法向量 formula_25 到超平面的偏移量。
硬间隔.
如果这些训练数据是线性可分的，可以选择分离两类数据的两个平行超平面，使得它们之间的距离尽可能大。在这两个超平面范围内的区域称为“间隔”，最大间隔超平面是位于它们正中间的超平面。这些超平面可以由方程：
或是
来表示。通过几何不难得到这两个超平面之间的距离是 formula_30，因此要使两平面间的距离最大，我们需要最小化 formula_31。同时为了使得样本数据点都在超平面的间隔区以外，我们需要保证对于所有的 formula_32 满足其中的一个条件：
或是
这些约束表明每个数据点都必须位于间隔的正确一侧。
这两个式子可以写作：
可以用这个式子一起来得到优化问题：“在 formula_38 条件下，最小化 formula_31，对于 formula_40"这个问题的解 formula_41 与 formula_42 决定了我们的分类器 formula_43。
此几何描述的一个显而易见却重要的结果是，最大间隔超平面完全是由最靠近它的那些 formula_44 确定的。这些 formula_44 叫做支持向量。
软间隔.
为了将SVM扩展到数据线性不可分的情况，我们引入铰链损失函数，formula_46当约束条件 (1) 满足时（也就是如果 formula_20 位于边距的正确一侧）此函数为零。对于间隔的错误一侧的数据，该函数的值与距间隔的距离成正比。
然后我们希望最小化formula_48其中参数 formula_49 用来权衡增加间隔大小与确保 formula_20 位于间隔的正确一侧之间的关系。因此，对于足够小的 formula_49 值，如果输入数据是可以线性分类的，则软间隔SVM与硬间隔SVM将表现相同，但即使不可线性分类，仍能学习出可行的分类规则。
非线性分类.
弗拉基米尔·瓦普尼克在1963年提出的原始最大间隔超平面算法构造了一个线性分类器。而1992年，伯恩哈德·E·博瑟（Bernhard E. Boser）、伊莎贝尔·M·盖昂（Isabelle M. Guyon）和瓦普尼克提出了一种通过将（最初由Aizerman et al.提出）应用于最大边界超平面来创建非线性分类器的方法。 所得到的算法形式上类似，除了把点积换成了非线性核函数。这就允许算法在变换后的特征空间中拟合最大间隔超平面。该变换可以是非线性的，而变换空间是高维的；虽然分类器是变换后的特征空间中的超平面，但它在原始输入空间中可以是非线性的。
值得注意的是，更高维的特征空间增加了支持向量机的泛化误差，但给定足够多的样本，算法仍能表现良好。
常见的核函数包括：
由等式 formula_60，核函数与变换 formula_61 有关。变换空间中也有 w 值，formula_62。与 w 的点积也要用核技巧来计算，即 formula_63。
计算SVM分类器.
计算（软间隔）SVM分类器等同于使下面表达式最小化formula_64如上所述，由于我们关注的是软间隔分类器，formula_49 选择足够小的值就能得到线性可分类输入数据的硬间隔分类器。下面会详细介绍将(2)简化为二次规划问题的经典方法。之后会讨论一些最近才出现的方法，如次梯度下降法和坐标下降法。
原型.
最小化(2)可以用下面的方式改写为目标函数可微的约束优化问题。
对所有 formula_66 我们引入变量 formula_67。注意到 formula_68 是满足 formula_69 的最小非负数。
因此，我们可以将优化问题叙述如下formula_70formula_71 这就叫做"原型"问题。
对偶型.
通过求解上述问题的，得到简化的问题formula_72formula_73这就叫做"对偶"问题。由于对偶最小化问题是受线性约束的 formula_74 的二次函数，所以它可以通过二次规划算法高效地解出。
这里，变量 formula_74 定义为满足formula_76. 此外，当 formula_77 恰好在间隔的正确一侧时 formula_78，且当 formula_77 位于间隔的边界时 formula_80。因此，formula_81 可以写为支持向量的线性组合。
可以通过在间隔的边界上找到一个 formula_77 并求解formula_83
得到偏移量 formula_84。（注意由于 formula_85 因而 formula_86。）
核技巧.
假设我们要学习与变换后数据点 formula_87 的线性分类规则对应的非线性分类规则。此外，我们有一个满足 formula_88 的核函数 formula_89。
我们知道变换空间中的分类向量 formula_90 满足formula_91其中 formula_92 可以通过求解优化问题formula_93formula_73得到。与前面一样，可以使用二次规划来求解系数 formula_74。同样，我们可以找到让 formula_80 的索引 formula_97，使得 formula_87 位于变换空间中间隔的边界上，然后求解formula_99最后，可以通过计算下式来分类新点 formula_100
现代方法.
用于找到SVM分类器的最近的算法包括次梯度下降和坐标下降。当处理大的稀疏数据集时，这两种技术已经被证明有着显著的优点——当存在许多训练实例时次梯度法是特别有效的，并且当特征空间的维度高时，坐标下降特别有效。
次梯度下降.
SVM的次梯度下降算法直接用表达式formula_101注意 formula_102 是 formula_41 与 formula_42 的凸函数。因此，可以采用传统的梯度下降（或）方法，其中不是在函数梯度的方向上前进，而是在从函数的次梯度中选出的向量的方向上前进。该方法的优点在于，对于某些实现，迭代次数不随着数据点的数量 formula_13 而增加或减少。
坐标下降.
SVM的坐标下降算法基于对偶问题
formula_72formula_73对所有 formula_108 进行迭代，使系数 formula_74 的方向与 formula_110 一致。然后，将所得的系数向量 formula_111 投影到满足给定约束的最接近的系数向量。（通常使用欧氏距离。）然后重复该过程，直到获得接近最佳的系数向量。所得的算法在实践中运行非常快，尽管已经证明的性能保证很少。
性质.
SVM属于广义线性分类器的一族，并且可以解释为感知器的延伸。它们也可以被认为是吉洪诺夫正则化的特例。它们有一个特别的性质，就是可以同时最小化经验误差和最大化几何边缘区; 因此它们也被称为最大间隔分类器。
Meyer、Leisch和Hornik对SVM与其他分类器进行了比较。
参数选择.
SVM的有效性取决于核函数、核参数和软间隔参数 "C" 的选择。
通常会选只有一个参数 "formula_112" 的高斯核。"C" 和 formula_112 的最佳组合通常通过在 "C" 和 "formula_112" 为指数增长序列下来选取，例如 formula_115; formula_116。通常情况下，使用交叉验证来检查参数选择的每一个组合，并选择具有最佳交叉验证精度的参数。或者，最近在贝叶斯优化中的工作可以用于选择C和γ，通常需要评估比网格搜索少得多的参数组合。或者，的最近进展可以用于选择 "C" 和 "formula_112"，通常需要计算的参数组合比网格搜索少得多。然后，使用所选择的参数在整个训练集上训练用于测试和分类新数据的最终模型。
问题.
SVM的潜在缺点包括以下方面：
实现.
最大间隔超平面的参数是通过求解优化得到的。有几种专门的算法可用于快速解决由SVM产生的QP问题，它们主要依靠启发式算法将问题分解成更小、更易于处理的子问题。
另一种方法是使用内点法，其使用类似牛顿法的迭代找到卡罗需－库恩－塔克条件下原型和对偶型的解。
这种方法不是去解决一系列分解问题，而是直接完全解决该问题。为了避免求解核矩阵很大的线性系统，在核技巧中经常使用矩阵的低秩近似。
另一个常见的方法是普莱特的序列最小优化算法（SMO），它把问题分成了若干个可以解析求解的二维子问题，这样就可以避免使用数值优化算法和矩阵存储。
线性支持向量机的特殊情况可以通过用于优化其类似问题逻辑斯谛回归的同类算法更高效求解；这类算法包括次梯度下降法（如PEGASOS）和坐标下降法（如LIBLINEAR）。LIBLINEAR有一些引人注目的训练时间上的特性。每次收敛迭代花费在读取训练数据上的时间是线性的，而且这些迭代还具有特性，使得算法非常快。
一般的核SVM也可以用次梯度下降法（P-packSVM）更快求解，在允许并行化时求解速度尤其快。
许多机器学习工具包都可以使用核SVM，有、MATLAB、SAS、SVMlight、kernlab、scikit-learn、、Weka、Shark、JKernelMachines、OpenCV等。