支持向量机(support vector machine, SVM):是监督学习中最有影响力的方法之一。类似于逻辑回归,这个模型也是基于线性函数wTx+b的。不同于逻辑回归的是,支持向量机不输出概率,只输出类别。当wTx+b为正时,支持向量机预测属于正类。类似地,当wTx+b为负时,支持向量机预测属于负类。
支持向量机的一个重要创新是核技巧(kernel trick)。核技巧观察到许多机器学习算法都可以写成样本间点积的形式。例如,支持向量机中的线性函数可以重写为:
其中,x(i)是训练样本,α是系数向量。学习算法重写为这种形式允许我们将x替换为特征函数Ø(x)的输出,点积替换为被称为核函数(kernel function)的函数k(x,x(i))= Ø(x)•Ø(x(i))。运算符•表示类似于Ø(x)TØ(x(i))的点积。对于某些特征空间,我们可能不会书面地使用向量内积。在某些无限维空间中,我们需要使用其他类型的内积,如基于积分而非加和的内积。
使用核估计替换点积之后,我们可以使用如下函数进行预测:
这个函数关于x是非线性的,关于Ø(x)是线性的。α和f(x)之间的关系也是线性的。核函数完全等价于用Ø(x)预处理所有的输入,然后在新的转换空间学习线性模型。
核技巧十分强大有两个原因:首先,它使我们能够使用保证有效收敛的凸优化技术来学习非线性模型(关于x的函数)。这是可能的,因为我们可以认为Ø是固定的,仅优化α,即优化算法可以将决策函数视为不同空间中的线性函数。其二,核函数k的实现方法通常比直接构建Ø(x)再算点积高效很多。
在某些情况下,Ø(x)甚至可以是无限维的,对于普通的显示方法而言,这将是无限的计算代价。在很多情况下,即使Ø(x)是难算的,k(x,x’)却会是一个关于x非线性的、易算的函数。
支持向量机不是唯一可以使用核技巧来增强的算法。许多其他的线性模型也可以通过这种方式来增强。使用核技巧的算法类别被称为核机器(kernel machine)或核方法(kernel method)。
核机器的一个主要缺点是计算决策函数的成本关于训练样本的数目是线性的。因为第i个样本贡献αik(x,x(i))到决策函数。支持向量机能够通过学习主要包含零的向量α,以缓和这个缺点。那么判断新样本的类别仅需要计算非零αi对应的训练样本的核函数。这些训练样本被称为支持向量(support vector)。
当数据集很大时,核机器的计算量也会很大。
在机器学习中,支持向量机(support vector machine,常简称为SVM,又名支持向量网络)是在分类与回归分析中分析数据的监督式学习模型与相关的学习算法。给定一组训练实例,每个训练实例被标记为属于两个类别中的一个或另一个,SVM训练算法创建一个将新的实例分配给两个类别之一的模型,使其成为非概率二元线性分类器。SVM模型是将实例表示为空间中的点,这样映射就使得单独类别的实例被尽可能宽的明显的间隔分开。然后,将新的实例映射到同一空间,并基于它们落在间隔的哪一侧来预测所属类别。
除了进行线性分类之外,SVM还可以使用所谓的核技巧有效地进行非线性分类,将其输入隐式映射到高维特征空间中。
当数据未被标记时,不能进行监督式学习,需要用非监督式学习,它会尝试找出数据到簇的自然聚类,并将新数据映射到这些已形成的簇。将支持向量机改进的聚类算法被称为支持向量聚类,当数据未被标记或者仅一些数据被标记时,支持向量聚类经常在工业应用中用作分类步骤的预处理。
动机:分类数据是机器学习中的一项常见任务。 假设某些给定的数据点各自属于两个类之一,而目标是确定新数据点将在哪个类中。对于支持向量机来说,数据点被视为p维向量,而我们想知道是否可以用(p-1)维超平面来分开这些点。这就是所谓的线性分类器。可能有许多超平面可以把数据分类。最佳超平面的一个合理选择是以最大间隔把两个类分开的超平面。因此,我们要选择能够让到每边最近的数据点的距离最大化的超平面。如果存在这样的超平面,则称为最大间隔超平面,而其定义的线性分类器被称为最大间隔分类器,或者叫做最佳稳定性感知器。
定义:更正式地来说,支持向量机在高维或无限维空间中构造超平面或超平面集合,其可以用于分类、回归或其他任务。直观来说,分类边界距离最近的训练数据点越远越好,因为这样可以缩小分类器的泛化误差。尽管原始问题可能是在有限维空间中陈述的,但用于区分的集合在该空间中往往线性不可分。为此,有人提出将原有限维空间映射到维数高得多的空间中,在该空间中进行分离可能会更容易。为了保持计算负荷合理,人们选择适合该问题的核函数 k(x,y)来定义SVM方案使用的映射,以确保用原始空间中的变量可以很容易计算点积。高维空间中的超平面定义为与该空间中的某向量的点积是常数的点的集合。定义超平面的向量可以选择在数据基中出现的特征向量xi的图像的参数αi的线性组合。通过选择超平面,被映射到超平面上的特征空间中的点集x由以下关系定义:Σiαik(xi,x)=constant。注意,如果随着y逐渐远离x,k(x,y)变小,则求和中的每一项都是在衡量测试点x与对应的数据基点xi的接近程度。这样,上述内核的总和可以用于衡量每个测试点相对于待分离的集合中的数据点的相对接近度。
应用:(1)、用于文本和超文本的分类,在归纳和直推方法中都可以显著减少所需要的有类标的样本数;(2)、用于图像分类。实验结果显示:在经过三到四轮相关反馈之后,比起传统的查询优化方案,支持向量机能够获取明显更高的搜索准确度。这同样也适用于图像分区系统,比如使用Vapnik所建议的使用特权方法的修改版本SVM的那些图像分区系统;(3)、用于手写字体识别;(4)、用于医学中分类蛋白质,超过90%的化合物能够被正确分类。基于支持向量机权重的置换测试已被建议作为一种机制,用于解释的支持向量机模型。支持向量机权重也被用来解释过去的SVM模型。
线性SVM:考虑以下形式的n点测试集:(x’1,y1),…,(x’n,yn),其中yi是1或者-1,表明点x’i所属的类。x’1中每个都是一个p维实向量。我们要求将yi=1的点集x’1与yi=-1的点集分开的”最大间隔超平面”,使得超平面与最近的点x’i之间的距离最大化。任何超平面都可以写作满足下面方程的点集x’:w’•x’-b=0,其中w’(不必是归一化的)是该法向量。参数b/‖w’‖决定从原点沿法向量w’到超平面的偏移量。
硬间隔:如果这些训练数据是线性可分的,可以选择分离两类数据的两个平行超平面,使得它们之间的距离尽可能大。在这两个超平面范围内的区域称为”间隔”,最大间隔超平面是位于它们正中间的超平面。这些超平面可以由方程族:w’•x’-b=1或是w’•x’-b=1来表示。通过几何不难得到这两个超平面之间的距离是2/‖w’‖,因此要使两平面间的距离最大化,我们需要最小化‖w’‖。同时为了使得样本数据点都在超平面的间隔区以外,我们需要保证对于所有的i满足其中的一个条件:w’•x’-b≥1,若yi=1 或是 w’•x’-b≤1, 若yi=-1。这些约束表明每个数据点都必须位于间隔的正确一侧。这两个式子可以写作:yi(w’•x’-b) ≥1, for all 1≤i≤n。可以用这个式子一起来得到优化问题:”在yi(w’•x’-b)≥1条件下,最小化‖w’‖,对于i=1,…,n”。这个问题的解w’与b决定了我们的分类器x’→sgn(w’•x’-b)。此几何描述的一个显而易见却重要的结果是,最大间隔超平面完全是由最靠近它的那些x’i确定的,这些x’i叫做支持向量。
软间隔:为了将SVM扩展到数据线性不可分的情况,我们引入铰链损失函数:max(0,1- yi(w’•x’-b))。当约束条件yi(w’•x’-b)≥1, for all 1≤i≤n满足时(也就是如果x’i位于边距的正确一侧)此函数为零。对于间隔的错误一侧的数据,该函数的值与距间隔的距离成正比。然后我们希望最小化:
其中参数λ用来权衡增加间隔大小与确保x’i位于间隔的正确一侧之间的关系。因此,对于足够小的λ值,如果输入数据是可以线性分类的,则软间隔SVM与硬间隔SVM将表现相同,但即使不可线性分类,仍能学习出可行的分类规则。
用于找到SVM分类器的最近的算法包括次梯度下降和坐标下降。当处理大的稀疏数据集时,这两种技术已经被证明有着显着的优点:当存在许多训练实例时次梯度法是特别有效的,并且当特征空间的维度高时,坐标下降特别有效。
SVM属于广义线性分类器的一族,并且可以解释为感知器的延伸。它们也可以被认为是提克洛夫规范化的特例。它们有一个特别的性质,就是可以同时最小化经验误差和最大化几何边缘区;因此它们也被称为最大间隔分类器。
参数选择:SVM的有效性取决于核函数、核参数和软间隔参数C的选择。通常会选只有一个参数γ的高斯核。C和γ的最佳组合通常通过在 C 和γ为指数增长序列下网格搜索来选取。通常情况下,使用交叉验证来检查参数选择的每一个组合,并选择具有最佳交叉验证精度的参数。或者,最近在贝叶斯优化中的工作可以用于选择C和γ,通常需要评估比网格搜索少得多的参数组合。或者,贝叶斯优化的最近进展可以用于选择C和γ,通常需要计算的参数组合比网格搜索少得多。然后,使用所选择的参数在整个训练集上训练用于测试和分类新数据的最终模型。
SVM的潜在缺点包括以下方面:需要对输入数据进行完全标记、未校准类成员概率、SVM仅直接适用于两类任务,因此,必须应用将多类任务减少到几个二元问题的算法;解出的模型的参数很难理解。
多元分类支持向量机:SVM算法最初是为二值分类问题设计的,实现多分类的主要方法是将一个多分类问题转化为多个二分类问题。常见方法包括”一对多法”和”一对一法”,一对多法是将某个类别的样本归为一类,其他剩余的样本归为另一类,这样k个类别的样本就构造出了k个二分类SVM;一对一法则是在任意两类样本之间设计一个SVM。
实现:最大间隔超平面的参数是通过求解优化得到的。有几种专门的算法可用于快速解决由SVM产生的QP(Quadratic programming,二次规划)问题,它们主要依靠启发式算法将问题分解成更小、更易于处理的子问题。另一种方法是使用内点法,其使用类似牛顿法的迭代找到卡罗需-库恩-塔克条件下原型和对偶型的解。这种方法不是去解决一系列分解问题,而是直接完全解决该问题。为了避免求解核矩阵很大的线性系统,在核技巧中经常使用矩阵的低秩近似。另一个常见的方法是普莱特的序列最小优化算法(SMO),它把问题分成了若干个可以解析求解的二维子问题,这样就可以避免使用数值优化算法和矩阵存储。
线性支持向量机的特殊情况可以通过用于优化其类似问题逻辑回归的同类算法更高效求解;这类算法包括次梯度下降法和坐标下降法。
一般的核SVM也可以用次梯度下降法更快求解,在允许并行化时求解速度尤其快。
支持向量机(SVM)是一项功能强大的分类和回归技术,可最大化模型的预测准确度,而不会过度拟合训练数据。SVM特别适用于分析预测变量字段非常多的数据。
SVM的工作原理是将数据映射到高维特征空间,这样即使数据不是线性可分,也可以对该数据点进行分类。找到类别之间的分隔符,然后以将分隔符绘制成超平面的方式变换数据。之后,可用新数据的特征预测新记录所属的组。除了类别之间的分隔线,分类SVM模型还会查找用于定义两个类别之间的空间的边际线。位于边距上的数据点称为支持向量。两个类别之间的边距越宽,模型在预测新记录所属的类别方面性能越佳。为了增加边界的宽度,可以接受少量的误分类。
支持向量机是基于统计学习理论和结构风险最小化(Structual Risk Minimization, SRM)原则发展出的一种新的通用学习方法。支持向量机使用间隔最大化的学习策略,通过寻找定义的特征空间中的最大的分类间隔,实现对不同类别的准确分类。对于非线性情况,可以通过核函数映射的方式将其转化为线性分类。相比其它传统学习算法,SVM算法能够有效避免局部最优解和维数灾难的问题。
SVM是在统计学习理论基础上提出的机器学习方法,它建立在VC维理论(Vapnik-Chervonenkis Dimension,在统计学习理论中,VC维反映了函数集的实际学习能力,VC维越大,则学习机器越复杂。另外,VC维还影响学习机的泛化能力)和结构风险最小化原理基础上,且根据有效样本信息寻求在模型复杂度与学习能力之间的最佳折中,达到最小的实际风险。通过引入核函数,其能很好的解决线性不可分的问题,从而对不同数据集都有很好的效果。
若超平面可以直接将训练集中的样本分开,则这种分类问题为线性可分问题。在分类器中,样本分别位于超平面的两边,不会出现混叠,这样得到的SVM分类器被称之为硬间隔(hardmargin)线性支持向量机。当面对非线性的情况时,支持向量机处理的方法是选择核函数,通过核函数将其训练样本映射到高维空间中,从而在高维空间中求得最佳的超平面。使用核函数的好处是,在获得最优超平面的同时,其计算量并没有比原来复杂很多。
非线性分类中常见的核函数包括:齐次多项式、非齐次多项式、双曲正切、高斯核(Gaussiankernel)、线性核、径向基函数(radialbasis function, RBF)核和、Sigmoid核。
SVM算法在对非线性、小样本、高维数的问题解决上有较大的优势。
核函数的机理就是将原始非线性的样本通过非线性映射映射至高维特征空间,使得在新的空间里样本线性可分,进而可用线性样本的分类理论解决此类问题。
OpenCV和libsvm库中都提供了支持SVM的相关接口。