引入:
输入相同的数据,不同的分类器处理方式不一样,结果也不一样。今天重新填坑核函数,顺便学习一下SVM。
支持向量机,高斯核函数
支持向量机的背景介绍
- support vector machine
- 思想直观,但细节复杂,涵盖凸优化,核函数,拉格朗日算子等理论
- 二分类模型,也可用于回归分析
- 最基本表达形式是线性约束的凸二次规划问题,有最优解
核心思想
- 策略:间隔(margin)最大化,最不受到噪音的干扰
- 间隔和软间隔
- 超平面唯一(距离超平面最近的几个点为支持向量(support vector))
- (-1, 1) 0
- 带着以上关键词来理解支持向量分类器,过程如下
- 假设有一种新药物进行小鼠药性实验,药效如下图:坐标轴为药效,所有的点是输入的数据,红色表示药效很差,绿色表示药效很好。现在的目的就是:输入新的药效数据,判断它是好是坏。
- 如果简单的把分界点放在药效最差的最大值是不合理的。如下图,橙色的线表示的是此时的分界点,在此分界点左边的就是药效差,右边就是药效好。当出现新的观测值(黑点)时,由于它处于橙线右侧,所以它被判定为药效好。可实际上,它离药效差的点明明更近,他应该被归为药效差的一类。同理,把分界点放在药效最好的最小值也是不合理的:
- 在以上的基础上,我们能不能把分界点设置在橙点极大值和绿点极小值的中间呢,如下图所示,当出现一个新的黑点时,我们很容易就把它归为药效差的那一组,这样看着也挺合理的:
此时,橙点最大值、绿点最小值 和 分解点之间的距离,称为间隔(margin),如下图橙色虚线和绿色虚线所示,间隔最大化对数据集的橙点和绿点才公平,而此时的间隔称为硬间隔,它所对应的数据是线性可分的:
- 但是,如果数据集是下面这张图这样呢?
可以看到:有一个橙点的离群值,虽然它药效不好,但是离药效好的那些点特别近。
此时,允许间隔最大化的分界点离绿点超级近,但是离大多数橙点都超级远
在这种情况下,如果出现了一个新的黑点,即使它离药效好的点很近,也会被判定为药效差:
总结:最大间隔化受训练集异常值的影响非常大。 - 那么,如何让最大间隔化对异常值不那么敏感呢?我们需要允许误分类。通过偏差-方差权衡,就可以选择一个恰当的分界点。
当允许误分类时,分界点和观察点之间的距离,不再称为间隔,而是软间隔(严格来讲,软间隔对应的是线性不可分的情况,但这里因为有明显的异常值,所以还是将其引进)。我们可以通过交叉验证来决定分界点,在此基础上看看多少误分类被允许,确定软间隔的大小,并最终得到最合适的分类器。 - 软间隔分类器就是支持向量分类器,支持向量指的是位于软间隔边缘和内部的观测值,如下图所示
- 以上是一维线上的例子,它的分界点是一个点;如果是二维平面上,那分界就是一维的线;如果是三维空间中,那分解就是二维的线;如果是四维,比如我们加上时间这个维度,那分界就是某个时间点的三维空间,也就是超平面。严格来说,所有的分界,都可以称为超平面。
公式和SVM分类
公式
超平面公式
先看看两个简单的超平面: 二维超平面
三维超平面
d维空间的超平面和二维三维都是一样的,d维空间的超平面维度为(d-1),其超平面公式如下:
其中,ω是超平面的法向量(d维上的列向量),它决定超平面的方向(法向量指向的那一面是它的正面, 另一面则是它的反面)。f(x) = ω * x -b