最近在Reddit上面看到一篇帖子——Please explain Support Vector Machines (SVM) like I am a 5 year old.,感觉非常有意思,刚好对支持向量机也不大懂,就学习了一下。这篇文章算是学习心得吧。

桌子上似乎有规律放了两种颜色的球,要求用一根棍子将它们分开,并且尽量在放更多球之后,仍然适用。 蓝球和红球

我们这样放,似乎问题不大?
蓝球和红球+棍子

但是这样的放置方式,在添加更多的球后,会有分类错误的情况。
蓝球和红球+棍子+更多的球

SVMs就是试图把棍放在最佳位置,好让在棍的两边有尽可能大的间隙。
蓝球和红球+SVM棍子

现在即使添加了更多的球,仍然可以用原先的棍子进行分类。
蓝球和红球+SVM棍子+更多的球

这时候,新挑战来了。
新挑战

看上去似乎没有办法进行分类了,怎么办呢?我们把桌子一拍,球飞到空中。然后一招梯云纵,抓起一张纸,插到了两种球的中间。
新挑战+stick

现在,从原来的维度看这些球,这些球看起来像是被一条曲线分开了。
新挑战+stick+2D

这些球就是“data”,棍子——“classifier”,最大间隙trick叫做“optimization”,拍桌子叫做“kernelling”, 纸叫做“hyperplane(超平面)”。


SVM三宝:间隔(margin),对偶,核技巧。

SVM: hard-margin SVM, soft-margin SVM, kernel SVM.

SVM最早用于二分类问题。

  • Max-margin 最大间隔分类器

to be continued.