[机器学习]svm支持向量机介绍

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014679456/article/details/79625141
1 什么是支持向量机
支持向量机是一种分类器,之所以称为 机 是因为它会产生一个二值决策结果,即它是一个决策机。 ​​​Support Vector Machine, 一个普通的SVM就是一条直线罢了,用来完美划分linearly separable的两类。但这又不是一条普通的直线,这是无数条可以分类的直线当中最完美的,因为它恰好在两个类的中间,距离两个类的点都一样远。而所谓的Support vector就是这些离分界线最近的『点』。如果去掉这些点,直线多半是要改变位置的。可以说是这些vectors(点)support(定义)machine(分类器)...

图1-1
2 svm 特点
1。 小样本,并不是说样本的绝对数量少(实际上,对任何算法来说,更多的样本几乎总是能带来更好的效果),而是说与问题的复杂度比起来,SVM算法要求的样本数是相对比较少的。
2。非线性,是指SVM擅长应付样本数据线性不可分的情况,主要通过松弛变量(惩罚变量)和核函数技术来实现。
3 svm 思想及原理
如图1-1的例子,(训练集)红色苹果是我们已知的分类1,(训练集)黄色香蕉点是已知的分类2,我们想寻找一个分界超平面(图中橙线)(因为示例是二维数据点,所以只是一条线,如果数据是三维的就是平面,如果是三维以上就是超平面)把这两类完全分开,这样的话再来一个样本点需要我们预测的话,我们就可以根据这个分界超平面预测出分类结果。
传统方法:




SVM方法:
1.线性可分:
SVM输入数据会输出一个类别标签: label = f(w'x+b) {-1,1}那么我们认为好的 分界面有什么样的特征呢?第一,它“夹”在两类样本点之间;第二,它离两类样本点中所有“离它最近的点”(支持向量),都离它尽可能的远。如题1-2所示。

图1-2
定义几何间隔的概念,几何间隔就是在多维空间中一个多维点到一个超平面的距离,根据向量的知识可以算出来

那么Margin = r*label 则是定义为点到间隔面几何间隔。我们的目标:
1.找到具有最小间隔的点(支持向量)
2.使的这小最小间隔点(支持向量)离分隔面尽可能远
  • arg max{min(Margin)}
st Margin >=1


这是典型的二次规划问题(目标函数是自变量的二次函数) 通过拉格朗日对偶性( Lagrange Duality)变换到对偶变量  (dual variable)  的优化问题,即通过求解与原问题等价的对偶问题( dual problem 得到原始问题的最优解,这就是线性可分条件下支持向量机的对偶算法,这样做的优点在于:一者对偶问题往往更容易求解;二者可以自然的引入核函数,进而推广到非线性分类问题。
通过TTK条件求解
最后的优化函数可以写成

xiT * xj 也就是xi 和xj 两个向量的内积
在支持向量的点他们的系数都是ai>0,其他点的ai=0
如果数据不干净的话, 就需要引进“松弛变量C”允许有些数据点处于分隔面错误的一端。这样我们的优化条件不变,只是约束条件变成了C>=ai>=0 i = 1.2.3.n 。 具体数据证明看这里(详细的数学证明看链接)。
2 非线性可分



感谢v_JULY_v  的博客:支持向量机通俗导论(理解SVM的三层境界)  

感谢 靠靠靠谱     在知乎的解答

猜你喜欢

转载自blog.csdn.net/u014679456/article/details/79625141