[_数据挖掘_] SVM学习

SVM也许是最近开始被人们关注的一种较有前途的分类方法。准确地说是一种算法,一般有以下两个步骤:

1)将数据映射到较高的维;

2)在新的空间搜索线性最佳分离超平面。

对于在原有空间就线性可分的数据不需要进行非线性映射,否则就需要映射到较高的维之后进行分类。因为SVM可以对复杂的非线性决策边界的建模能力是高度准确的,并且和其他的模型相比,不太容易会出现过分拟合的情况,所以被应用到许多的领域,比如语音识别或者手写识别。下面分两种情况来讨论,首先看一般情况,线性可分时的处理。

一. 数据线性可分时的情况,最简单的情况,分成两类

首先有一个问题,什么是线性可分的?我的理解是,对于二维数据(2种属性的数据),如果可以找到一条直线将数据区分开;三维的话,找到一个平面;多维的话能找到一个超曲面将两类数据准确区分出来的话,那么这些数据就是线性可分的。另外一个问题,当我们拿到数据时如何确定这些数据是线性可分的呢?书上并没有讲明白,得过几天去网上看看资料。如果数据已经是线性可分的,那么总可以找到“无限多条”直线将数据区分开,使得某类数据位于上方(右),另外一组位于下方(左)。

那么哪条才是最好的呢?所谓的最好就是对于待分类的数据,该条直线具有最小的分类误差。以现有的训练数据出发,假设现有的训练数据有足够的说服力,也就是说现有的训练元组中就包含了分类的边界信息。那么如果直线L能够对大限度地压缩确切类别数据的空间,那么它的分类误差也就是最小的。所以这里不单单是一条直线的问题,而是一类直线。SVM使用最大边缘超平面(MMH)来描述(使用超平面以适用多维)。MMH位于两个超平面的中心,边缘定义为MMH到边界超平面的距离。这两个超平面完全分离训练元组,位于其上的训练元组我们称之为支持向量。本质上讲支持向量包含了最多的分类信息,也是最难分类的元组。如果我们删除所有的非支持向量,得到的MMH应该是一致的。

数学上,MMH可以表述为:

              W.X+b=0 

W是权重向量,b记做偏琦bias。如果将类别记为1和-1,那么最大边缘就是2/||W||。SVM算法的目的就是要找出W和b。SVM使用了一些特殊的“数学技巧”将它变换为被约束的(凸)二次优化问题。如果数据较少,可以使用任何解被约束的凸二次优化问题的工具包来求解,否则需要专门的SVM算法软件,否则训练时间将是不可接受的。

根据拉格朗日公式,MMH可以改写成决策边界:

             d(X_t) = sum_of_every_Support_Vector(y_i*alpha_i . X_i . X_t) + b0

其中X_t是待分类的数据,X_i是所有的支持向量,y_i是X_i的类标示,alpha_i和b0是算法确定的参数。

二. 数据非线性可分,分成两类

扩展线性方法就可以解决原本线性不可分的情况。分为两步:1)用非线性映射将原输入数据变换到较高维的空间;2)在新的空间搜索线性分离超平面,然后变换到原有空间即可得到原有的非线性的分离超平面。

但是如何选择非线性变换呢?并且到较高维空间后,计算支持向量的点积的代价也很大。所以贴心的数学家们使用了另一种数学技巧(?),进行问题的转换。最终的结果是,我们不需要知道变换是什么,可以用一个核函数K(X_i,X_j)取代变换后X_i,X_j的点积,即(设变换为f):

             K(X_i,X_j) = f(X_i).f(X_j)  对应了d(X_t)公式中的点积,在新的空间

通过对核函数性质的研究,我们得到了几种符合的函数形式,如h次多项式核,高斯径向基函数核,S形核等。

不同的核函数都导致原输入控件不同的非线性分类器。有趣的是,非线性SVM所发现的决策超曲面与其他著名的神经网络分类器所发现的同属一种类型。但是核的选择一般并未导致结果准确率的很大差别。SVM训练总是发现全局解,而不像诸如后项传播等神经网络常常存在局部最小。

上面介绍的都是二元分类,对于多元分类的问题,可以组合SVM,对每一类训练一个二元分类器:属于该类和其他。但是这样计算量应该是非常大的。

当前SVM的主要研究目标是提高训练和检验速度,确定给定数据集的最佳核,为多类问题找出更有效的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值