SVM总结
前言
分类就像用刀切一样,要想尽量把两类完全切开这就是分类器追求的目标。SVM是一个通用的分类器。
找刀
其实就是一个找“刀”的过程。
首先看1维的
其中黄色的点和蓝色的点不是一类。我们可以 理解这里的橙色的点就是我们需要 找的“刀”。
然后看二维的
其中黄色的点和蓝色的点不是一类。我们可以 理解这里的橙色的线就是我们需要 找的“刀”。
三维的
就是面
四维的
画不出来,叫超平面。
总之就是
意思就是用到把种类分开。尽量让类到该去的地方。
怎么切
超平面
其实上面一节说的刀就是一个超平面。
如何解释呢?
根据上一节的切分。
一维空间
我们可以得到一个点,可以把两个类别分开。我们可以写成。
x+A=0. 或者 x=-A
二维空间
Ax+By+C=0 或者 y=-C/B-A/Bx
三维空间
Ax+By+Cz+D=0 或者 z=-A/Cx - B/Cy - D/c
可以知道,我们肯定有个低于当前维度的一个东西把两类东西且分开。
这个就是超平面(不完全正确解释理解就好)。
范数
这个东西看起来高大上,其实很简单(搞学术的毒害),下面一步一步解释。
上面一节解释了超平面的概念,意思就是在一个维度的空间里面可以找到一个低纬度的“超平面”把数据分开。那么怎么找到这个平面就是一个关键。
SVM的思路就是在分别在两个不同类别中找到两个点a.b,这两个点要求是两个类别中离超平面距离最近的点。然后算出两个点之间的距离d,让这个距离d最大就好了。
看图
image.png
我们知道黄色类别中离超平面最近的是a。蓝色点离超平面最近的是b。我们只需要a的距离超平面的距离L1与b距离超平面距离L2。使得L1+L2最大。(注意这里不是求a到b的距离)。
那么这跟范数有什么关系呢?
因为范数跟距离有关系。
一维
Ax+B=0
超平面就是x=-B/A
那么两个类别集合上面的点距离这个X=-B/A的距离是。
image.png
其实就是 其他点到这个点的距离。
假设 蓝色都是大于1的整数。 黄色都是小于-1的整数。那我们的分割点假设是0。那么我们蓝色中距离分割点的最小距离是点是x0=1
带入公式中。
d=1
二维
仔细观察一下我们的二维超平面方程。
高中学过距离公式吧。
image.png
三维
好像有点规律。
我们很容易看出这就是一个分式,分子是g(x) (超平面方程)。分子是待定系数平方加和之后开方
像
这个分母就是范式。
写作
image.png
那么距离公式就可以简化。
image.png
超平面想象画法
1、先随意画一个超平面X。
2、以超平面X 分裂出一个X1和一个X2。X1向一类走,X2向一类走。
3、碰到点就停下来,计算d.
4、重复1、2、3 找到max(d)
切不开
按照上一节的逻辑我们第一步就会遇到困难,因为有很多根本就分不开。
例如:
image.png
这个就很糟糕,因为这是一个二维图像,我们找的超平面是1维的,而且“刀”是直线,这就很要命。根本切不开。
但是好像也给了一点曙光,我们看起来蓝色点就像顺着一个抛物线。那么我们肯定可以找到一个 抛物线形状的“刀”去吧这个切开。
那怎么找到这个抛物线刀呢?肯定不是观察法啦。我们可以升一个维度。上升一个维度后就是找面了。
现在假设我们的点都在三维空间散开。
image.png
一个面就把它切开了不是?然后把这个面投影到之前的维度。就成了我们想要的抛物线。
image.png
这个怎么做到的呢?就是核函数,核函数就是负责这个。有很多核函数,能力有限没法一一解释,但是目的很单纯,就是升维这个功能。
总结
步骤
1、喂样本数据。
2、如果线性可分,直接找出超平面。
3、如果不可分,把样本映射到n+1维空间,找到超平面。®