SVM的提出

一般讲SVM时都是与感知机为基础的,这是因为二者中对数据的模拟都是f(x)=wx+b,很相似。

但是,感知机的缺点在于:一、只能对线性可分的数据集建模,若数据集线性不可分,则算法无法收敛;二、感知机算法的结果与选取的初值有关,即结果不是稳定的,也不能保证是最优的。

SVM其实相当于是对感知机算法的改进,在SVM中,对感知机算法的两个缺点都有相应的解决方法,并得到了较好的实验结果,因此,感知机算法基本只是作为了解和学习SVM(或ANN)的基础存在,实际中很少有直接使用的。

SVM中,如何保证结果最优呢?这在于SVM中引入了“间隔”的概念,这是与感知机的重要区别。不要小看这个区别,在感知机中,评价函数是使用分类错误率来表示的。这是最原始和最基本的想法,但缺点是:分类错误率中,只要是将数据点分类错误,那么,不管这个数据与分类面之间的距离是多是少,是错了一点点还是错了很多,其表示结果都是一样的。这样的表示是很粗糙的,因为,从人的角度来看,把一个离分类面很远的点错分要比把很近的点错分严重的多。因此,在SVM中通过引入了间隔的概念,不再使用分类错误率而是使用分类面与数据点之间的总间隔作为评价函数,这样,将“粗糙”的分类错误率表示变成了“精细”总间隔距离表示,从而保证了在总间隔最小时,得到的分类面是最优的解。

SVM中,可以克服感知机的缺点,对不是线性可分的数据集分类吗?答案是可以的。对于线性可分的数据集,如上个问题描述,通过总错分间隔最大化,我们可以得到硬间隔支持向量机(此时与感知机的区别在与使用了总错分间隔作为评价函数);而对与近似线性可分数据集(即,除了数据集中有个别的噪声点,其他数据点线性可分),通过引入了松弛变量的概念,从而对SVM进行了扩展,不再是需要将全部点分类正确,而是可以容忍将个别点分类错误,只需要保证全局的总间隔是最小的就可以了。这一个从“只能分类正确”到“可以容忍部分错误”是一个很大的进步,称为软间隔最大化,得到的SVM叫做软间隔SVM。但是,这还是不够,如果说数据集线性不可分呢?这时候,就需要引入一个高维空间的概念,通过将数据点映射到高维空间,我们在高维空间中,通过使用软间隔最大化来得到SVM,从而对数据点进行分类。这样就可以解决线性不可分数据集的问题了。然而,这样又引入了一个新的问题,就是,我们把数据点映射到什么样的高维空间呢?在高维空间中如何进行计算呢?问题变多了。。。不过不急,在这里,我们发现,在计算间隔的时候,我们根本用不到高维空间的坐标什么的,我们需要的只是数据点在高维空间中的内积。换句话说,我们根本不需要知道所映射到的高维空间是什么样的,也不用管在高维空间中是怎么计算的,只需要知道数据点之间在高维空间中的内积的结果就行了。那么,不知到高维空间是什么样的,也不知道高维空间怎么计算,这样可以知道高维空间中的内积吗?答案是可以,我们只需要引入一个“核函数”的概念,设为k(x1,x2)=z(x1)*z(x2),其中,z(x)表示x在高维空间的表示,等号右边表示两个数据点x1,x2在高维空间中的表示的内积,左边表示核函数k(x1,x2),这样,就可以通过核函数计算高维空间中的间隔,从而在高维空间中使用软间隔最大化,得到数据点的分类了。

PS:SVM与感知机的区别还有一点,在于:SVM中,定义得到的最佳分类面只与最相近的“支持向量”有关,也就是说,在最终得到的最优分类面的位置进行上下平移,所碰到的第一批(并不一定是一个)数据点就决定了最优分类点的位置(即为:上下第一批分类点的位置中间),这个最优分类面的位置与其他点无关。这也是“支持向量机”这个名字的由来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值