支持向量机算法简介(Python)
一、支持向量机方法简介
支持向量机(SVM)是一种常见的分类方法,在机器学习领域,是一个有监督的学习模型,通常用来进行模式识别、分类以及回归分析。SVM的核心思想主要为两点:
- 它基于结构风险最小化理论之上在特征空间中构建最优超平面,使得学习器得到全局最优化,并且在整个样本空间的期望以某个概率满足一定上界。
- 它是针对线性可分情况进行分析,对于线性不可分的情况,通过使用非线性映射算法将低维输入空间线性不可分的样本转化为高维特征空间使其线性可分,从而使得高维特征空间采用线性算法对样本的非线性特征进行线性分析成为可能。
二、支持向量机的原理
2.1 类别的划分方法
支持向量机作为一个二分类的方法,其原理就是寻找一个超平面将两个不同的类别(1和-1类)分开。如下图所示:
上图中紫色和黄色分别对应两种不同的分类,而红线f(x)=wxT+bf(x)=wx^T+bf(x)=wxT+b就是用于分割两种类型的超平面。当f(x)=0f(x)=0f(x)=0则x是位于超平面上的点,当f(x)>0f(x)>0f(x)>0则x是位于超平面以上,是1的分类,而当f(x)<0f(x)<0f(x)<0则位于超平面以下,是-1的分类。
2.2 函数间隔与几何间隔
接下来的问题是,如何确定这个超平面呢?从直观上而言,这个超平面应该是最适合分开两类数据的直线。而判定“最适合”的标准就是这条直线离直线两边的数据的间隔最大。在这里我们引入函数间隔这个概念,在超平面f(x)=wxT+bf(x)=wx^T+bf(x)=wxT+b已经确定的情况下,∣∣wxT+b∣∣||wx^T+b||∣∣wxT+b∣∣就是点到超平面的距离。而且当类别y与f(x)=wxT+bf(x)=wx^T+bf(x)=wxT+b正负性相同时,说明分类是正确的。反之,则说明分类是错误的。于是函数间隔可以定义为γf=yf(x)\gamma_f=yf(x)γf=yf(x), 但如图所示函数间隔并不是点到直线的垂直距离,要客观的反映点到函数的距离,我们引入了几何距离这个概念。γ=yf(x)∣∣w∣∣\gamma=\frac{yf(x)}{||w||}γ=∣∣w∣∣yf(x),其中∣∣w∣∣=wTw||w||=w^Tw∣∣w∣∣=wTw为w的二阶范数,表示的是向量的长度,w∣∣w∣∣\frac{w}{||w||}∣∣w∣∣w则表示单位向量。
2.2 最大间隔分类器
根据支持向量机的特性,当样本特征到超平面的几何距离越大,分类的确信度也越大。因此最大间隔分类器就是指使这个间隔最大的目标函数,即max(γ)=max(yf(x)∣∣w∣∣)max(\gamma)=max(\frac{yf(x)}{||w||})max(γ)=max(∣∣w∣∣yf(x))。可以看出该目标函数由分子yf(x)yf(x)yf(x)与分母∣∣w∣∣)||w||)∣∣w∣∣)组成。为了使计算简单,我们将分子固定为1,这时上述目标函数转换成了
(1)max(1∣∣w∣∣)s.ty(wTx+b)>=1max(\frac{1}{||w||})\qquad s.t \quad y(w^Tx+b)>=1 \tag 1max(∣∣w∣∣1)s.ty(wTx+b)>=1(1)
如下图所示,中间的实现平面就是超优平面。两条虚线边界的间隔为γ=2∣∣w∣∣\gamma=\frac{2}{||w||}γ=∣∣w∣∣2,在这两条虚线上的绿色点就是支持向量。对于支持向量,满足yf(x)=y(wTx+b)=1yf(x)=y(w^Tx+b)=1yf(x)=y(wTx+b)=1。对于所有非支持向量的样本,必须满足yf(x)=y(wTx+b)>1yf(x)=y(w^Tx+b)>1yf(x)=y(wTx+b)>1
三、目标函数的求解
为了计算需要,我们可以将公式(1)等价转换为公式(2)
(2)min(12∣∣w∣∣2)s.ty(wTx+b)>=1min(\frac{1}{2}||w||^2)\qquad s.t \quad y(w^Tx+b)>=1 \tag 2min(21∣∣w∣∣2)s.ty(wTx+b)>=1(2)
到这个形式以后,就可以很明显地看出来,它是一个凸优化问题,或者更具体地说,它是一个二次优化问题——目标函数是二次的,约束条件是线性的。这个问题可以用任何现成的 QP (Quadratic Programming) 的优化包进行求解。但虽然这个问题确实是一个标准的 QP 问题,但是它也有它的特殊结构,通过 Lagrange Duality 变换到对偶变量 (dual variable) 的优化问题之后,可以找到一种更加有效的方法来进行求解,而且通常情况下这种方法比直接使用通用的 QP 优化包进行优化要高效得多。
也就说,除了用解决QP问题的常规方法之外,还可以应用拉格朗日对偶性,通过求解对偶问题得到最优解,这就是线性可分条件下支持向量机的对偶算法,这样做的优点在于:一者对偶问题往往更容易求解;二者可以自然的引入核函数,进而推广到非线性分类问题。
至于上述提到,关于什么是Lagrange duality?简单地来说,通过给每一个约束条件加上一个 Lagrange multiplier(拉格朗日乘值),即引入拉格朗日对偶变量,如此我们便可以通过拉格朗日函数将约束条件融和到目标函数里去(也就是说把条件融合到一个函数里头,现在只用一个函数表达式便能清楚的表达出我们的问题):
(3)L(b,w,α)=12∣∣w∣∣2−∑i=1nαi(yi(wTxi+b)−1)L(b,w,\alpha)=\frac{1}{2}||w||^2-\sum_{i=1}^{n}\alpha_i(y_i(w^Tx_i+b)-1) \tag3L(b,w,α)=21∣∣w∣∣2−i=1∑nαi(yi(wTxi+b)−1)(3)
然后令
θ(w)=max(L(b,w,α))αi>=0\theta(w)=max( L(b,w,\alpha))\qquad\alpha_i>=0θ(w)=max(L(b,w,α))αi>=

最低0.47元/天 解锁文章
2127

被折叠的 条评论
为什么被折叠?



