这是一个游戏,参加游戏的人是小A和小B。小A在桌子上放了两种颜色的球,然后对小B说:你能用一根棍把它们分开吗?
随后,小B看了一眼,感觉很容易实现,抬手就搞定了:
然后,小A又在桌上放了更多的球,似乎有一个球站错了阵营。
这时,小B轻轻调整棍子,又一次分开了两种颜色的小球。
小A看难不倒小B,于是增加了游戏的难度:
小B静静地看了一会儿,然后大吼一声,用掌拍向桌子,球飞到空中。说时迟那时快,小B抓起一张纸,插到了两种球的中间。
此时小A看呆了,从空中的角度看这些球,这些球看起来像是被一条曲线分开了。
这个小游戏就是一个分类问题。当数据是线性可分的,也就是用一根棍就可以将两种小球分开的时候,只要将棍的位置放在让小球距离棍的距离最大化的位置即可,寻找这个最大间隔的过程,就叫做最优化。
但是,现实往往是很残酷的,一般的数据是线性不可分的,也就是找不到一个棍将两种小球很好的分类。这个时候,我们就需要像小B一样,将小球拍起,用一张纸代替小棍将小球进行分类。想要让数据飞起,我们需要的东西就是核函数(kernel),用于切分小球的纸,就是超平面。