机器学习之支持向量机:支持向量机的公式推导
Posted 追寻的鹿
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了机器学习之支持向量机:支持向量机的公式推导相关的知识,希望对你有一定的参考价值。
注:关于支持向量机系列文章是借鉴大神的神作,加以自己的理解写成的;若对原作者有损请告知,我会及时处理。转载请标明来源。
序:
我在支持向量机系列中主要讲支持向量机的公式推导,第一部分讲到推出拉格朗日对偶函数的对偶因子α;第二部分是SMO算法对于对偶因子的求解;第三部分是核函数的原理与应用,讲核函数的推理及常用的核函数有哪些;第四部分是支持向量机的应用,按照机器学习实战的代码详细解读。
机器学习之支持向量机(四):支持向量机的Python语言实现
1 认识向量机
支持向量机是处理数据分类问题,目的是学会一个二分类的函数模型,属于监督式学习的方法,被广泛应用于统计分类和回归分析。通过建立一个超平面对样本数据进行分类,超平面涉及到凸优化及核函数的应用,而对于怎么找到最优的超平面就是这部分要讲的内容。
2 线性分类
假设数据样本集是线性可分,即存在一个超平面将其分成两类。以下推导的过程都是基于线性可分,非线性分类是在线性分类加上一个松弛因子,下面开始线性分类的推导。
2.1 线性分类的标号
在之前的Logistic 回归算法中,我们是把数据分成 0 和 1 ,而这里为了以后的推导式子的通用性,采用 -1 和 1 两类。分类函数为 f (x) = ωTx + b ,其中 ω = (ω1 ,ω2 ,... , ωn),x = (x1, x2 , ... ,xn)。通俗的讲支持向量机的解决的问题是找到最好的分类超平面,例如,在二维平面中其超平面就是一根直线,如下图所示在能将两类分开的直线中找到最佳的直线。评判直线的最佳的标准是:在能分类的情况下,样本点与直线的距离越远,说明直线就越佳。这就引出函数间隔和几何间隔对选取的直线的评判。
2.2 函数间隔和几何间隔
一般而言,一个点距离超平面的远近可以表示为分类预测的确信或准确程度。在超平面 wTx+b=0 确定的情况下,|wTx+b| 能够相对的表示点x到距离超平面的远近,而 wTx+b 的符号与类标记 y 的符号是否一致表示分类是否正确,所以,可以用量 y(wTx+b) 的正负性来判定或表示分类的正确性和确信度。即,y(wTx+b) > 0 时分类正确;y(wTx+b) < 0 时分类错误。
2.2.1 函数间隔
超平面 f ( x ) 关于样本点(x (i) , y (i))的函数间隔:
对于样本集中的每个样本点都与超平面有函数间隔,但只能选取最小值:
定义是为了最大化间隔,表示关于超平面与训练集中样本的函数间隔最小值,下面只要最大化即可。 注意到函数间隔实际上并不能表示点到超平面的距离,因为当超平面(ω,b)参数扩大相同的倍数后,如(2ω,2b),超平面的位置并没有改变,但是函数间隔也变大了相同的倍数2γ^(i)。
2.2.2 几何间隔
如图所示,样本点A的坐标为 x (i) ,A 到超平面的垂直距离为 γ(i) ,超平面的单位法向量是 ω / || ω || ,B点是超平面上一点且是A点的投影,则 B 点的坐标 x(i) - γ(i) ω / || ω || ,将其带入超平面方程 f (x) = ωT x + b =0 .
如果分类正确,则 y(i) 与 f( x(i)) 符号相同,几何间隔是:
超平面与样本集的几何间隔是:
如上所述,函数间隔与几何间隔的关系有: , 若|| ω || = 1,那么函数间隔与几何间隔相同。
2.3 间隔最大化
现在又进一步,由原来的求一个超平面到现在求超平面的最大间隔。通过函数间隔与几何间隔的定义知利用几何间隔衡量最佳的标准是合适的,因为几何间隔是真正意义上的距离,如同我们求点到平面的距离一样:
接下来再介绍一个概念:支持向量。如下图所示,假设中间的红线是超平面,那么虚线上的样本点就是支持向量。
这样一来,我们就可以定义间隔最大化:
max
需要满足的条件是:
间隔的有效的样本点是支持向量的点,即是符合函数间隔等于 1 的点。那么就可以对间隔的最大化可以为:
其中,s.t.,即subject to的意思,它导出的是约束条件。
2.4 向对偶问题转化
由上面的式子经过变化,得到凸优化问题,即 将max 1/ || ω || 转化成求 min 1/2 || ω || 2 ,两者是等价的。
转化到这个形式后,我们的问题成为了一个凸优化问题,或者更具体的说,因为现在的目标函数是二次的,约束条件是线性的,所以它是一个凸二次规划问题。这个问题可以用任何现成的QP的优化包进行求解,归结为一句话即是:在一定的约束条件下,目标最优,损失最小。
除了用解决QP问题的常规方法之外,还可以通过求解对偶问题得到最优解,这就是线性可分条件下支持向量机的对偶算法,这样做的优点在于:一者对偶问题往往更容易求解;二者可以自然的引入核函数,进而推广到非线性分类问题。
现在要对凸优化进行求解,现在给出的经验求解方法是,通过求解对偶问题得到最优解。对偶问题是什么?这就要引出拉格朗日函数,将约束条件融合到目标函数中,通过给每个约束条件加上一个拉格朗日乘子 α 。
然后令:
现在我们的目标函数变成了:
对这个公式的理解:在满足约束条件(即样本点为支持向量)下,最大的几何间隔中取最小的值。max L(w,b,a) 是得到支持向量的样本点,然后再这些样本点中找到min 1/2 || w ||2 的最小值(最大间隔)。
注意了,对偶问题出来了(p* 是原来的问题,d* 是对偶问题),将最小最大的位置交换,得到下面的式子:
交换之后的问题就不等价了,有以下关系:d* <= p* 。但在满足某些条件下(KKT条件),两者是相等的。现在我们把对偶问题得出了,但怎么对偶问题进行求解呢?继续向下看,最终的目标式子就要出来了。
2.5 对偶问题的求解
上述可知,原来问题与对偶问题的等价条件是满足某些条件,条件就是KKT 。不知道KKT 条件没关系,现在你只需要明白原来问题是满足KKT条件,KKT 条件在核函数中讲解。而求解这个对偶学习问题,分为3个步骤:1、让L(ω, b, α)关于 ω 和 b 的最小化;2、求 α 的极大;3、利用SMO算法求解对偶因子(α)。这里主要讲1 和 2 ,步骤 3 在第二部分讲。
步骤 1 : 固定 α ,然后L(ω, b, α)对 ω 、b 求偏导,另其偏导数等于零。
把结果带入L:
得到:
其中的推导过程如下:
步骤2 :对 α 求极大,通过步骤 1 已经把 变量 ω 、b 消去,函数只有 α。
如果我们把对偶因子求出,那么我们就可以得到最佳的超平面 f (x) = ωT x + b ;
b 根据KKT条件 ,αi [ y(i)(ωTx(i) + b ) -1] =0, i =1, 2 ,..., m ,其中必然存在一个αj 不等于0 ,y(j)(ωTx(j) + b )=1 ,两边同乘以 y(j) 可得:
b = y(j) - Σi=1mαi y(i) x(i)x(j) , 也可以对所有满足条件的b加权平均。
到这里我们把目标函数 f(x) 的求解转化成对对偶因子的求解,正如 July 大神总结的一样。下部分对SMO算法求解过程的推导。
机器学习之支持向量机(四):支持向量机的Python语言实现
参考:
支持向量机通俗导论(理解SVM的三层境界)http://blog.csdn.net/macyang/article/details/38782399/
【机器学习详解】SVM解二分类,多分类,及后验概率输出 http://blog.csdn.net/luoshixian099/article/details/51073885
以上是关于机器学习之支持向量机:支持向量机的公式推导的主要内容,如果未能解决你的问题,请参考以下文章