携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第13天,点击查看活动详情
支持向量机(Support Vector Machines,SVM)是一种二元分类算法,可以用来寻找最优分类边界。它的优点是计算效率高、泛化能力强。
支持向量机可以通过计算一条最佳分界线,把数据点分为两组。这件事听起来很简单,其实并非如此,难点是找到最佳分界线。
最佳分界线
之所以要找最佳分界线,是因为,将数据点进行分组的分界线可能有多条,找到最佳分界线能够帮助研究者能从数据中发现更多的模式或者现象。
最佳分界线是这样找到的:
- 从每一组中找到距离另一组最近的外围的数据点
- 根据两组的外围数据点,画出最佳分界线
支持向量
因为这些数据点在找到最佳分界线的过程中起到了支持作用,因此他们也叫做支持向量。也就是说,支持向量(support vector)指的就是离最佳分界线最近的那些点。
通过支持向量来寻找最佳分界线,带来的好处是,它的计算速度会比回归分析快得多,因为支持向量机只需要考虑支持向量,而回归分析需要考虑所有的数据点,计算量会低很多。
但同时,这也带来了一些缺陷:计算结果对支持向量的位置要更敏感,不同的训练数据,支持向量的位置也不同,最终得到的最佳分界线的也是不同的。而且,实际情况中,数据点的分解并不如上图中所示的那么明显。
缓冲带
考虑到实际数据的特征,支持向量机提供了一个「缓冲带」,也就是,它允许一些训练数据点落在分界线的错误一边,这样分界线就不那么敏感,且有一定的容错性,不会受到噪音数据的干扰。
缓冲带的宽容度由惩罚参数控制。惩罚参数越大,缓冲带就越宽容。想要找到合适的惩罚参数,可以用交叉验证的方法。
处理复杂情况
以上的介绍,我们都假定数据在一个二维平面中,而且都是现行可分的。如果我们不能使用直线将数据点分开时,比如下图中的这些情况,该怎么处理呢?
找到分界线的凸弧也是支持向量机的强项之一。他不会直接把这种分界线画出来,而是使用一种叫做核函数(也叫核技巧) 的工具,将数据映射到高维空间,使其更容易被分类起理解,然后在高维空间中,将数据点用一条更易于计算的直线分开,最后,再映射回低维度空间中,转换成曲线。
核函数的作用就是,将一个在低维度空间中的非线性问题,转换成高维度空间中的线性问题。
前文中,我们一直把分类的边界叫做分界线,是基于数据点都是二维向量的情况。由于数据都在二维平面上,因此他们可以被一条线分开,如果数据集是三位的,那么分割数据的就是一个面。更高维度的情况以此类推。因此也可以将分割线叫做分割超平面,被分类的两组数据点分别分布在超平面的两边。
总结
- 支持向量机常用于将数据点分为两组,并找到最优分界线。
- 它有很好的容错性,泛化能力强。
- 支持向量机做能将数据分成两组,如果需要将数据集分为更多组,那么可以多次使用支持向量机,把每一个分类单独找出来。