边缘检测程序员机器学习学社

SVM纯讲解(无数学公式讲解)

2019-01-10  本文已影响38人  一枚不只关注技术的技术宅

SVM(Support Vector Machine)在理论上是一个近乎完美的算法,这也是为什么在学习机器学习时SVM是必学算法。今天我就继续来为大家用尽量不提及数学理论的方式来讲讲SVM。

2个类别的多种分类方式

SVM的原理十分易于理解,以2-Class的分类问题为例,如上图所示,我们有可以画出无数条线性边界来划分两个类别。而SVM所寻找的决策边界,是所有边界中的最优解。何为最优解?即决策边界到两个类别的距离之和最大,如下图所示。相对其他边界而言,SVM寻找出的边界从理论上来讲是两种类别的最优分割边界,只要数据足够有代表性,那么理论上SVM所划分的类别一定是最优的,这也是前边我说SVM理论上是近乎完美的算法。

最优边界

然而在实际问题之中,由于数据的复杂性、特征之间的相互关系等问题,线性边界的分类效果往往很差。针对这个问题,SVM中引入了核函数(Kernel Function)的概念。核函数,简单来说,是在数据的每一类中选定一组点(称为Landmark点),然后计算每一个数据点与这个Landmark点的相似度,这种相似度的定义方式就称为核函数。通常我们所选取的计算相似度的方式采用高斯公式,因此这种核函数称为高斯核函数(Gaussian Kernel Function),除此之外还有高幂核函数(Polynomial Kernel Function)。

这里有几个问题需要指出:

1. 如何选取Landmark点

训练集中的每一个点都需要被当成Landmark点,即假设训练集中有(A,B,C,D,E)五个点,当把A作为训练对象时,BCDE四个点均为Landmark点,此时要分别计算A点与BCDE四点的相似度,然后分别乘以对应的θ值(该值为提前预设,并在模型训练的过程中不断更新)并相加,当最后的和大于等于0时,我们把A点归类为y=1,否则归类为y=0。在此多提一点,SVM的训练过程,就是不断寻找θ最小值的过程。

2. 何时选用何种核函数

通常情况下,在数据的特征数量N较大,数据行数M较小时,使用线性核函数(即无核函数);在N较小,M较大时,使用高斯核函数;但当N较小,M过大时,则应先利用特征工程创建一些特征,然后使用线性核函数。

3. 以上选用核函数的方法,原理是什么?

当N较大(N >= 10000),M较小(M = 10~1000)时,可以理解为M个人各有N个兴趣爱好,当人数较少但每个人的兴趣爱好较多时,很容易便可以根据兴趣爱好将人分类,也就是说找到线性分类的方式较为容易;而当N较小(N = 10~100),M较大时(M >= 10000),此时拥有共同兴趣爱好的人过多,没有办法仅仅依据兴趣爱好是否相同来分类,因此需要考虑兴趣爱好(即特征)之间的相关性。如:A喜欢足球和乒乓球,B喜欢篮球和橄榄球,这时我们可以寻找足球、乒乓球、篮球及橄榄球之间的相似性,从而将A和B划分为同一类。但是这种情况下,我们用到的不再是已有的特征,而是根据经验找到的4种特征之间的内在联系,因此这种情况是无法用线性边界来分类的,故应使用高斯核函数;但是当N较小(N = 10~100)且M值又过大(M >= 50000)时,过少的兴趣爱好种类已不足以对如此多的人数进行精准分类,因此需要再引入新的兴趣爱好来制定分类规则,而通常情况下,我们会使用特征工程的方式来创建新的特征,该种方式创造出的新特征已经具备了挖掘特征内在关系的特点,相当于是把数据中的非线性关系拿出来做成了线性关系,此时寻找数据的线性分类边界便更为容易,因此使用线性核函数。

小结

核函数是SVM中特有的概念,而理解了核函数后就不难发现,SVM计算量大的根本所在,就是对于每一个点,都需要计算一遍与其他所有点的相似度,而SVM本身的特点又决定了特征数量与数据点的数量相差不能够太多,因此当数据量很庞大时SVM的计算效率会非常之低。

由于SVM的局限性,导致其目前只能用于一些简单的、数据量较小的问题,但是往往这些问题又可以用逻辑回归来解决。虽然在这些问题上,SVM与逻辑回归的效果相差不多,但由于逻辑回归在行业内的成熟度以及分析种类的多样性,使得大家还是更倾向于使用逻辑回归。而在复杂的问题上,程序员们往往更倾向于效果更好、速度更快的集成算法,如随机森林和XGBoost。

最重要的放在最后

对于我们来说,SVM在机器学习/数据挖掘的面试当中实在是经典中的经典,从SVM的基本原理到SVM的优化方式都是面试官非常喜欢问的问题。到目前为止,我还没有见过任何一个讲机器学习算法的书籍、课程、大学不提及SVM,而且几乎所有的从业者也都对SVM有着比较深入的理解。我个人认为,SVM中的细节问题实在太多,面试官可以利用SVM来考察面试者的数学功底以及对机器学习算法理解的程度。SVM可以说是一块试金石,可以让面试官在较短的时间内摸清面试者的知识水平;SVM同时也是一块敲门砖,可以帮助面试者叩开公司的大门。

想成为一名合格的机器学习工程师吗?微信关注公众平台“机器学习学社”获取每天一份的新鲜咨询,为你开拓属于你自己的AI之路

微信扫码关注机器学习学社
上一篇下一篇

猜你喜欢

热点阅读