svm算法最通俗易懂讲解(AI产品经理必懂算法)
作为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的原理,我们再来了解一下模型的训练过程。
- 被所有的样本和其对应的分类标记交给算法进行训练。
- 如果发现线性可分,那就直接找出超平面。
- 如果发现现行不可分,那就映射到n 1维的空间,找出超平面。
- 最后得到超平面的表达式,也就是分类函数。
最后,我们要了解的是SVM的优势以及缺陷,以便进一步加深理解。
优点:
- 效果很好,分类边界清晰;
- 在高维空间中特别有效;
- 在空间维数大于样本数的情况下很有效;
- 它使用的是决策函数中的一个训练点子集(支持向量),所以占用内存小,效率高。
缺点:
,
- 如果数据量过大,或者训练时间过长,SVM会表现不佳;
- 如果数据集内有大量噪声,SVM效果不好;
- SVM不直接计算提供概率估计,所以我们要进行多次交叉验证,代价过高。
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。