标签(空格分隔): 王小草机器学习笔记
1.SVM的原理与目标
1.1 分割超平面
来看上图,假设C和D是两个不想交的凸集,则存在一个超平面P,这个P可以将C和D分离。
这两个集合的距离,定义为两个集合间元素的最短距离。
做集合C和集合D最短线段的垂直平分线。这条垂直平分线就是分割超平面。
在两个集合之间,可以有无数条分割超平面,使其将两个集合分离,但是如何定义与找出两个集合的“最优”分割超平面呢?
可以这样做:
找到集合“边界”上的若干点,以这些点为基础计算超平面的方向,以两个集合 边界上的这些点的平均作为超平面的“截距”
因为超平面是通过这些点(向量)来支撑形成的,所以我们叫这些吃撑了超平面产生的向量叫做支持向量,support vector.
那么如果两个集合有部分相交,如何定义超平面,从而使得两个集合尽量分开呢?
如下图,在两个集合之间可以画出无数条超平面,到底哪条是最好的,到底哪些是支持向量呢?
1.2 定义输入数据
假设给定一个特征空间上的训练集为:
其中,
xi为第i个实例(样本),若n>1,则xi为向量。
yi为xi的标记:
当yi=1时,xi为正例
当yi=-1时,xi为负例
(至于为什么正负用(-1,1)表示呢?这个问题也许从来没有想过。其实这里没有太多原理,就是一个标记,你也可以用正2,负-3来标记。只是为了方便,yi/yj=yi*yj的过程中刚好可以相等,便于之后的计算。)
(xi,yi)称为样本点。
1.3 线性可分支持向量机
给定了上面提出的线性可分训练数据集,通过间隔最大化得到分离超平面为
相应的分类决策函数为:
以上决策函数就称为线性可分支持向量机。
这里解释一下这个东东。
这是某个确定的特征空间转换函数,它的作用是将x映射到更高的维度。
比如我们看到的特征有2个:x1,x2,组成最见到的线性函数可以是w1x1,w2x2.但也许这两个特征并不能很好地描述数据,于是我们进行维度的转化,变成了w1x1+w2x2+w3x1x2+w4x1^2+w5x2^2.于是我们多了三个特征。而这个就是笼统地描述x的映射的。
最简单直接的就是:
以上就是线性可分支持向量机的模型表达式。我们要去求出这样一个模型,或者说这样一个超平面y(x),它能够最优地分离两个集合。
其实也就是我们要去一组参数(w,b),使其构建的超平面函数能够最优地分离两个集合。
如下就是一个最优超平面:
又比如说这样:
阴影部分是一个“过渡带”,“过渡带”的边界是集合中离超平面最近的样本点落在的地方。
2.SVM的计算过程与算法步骤
2.1 推导目标函数
我们知道了支持向量机是个什么东东了。现在我们要去寻找这个支持向量机,也就是寻找一个最优的超平面。
于是我们要建立一个目标函数。那么如何建立呢?
再来看一下我们的超平面表达式: