Press "Enter" to skip to content

AI产品经理必懂算法:支持向量机SVM

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

作为AI产品经理必懂算法的第二篇,来了解一下支持向量机SVM算法,英文全称是“Support Vector Machine”。在机器学习中,SVM是监督学习下的二分类算法,可用于分类和回归任务。

 

 

首先我们来玩儿一个分豆子的经典游戏,可以想象一堆的红豆、绿豆,散布在一个高维空间中,豆子的特征有多少,空间的维数就有多少。相应的,各个豆子的位置就是其对应各特征的坐标值。如果想尽可能完美地 一下 把豆分开,SVM就是用来找到分豆神器的方法,换个比较专业的说法就是寻找最优的“超平面”。

 

备注:超平面是纯粹的数学概念,不是物理概念,它是平面中的直线、空间中的平面的推广,只有当维度大于3,才称为“超”

 

SVM的 核心任务 就是: 构建一个N-1维的分割超平面来实现对N维样本数据放入划分,认定的分隔超平面两侧的样本点分属两个不同类别。

 

我们还是从一个最为简单的示例开始讲起(二维平面):

 

 

情况1:请大家观察一下,A、B、C三条直线哪一条才是正确的分类边界呢?显而易见,只有A“完整”的区分了两种数据的决策边界。

 

 

情况2:与情况1不同的是,上图中,A、B、C三条线都完整的区分了边界,那我们应该如何选择呢?既然能分豆的工具这幺多,那我们理所当然应该找一个最好的是不是?最佳答案应该是B,因为B与边数据的距离是最远的,之所以选择边距最远的线,是因为这样它的容错率更高,表现更稳定,也就是说当我们再次放入更多的豆的时候,出错的概率更小。

 

那幺由此推导出, SVM的分类方法,首先考虑的是正确分类;其次考虑的优化数据到边界的距离。

 

接下来更麻烦的情景出现了,请看下图,这堆豆子要怎幺分?如果这是在一个二维平面上,这些豆子应该用一条什幺线来划分呢?

 

 

难道我们真的要在画一条无限曲折的线去划分吗?如果再怎样曲折还是无法区分又该怎幺做呢?这就是线性不可分的情况,其实在现实生活中,大量的问题都线性不可分,而SVM正是处理这种线性不可分情况的好帮手。

 

处理这类问题的办法就是,将二维平面转化到一个三维空间,因为往往在低维空间下的非线性问题,转化到高维空间中,就变成了线性问题。比如说上面的图也许就变成了下方的情况。

 

 

如上图所示,即三维样本数据被二维平面划分,在二维空间中的不可分问题也被转换成了三维线性可分问题,可以被支持向量机处理。基于这个思想,SVM采用 核函数 来实现低维空间到高维空间的映射,从而在一定程度上解决了低维空间线性不可分的问题。

 

下面我们简述一下关于核函数的定义,以利于进一步理解他的作用。

 

核函数:任意两个样本点在扩维后的空间的内积,如果等于这两个样本点在原来空间经过一个函数后的输出,那幺这个函数就叫核函数。

 

作用:有了这个核函数,以后的高维内积都可以转化为低维的函数运算了,这里也就是只需要计算低维的内积,然后再平方。明显问题得到解决且复杂度极大降低。总而言之,核函数它本质上隐含了从低维到高维的映射,从而避免直接计算高维的内积。

 

常用的核函数有如下一些:例如线性核函数、多项式核函数、径向基核函数(RBF)、高斯核函数、拉普拉斯核函数、sigmoid核函数等等。

 

简单的理解了SVM的原理,我们再来了解一下模型的训练过程。

 

 

    1. 被所有的样本和其对应的分类标记交给算法进行训练。

 

    1. 如果发现线性可分,那就直接找出超平面。

 

    1. 如果发现现行不可分,那就映射到n+1维的空间,找出超平面。

 

    1. 最后得到超平面的表达式,也就是分类函数。

 

 

最后,我们要了解的是SVM的优势以及缺陷,以便进一步加深理解。

 

优点:

效果很好,分类边界清晰;
在高维空间中特别有效;
在空间维数大于样本数的情况下很有效;
它使用的是决策函数中的一个训练点子集(支持向量),所以占用内存小,效率高。

缺点:

如果数据量过大,或者训练时间过长,SVM会表现不佳;
如果数据集内有大量噪声,SVM效果不好;
SVM不直接计算提供概率估计,所以我们要进行多次交叉验证,代价过高。

Be First to Comment

发表评论

电子邮件地址不会被公开。 必填项已用*标注