注:我主要看的是《机器学习实战》这本书
SVM又是复杂的章节,但号称是最好的分类算法,所以不得不看完,断断续续花了两周。(给我两个月也难以精通啊)
还是和以往一样,此书涉及的数学原理实在太少,如果是哪些喜欢问为什么的读者根本就看不下去,我也是其一。
后来又看了很多博客,知乎。又找了《统计学习方法》,专门看支持向量机那一节,才算稍微搞懂,但依旧还有不少疑问。
和往常一样,先分享一下心得,疑问呢先放一放。
本文会讲解一个最最简单的例子,来说明什么是SVM,什么是SMO,其中含拉格朗日乘子等一系列相关数学公式。。。
假设我们有三个点,(3,3),(4,3),(1,1),其中前两个点属于A类(红色),后一个属于B类(蓝色)。要求画一条线,将这两类分开。
那,分割线有非常多种,而下图的那条,则是SVM给出的最优的分割线。
他满足:(3,3),(1,1)两点到此线距离相等,且最大。
而(3,3),(1,1)这两点则被叫做支持向量,对分割线起到支持(决定)作用。
算法会认为(4,3)这个点离的较远,不会对分割线产生效果,有(3,3)这个点足矣。
不得不说,这个结论其实还挺好理解的。但究其背后的数学解法就比较复杂了。
先来说几个概念。
超平面:上图的那个直线方程其实就是超平面。因为给的例子是二维,二维中的分割是直线。三维中的分割是平面,那四维五维呢?不管了,统一叫“超平面”。
超平面的一般方程:
其中b为常数,w和x呢,都是多维的向量。
方便理解,我们还是举上述二维的例子。对二维来说,w含有两个系数,x则表示x坐标和y坐标。(wT表示转制)
所以对二维来说,超平面就是直线方程。例中:x+y-4=0
间隔:点到超平面的距离。(label表示分类,一定要取1或者-1。 1代表A类,-1代表B类)
嗯,继续举例子方便理解。
算一下点(3,3)到x+y-4=0的间隔。
函数间隔是1*2=2,几何间隔则再除一个根号2.
算一下点(1,1)到x+y-4=0的间隔。
函数间隔是-1*-2=2,几何间隔则再除一个根号2.
看到没,神奇不?两个点到这条线的间隔是相等的!(其实二维几何间隔把label去掉,再加一个绝对值的话,就是点到线段的距离公式了。)
下面要讲一堆数学公式了,讲讲怎么求出超平面!非战斗人员请撤离。
SVM的核心数学问题就是求解这么一个数学公式。
我觉得不难理解,从右往左看。
{ }里,右边就是几何间隔,n代表点的数目,我们这里