SVM原理与调参

一、SVM基本原理:
支持向量机(support vector machines)是一个二分类的分类模型(或者叫做分类器)。如图:


它分类的思想是,给定给一个包含正例和反例的样本集合,svm的目的是寻找一个超平面来对样本根据正例和反例进行分割。

在样本空间中,划分超平面可通过如下线性方程来描述:


SVM的核心思想是尽最大努力使分开的两个类有最大间隔,这样才能使得分割有更高的可信度。

如图所示:

在这两个超平面上的样本点也就是理论上离分隔超平面最近的点,是它们的存在决定了H1和H2的位置,支撑起了分界线,它们就是所谓的支持向量,这就是支持向量机的由来
有了这两个超平面就可以顺理成章的定义上面提到的间隔(margin)了
二维情况下 ax+by=c1和ax+by=c两条平行线的距离公式为:

可以推出H1和H2两个超平面的间隔为2/||w||,即现在的目的是要最大化这个间隔。
所以support vector machine又叫Maximum margin hyper plane classifier
等价于最小化||w||
为了之后的求导和计算方便,进一步等价于最小化


两个式子综合一下有:


这就是目标函数的约束条件。现在这个问题就变成了一个最优化问题:

对偶优化问题

对于上述的最优化问题先需要构造拉格朗日函数:

分别对w和b求导得到:

然后再代入拉格朗日函数后得到原问题的对偶问题


现在已经完成了对这个问题的建模过程。
当要对一个数据点分类是,只需要把待分类的数据点带入g(x)中,把结果和正负号对比。又由上面计算得到的w,带入g(x)得到:


但是上述公式只能算线性可分的点,对于线性不可分的情况需要把相应的点投影到核函数:

设映射函数为Φ(•),则映射后的空间分类函数变成

但是,如果拿到低维数据直接映射到高维的话,维度的数目会呈现爆炸性增长。
于噪音的存在,有可能有偏离正常位置很远的数据点存在,甚至类别1出现杂了类别2的区域中这样的异常值叫outliers. 
为处理这种情况,SVM允许数据点在一定程度上偏离超平面,约束就变成了:

其中,称为松弛变量(slack variable)
还需要一个惩罚因子C(cost),它代表了对离群点带来的损失的重视程度,它的值越大,对目标函数的损失越大,意味着你非常不愿意放弃这些点。
它是由使用者指定的一个值(libsvm中的参数C),是参数调优的重点所在。
原来的优化问题就变成了下面这样:

同样用Lagrange方法得到对偶问题:

这才是一个可以处理线性和非线性情况并能容忍噪音和outlier的SVM!


二、算法设计过程:

用PMO算法来得到alpha和b这两个参数,输入为特征数据,标签以及惩戒因子C、松弛因子toler。

先给alpha 和 b初始值,

当迭代次数小于最大的迭代次数,

计算误差,若误差找过容忍范围:

      随机选择另一个alpha数据

      同时优化这两个数据

      并计算相应b值,需要b在0和C之间

      如果两个向量不能被优化则退出内循环,

   如果所有向量都没法优化,增加迭代次数,继续下一个循环


三、调参

主要是cost和gamma以及对映射核函数的选择,用网格搜索法gridsearchCV调参。

最后调用best_estimoter来得到结果


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值