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

SVM原理与调参

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

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

SVM原理与调参

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

如图所示:
SVM原理与调参
在这两个超平面上的样本点也就是理论上离分隔超平面最近的点,是它们的存在决定了H1和H2的位置,支撑起了分界线,它们就是所谓的支持向量,这就是支持向量机的由来
有了这两个超平面就可以顺理成章的定义上面提到的间隔(margin)了
二维情况下 ax+by=c1和ax+by=c两条平行线的距离公式为:
SVM原理与调参
可以推出H1和H2两个超平面的间隔为2/||w||,即现在的目的是要最大化这个间隔。
所以support vector machine又叫Maximum margin hyper plane classifier
等价于最小化||w||
为了之后的求导和计算方便,进一步等价于最小化

SVM原理与调参

两个式子综合一下有:

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

SVM原理与调参

对偶优化问题

对于上述的最优化问题先需要构造拉格朗日函数:
SVM原理与调参
分别对w和b求导得到:
SVM原理与调参
然后再代入拉格朗日函数后得到原问题的对偶问题

SVM原理与调参

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

SVM原理与调参

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

设映射函数为Φ(•),则映射后的空间分类函数变成
SVM原理与调参
但是,如果拿到低维数据直接映射到高维的话,维度的数目会呈现爆炸性增长。
于噪音的存在,有可能有偏离正常位置很远的数据点存在,甚至类别1出现杂了类别2的区域中这样的异常值叫outliers. 
为处理这种情况,SVM允许数据点在一定程度上偏离超平面,约束就变成了:
SVM原理与调参
其中SVM原理与调参,称为松弛变量(slack variable)
还需要一个惩罚因子C(cost),它代表了对离群点带来的损失的重视程度,它的值越大,对目标函数的损失越大,意味着你非常不愿意放弃这些点。
它是由使用者指定的一个值(libsvm中的参数C),是参数调优的重点所在。
原来的优化问题就变成了下面这样:
SVM原理与调参
同样用Lagrange方法得到对偶问题:
SVM原理与调参
这才是一个可以处理线性和非线性情况并能容忍噪音和outlier的SVM!


二、算法设计过程:

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

先给alpha 和 b初始值,

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

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

      随机选择另一个alpha数据

      同时优化这两个数据

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

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

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


三、调参

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

最后调用best_estimoter来得到结果


相关文章:

  • 2021-04-24
  • 2021-09-11
  • 2021-11-21
  • 2021-08-16
  • 2021-12-05
  • 2021-12-27
  • 2021-08-10
  • 2021-09-18
猜你喜欢
  • 2021-12-13
  • 2021-04-27
  • 2021-12-08
  • 2021-11-12
  • 2021-07-03
  • 2021-12-26
  • 2022-12-23
相关资源
相似解决方案