简介:
清明过后,也快一周的时间了,毕设还在计划中进行。昨天晚上和一个考研到西安交通大学的朋友聊天,也互相交流了一下看法,因为他是做蚁群算法的,所以说也都算是算法类的毕设。能够感觉到他对自己的要求也很高,也都是自己独立推导数学公式,优化算法,哈哈,以后又多了一个能够交流的小伙伴。然后也跟哈深的基友交换了看法,都是感觉自己能够看懂别人的算法,但是自己独立实现还是有困难,enmmmmm还是自身底蕴不够,努力吧。
这几天一直在看svm 支持向量机的内容,整整推导了三天的公式,9张A4纸,还是挺骄傲的,毕竟自己以前很不务实。
今天只有一个目的,就是讲清楚svm的数学推导以及简化版的smo算法。
支持向量机:
概述:
首先支持向量机是一种监督学习算法,无论训练集还是数据集都是需要标注标签的。那么什么是支持向量?在这之前需要先介绍“分隔超平面”的概念。
分隔超平面:
借用AILearning社区的图片进行说明:
可以看到,在二维的图形中,可以用一条直线将线性可分的数据集分开。那么如果数据集由二维上升到三维呢?是的,可以用一个面,可以是平面,也可以是曲面进行分割。那么当维度上升到n维时,依照规律,则可以使用n-1维度的对象进行分割,那么我们用来分割的对象,便叫做“分割超平面”。
再看一张图:
支持向量:
支持向量实质是数据点,并且是离分割超平面距离最近的数据点,比如上图的苹果。
机:
机也不表示机器,表示的是一种算法。
那么字面意义的支持向量机,就很轻松的讲解完成了。接下来我们讲解支持向量机的数学推导和smo简化版算法。
数学建模及推导:
分割超平面:
西瓜书中直接给出了,分割超平面的线性方程:
W T x + b = 0 W^Tx+b=0 WTx+b=0
我觉得推导过程还是很有必要的,那么我的推导过程如下:
- 首先直线的情况下,方程为:
y = a x + b y=ax+b y=ax+b
- 微调一下:
x 1 = a x 2 + b x_1=ax_2+b x1=ax2+b
- 移项:
a x 2 − x 1 + b = 0 ax_2-x_1+b=0 ax2−x1+b=0
- 向量化:
[ a , − 1 ] ∗ [ x 2 , x 1 ] T + b = 0 [a,-1]*[x_2,x_1]^T+b=0 [a,−1]∗[x2,x1]T+b=0
- 那么令向量
W T = [ a , − 1 ] W^T=[a,-1] WT=[a,−1]
X = [ x 2 , x 1 ] T X=[x_2,x_1]^T X=[x2,x1]T
则最后便可得到公式:
W T x + b = 0 W^Tx+b=0 WTx+b=0
而维度便是由 W T W^T WT的维度来决定。那么由高等数学的知识可知:
向量 W T W^T WT便是分割超平面的法向量,也就决定了分割超平面的方向,那么b也就是分割超平面的截距,也就是位移项。
点到分割超平面的距离:
在高等数学中,我们学习过点到直线的距离:
d = ∣ A x 0 + B y 0 + C A 2 + B 2 ∣ d=|\frac{Ax_0+By_0+C}{\sqrt{A^2+B^2}}| d=∣A2+B2Ax0+By0+C∣
那么将距离公式扩展到多维:
d = ∣ ∣ W T X + B ∣ ∣ ∣ W ∣ ∣ ∣ d=|\frac{|W^TX+B|}{||W||}| d=∣∣∣W∣∣∣WTX+B∣∣
分母即为向量W的模
好了,在理解了点到分割超平面的距离之后,我们来谈一下,对于图6-2来说,什么才是最好的分割方法呢?我们依靠什么来判断分割平面的好与坏呢?
分类器的好坏的评定依据是分类间隔W=2d的大小,即分类间隔W越大,我们认为这个超平面的分类效果越好。此时,求解超平面的问题就变成了求解分类间隔W最大化的问题。W的最大化也就是d最大化的。
而在周志华老师的西瓜书中,我们直接把“间隔”定义为:
两个异类支持向量到超平面的距离之和
问题转换:
请看下图:
可以看到,我们把左侧的五角星支持向量,还有右侧的圆球支持向量到分割超平面的距离为d,也就是支持向量对应:
∣ W T x + b ∣ = 1 |W^Tx+b|=1 ∣WTx+b∣=1
那么:
γ = 2 ∣ ∣ W ∣ ∣ \gamma=\frac{2}{||W||} γ=∣∣W∣∣2
即为图中2d的值。那么现在我们所求的“最大间隔”问题,就被转换成了 γ \gamma γ的最大值问题,也就是 1 ∣ ∣ w ∣ ∣ \frac{1}{||w||} ∣∣w∣∣1的最大值问题,也就是 ∣ ∣ w ∣ ∣ 2 ||w||^2 ∣∣w∣∣2的最小值问题:
则可以将问题重新定义为:
满足 m i n ( 1 2 ∣ ∣ w ∣ ∣ 2 ) min(\frac{1}{2}||w||^2) min(21∣∣w∣∣2)时,求对应的w,b
注意:可能有些人会问为什么多了个系数,实则很简单,为了求导方便
约束条件:
在以上的论述中,已经顺利获得了目标函数的数学形式,我们重新整理一下。
求解最大间隔 -----(等价于)------ γ \gamma γ的最大值----(等价于) m i n ( 1 2 ∣ ∣ w ∣ ∣ 2 ) min(\frac{1}{2}||w||^2) min(21∣∣w∣∣2)
为了求解最大间隔,首先我们要找到支持向量点,那么又怎么在众多数据点中顺利找出支持向量点呢?
为了能够解决以上问题,我们以二维平面为例,对于二维平面上的两类点,我们依次做不同的标记:
如图所示:
做标记如下:
红球: