支持向量机SVM学习笔记

版权声明:本文为博主原创文章,未经博主允许不得转载。http://blog.csdn.net/aspirinvagrant https://blog.csdn.net/fenghuangdesire/article/details/40299797

SVM 核心思想

1.  Define an optimal hyperplane:maximize margin

2.  Extend the above definition for non-linearly separable problems:have a penalty term for misclassifications.

3.  Map data to high dimensional space where it is easier to classify with linear decision surfaces:reformulate problem so that data is mapped implicitly to this space.

一句话概括SVM:通过非线性映射将输入空间映射到高维空间,再构造一个最优的分类超平面,使得离分类超平面最近的异类样本之间具有最大的距离。

如何分类?

w为权重向量,b为常量

最大化Margin


将两类样本正确分开的超平面会有多个,其中与两类样本具有最大间隔Margin的超平面为最优超平面。

支持向量


离超平面最近的样本点决定最优超平面的位置,与远离最优超平面的样本点无关。

Optimization Problem


当判别函数在进行归一化处理后两类样本都满足|y|>=1,满足|y|=1的样本就是离分类面最近的样本。分类间隔就为2/||w||,因此为求取分类间隔最大的值,可以通过求取满足||w||最小的值即可。


(1) y_i(wx+b) > 1 点在margin的外边,对loss没有影响;

(2) y_i(wx+b) = 1 点在margin上,对loss没有影响;

(3) y_i(wx+b) < 1 点违反了margin约束,对loss产生影响;

Margin Width

解决凸二次规划问题(quadratic programming,QP问题),存在全局最优解。

Soft vs Hard Margin SVMs


非线性可分,引入松弛因子



希望找到的分界面能尽量将两类样本分开,也就是说ξi越小越好。当ξi足够大时,训练点总是可以满足yi((w .xi) + b) >= 1 - ξi约束条件,为了保证解的质量,就要避免所有的ξi都取太大的值,所以要在目标函数里对ξi进行惩罚,C理解为惩罚因子。

在这里,我们把 ||w||^2 项即看成几何间隔,也可以看成L2正则化项,如果看成几何间隔,那么,它的系数越大,也就相当于C越小,于是就对违反 margin的点惩罚更小,就不容易去拟合训练数据中的噪声;如果看成正则化项,那么,通过限制w的长度,能够避免某些极端的w,这些w在输入轻微变化时,会产生截然不同的输出。


ξ是对训练错误的惩罚,可由用户选择。目标函数中的两项意味着既要最小化∑ξi(最小化约束条件的破坏程度),又要最小化||w||2(最大化间隔),C的大小体现了对最小化训练错误和最大化间隔二者的重视程度。

C值越大,分类器就越不愿意容忍分类错误(离群点),如果C趋于无穷大时,分类器就会在训练数据上少犯错误,于是就造成过over-fitting;而C值过小时,分类器就会不在乎分类错误,分类性能就会较差,容易造成under-fitting。所以C的大小决定了对于离群点容忍程度,容忍程度越强,支持向量就越多。

非线性可分的SVM


将数据映射到高维空间


把低维输入空间中的向量映射到高维特征空间中,在高维特征空间中构造简单的线性决策函数。通常映射到高维空间会接近线性可分,更多内容请参考《SVM在线性不可分的情况下,利用核函数升维后就一定线性可分吗?》

核函数



核函数本质上是一个内积,核函数方法是一种降维方法,它以内积的形式将高位空间的计算变换到低维特征空间进行运算。符合Mercer条件的函数为核函数。

常见的核函数K(xi,xj)主要有以下几种:

(1) 线性核函数(linear):K(xi,xj)  =  xi. xj

(2) 多项式核函数(polynomial): K(xi,xj) = [(xi. xj)+ 1]q

(3) 径向基核函数(RBF):K(xi,xj) = exp(-||xj - xi||/σ2)  

(4) Sigmoid 作为核函数:K(xi,xj) = tanh(u(xi . xj)+ c)


如何计算Margin(即w)?


使用梯度下降的方法计算w和b






SVM多分类问题

原始的支持向量机算法是解决二分类问题的有效方法,而对于多分类问题,则要通过叠加用于二分类的支持向量机来解决。
(1)一对一支持向量机
每次选择两个类别分别作为正、负类,构造分类超平面,以此判断要分类的样本是属于正类还是负类。若属于正类,则正类相应的类别票数加一;若属于负类,则负类相对应的类别票数加一。若有k类的话,则一共要构造k(k-1)/2个分类面,使各类别两类分开,最终,以得票最多的类别作为样本的类别。
(2)一对其余支持向量机
每次针对一个类和剩下的所有类构造分类超平面。每次将某个类作为正类,将其余所有类合起来作为负类。如果有k个类的话,则一共要构造k个分类面。
(3)决策树算法
每到一个树节点就会判断此节点是否符合要求,并排除掉不符要求的类。但是,其在训练时的操作是和一对一的算法是一致的,同样要构造k(k-1)/2个分类超平面。但它是从这些分类超平面中先随机选择一个,用这个分类面对新样本进行分类。



SVM优点:


(1)传统的学习方法以样本数量无穷大为前提,而SVM方法有效的解决了小样本情形下机器学习问题,它不仅能取得样本数无穷大时的最优解,而且还能取得现有信息下的最优解。
(2)SVM方法以结构风险最小化为准则,通过建立最大分类间隔的最优分类超平面来限制学习的复杂度,解决了过拟合问题

所谓结构风险最小化,就是在训练误差和模型复杂度之间寻求平衡,防止过拟合,从而达到真实误差的最小化。
(3)在求解非线性问题时,SVM采用了核函数方法,使得样本的维数与高维空间的计算复杂度不相关,有效的解决了维数灾难问题
(4)在求解最优解时,SVM方法对约束条件下的二次规划问题进行了分析,并将该问题变换成对偶形式下的凸二次规划问题,从而解决了像传统学习机器会出现局部最优解的问题
(5)核函数的选择在SVM方法中可以自由的设定,根据选定的核函数类型,可以构造出许多不同类型的支持向量机算法,例如多项式逼近,径向基核,多层感知器网络等多种算法。


参考文献

Dr. Saed Sayad  University of Toronto Support Vector Machines

CS246: Mining Massive Datasets  Jure Leskovec, Stanford University


猜你喜欢

转载自blog.csdn.net/fenghuangdesire/article/details/40299797