支持向量机模型 0基础小白也能懂(附代码)
啥是向量机模型
本篇我们要讲解的模型是大名鼎鼎的支持向量机 SVM,这是曾经在机器学习界有着近乎「垄断」地位的模型,影响力持续了好多年。直至今日,即使深度学习神经网络的影响力逐渐增强,但 SVM 在中小型数据集上依旧有着可以和神经网络抗衡的极好效果和模型鲁棒性。
支持向量机学习方法,针对不同的情况,有由简至繁的不同模型:
线性可分支持向量机(linear support vector machine in linearly separable case):训练数据线性可分的情况下,通过硬间隔最大化(hard margin maximization),学习一个线性的分类器,即线性可分支持向量机(亦称作硬间隔支持向量机)。
线性支持向量机(linear support vector machine):训练数据近似线性可分的情况下,通过软间隔最大化(soft margin maximization),学习一个线性的分类器,称作线性支持向量机(又叫软间隔支持向量机)。
非线性支持向量机(non-linear support vector machine):训练数据线性不可分的情况下,通过使用核技巧(kernel trick)及软间隔最大化,学习非线性分类器,称作非线性支持向量机。
支持向量机可以借助核技巧完成复杂场景下的非线性分类,当输入空间为欧式空间或离散集合、特征空间为希尔贝特空间时,核函数(kernel function)表示将输入从输入空间映射到特征空间得到的特征向量之间的内积,先可以简单的把希尔贝特空间视作一个高维空间,核函数就是一种将低维数据映射到高维空间的方式,以便在高维空间中处理复杂的非线性问题。
通过使用核函数可以学习非线性支持向量机,等价于隐式地在高维的特征空间中学习线性支持向量机。这样的方法称为核技巧。
最大间隔分类器
1)分类问题与线性模型
分类问题是监督学习的一个核心问题。在监督学习中,当输出变量取有限个离散值时,预测问题便成为分类问题。
实际生活中,有很多问题的本质都是分类,如识别某种模式:文本分类、分词、词性标注、图像内容识别和目标检测等。
2)最大间隔分类器
不同的模型在解决分类问题时,会有不同的处理方式,直观上看,我们会使用不同的决策边界对样本进行划分。
如图中「冰墩墩」与「雪容融」两类样本点,我们对其进行分类,可以完成该分类任务的决策边界有无数个。而我们这里介绍到的 SVM 模型,要求更高一些,它不仅仅希望把两类样本点区分开,还希望找到鲁棒性最高、稳定性最好的决策边界(对应图中的黑色直线)。
这个决策边界与两侧「最近」的数据点有着「最大」的距离,这意味着决策边界具有最强的容错性,不容易受到噪声数据的干扰。直观的理解就是,如果决策边界抖动,最不容易「撞上」样本点或者进而导致误判。
支持向量机详解
1)线性可分 SVM 与硬间隔最大化
我们要找到把下图中红蓝两色的图标点分开的最优分界线。令红色的图标点\(=+1\),蓝色的图标的点\(=-1\),直线\(f(x)=w*x+b\),这里\(w,x\)是向量,其实公式等价于\(f(x)=w_1x_1+w_2x_2+...+w_nx_n+b\)
-
当向量\(x\)为二维向量时,\(f(x)\)表示二维空间中的一条直线。
-
当向量\(x\)为三维向量时,\(f(x)\)表示三维空间中的一个平面。
-
当向量\(x\)的\(n\)维向量(\(f(n)>3\))时,\(f(x)\)表示\(n\)维空间中的\(n-1\)维超平面。
当有一个新的点\(x\)需要预测属于哪个分类的时候,我们用\(sgn(f(x))\)就可以预测了。sgn表示符号函数:
-
当\(f(x)>0\)的时候,\(sgn(f(x))=+1\)。
-
当\(f(x)<0\)的时候,\(sgn(f(x))=-1\)。
回到重点,我们怎样才能取得一个最优的划分直线\(f(x)\)呢?下图的直线表示几条可能的线:
我们希望这条直线满足「最大间隔」原则,也就是如下图的形态。图中位于红色和蓝色线上的图标就是所谓的支持向量(support vector),也就是刚好卡在线上的那个数据点。
决策边界就是\(f(x)\),红色和蓝色的线是支持向量(support vector)所在的面,红色、蓝色线之间的间隙就是我们要最大化的分类间的间隙M(Margin Width)。
这里直接给出间隔\(M\)的计算公式:\(M=\frac{2}{||w||}\)。
SVM 要求解能够正确划分训练数据集并且「几何间隔」最大的分离超平面。
如下图所示,\(w*x+b\)即为分离超平面。对于线性可分的数据集来说,这样的超平面有无穷多个(即感知机),但是几何间隔最大的分离超平面却是唯一的。
- 其中\(x_i\)为第\(i\)个特征向量。
- \(y_i\)是第i个数据点的类别标签
间隔咋求,文中提到了两步如下。
1 几何间隔
公式中 s.t 是 subject to 的缩写,也就是限制条件的意思。SVM 模型的「求解最大分割超平面问题」可以表示为上面的约束最优化问题,化简的步骤中首先是先除了个\(\gamma\),然后重新代换了w和b(意义变了),最后他吧\(max(\gamma)\)也变了,最大化\(\gamma\)其实就是最大化\(\frac{2}{||w||}\)也就是\(\frac{1}{||w||}\),也就等价于最小化\(\frac{1}{2}||w||^2\),这里是把\(w\)转换了一下,方便之后的求导计算
2 对偶算法
求解线性可分支持向量机的最优化问题,我们很多时候会将它转化为对偶问题(dual problem)来求解,也就是应用「拉格朗日对偶性」,通过求解「对偶问题(dual problem)」得到「原始问题(primal problem)」的最优解
这样做有一些优点:
- 对偶问题往往更容易求解。
- 引入自然核函数,进而可以推广到非线性分类问题。
① 我们首先构建拉格朗日函数(Lagrange function)。为此,对每一个不等式约束引进拉格朗日乘子
左上角的拉格朗日函数咋来的呢?通过拉格朗日乘子\(\alpha_i\)的引入,约束条件\(y_i(w*x_i+b)\geq1\)被融入到目标函数中,而不再是外部的约束条件。这使得我们可以用标准的优化方法来处理它。如果某个解违背了约束,那么拉格朗日函数中的惩罚项就会变得很大,从而惩罚不合适的解。这样,我们通过优化拉格朗日函数,间接确保了原始约束的满足。至于\(\frac{1}{2}w^Tw\)就是之前的是向量
标签:SVM,函数,代码,小白,超平面,线性,alpha,向量 From: https://www.cnblogs.com/Mephostopheles/p/18403054