C++,python,热爱算法和机器学习
全部博文(1214)
分类: IT业界
2017-12-14 11:42:49
作者:鲁伟
一个数据科学践行者的学习日记。数据挖掘与机器学习,R与Python,理论与实践并行。个人公众号:数据科学家养成记 (微信ID:louwill12)
接着前面朴素贝叶斯、贝叶斯网络和神经网络算法之后,笔者继续往后学习了其他分类算法,本期给大家介绍声名斐然的SVM,也就是支持向量机(Support Vector Machines)算法。不过说实话,这东西确实不好弄懂,更不好跟大伙解释清楚,所以写起来更不容易。在断断续续硬啃了几天理论和公式之后,就去CSDN和知乎专栏上各种转悠。终于,笔者点开了reddit上一个关于SVM的帖子 Please explain Support Vector Machines (SVM) like I am a 5 year old ,又参考了知乎用户关于这个帖子的解释,便也把这个帖子拿来和大家一起看看,怎样才能像一个机器学习老司机一样跟人解释SVM。
原文是这样的:
一名用户问如何才能像老司机一样解释SVM,另一名用户就做了如下回答:
比方说现在桌子上有两种颜色(红色和蓝色)的球需要分类(如图),我们有一根棍子作为工具,如何才能准确的分类呢?
于是你眼睛一瞧,便不假思索的将棍子往中间一放,心想这还不简单?
正当你沾沾自喜的时候,不知从哪走过来一帮坏蛋,他们往桌子上放了更多的球,这时候你的棍子勉强能将红球和蓝球分开,但还是有一个红球被错分到了蓝球阵营。
所以SVM便是将你手上的棍子放在最佳位置,这个最佳位置使得棍子两边的分类球有着最大的间隔。
所以现在即使这帮坏蛋往桌子上放更多的球,你放的棍子仍然是一个比较好的分类器。
但SVM的精髓远不止于此。这些坏蛋们看到你已经掌握了划分的技巧,便提高了问题的难度,于是对于你来说新的挑战来了:两种颜色的球被混合到一起了。
嘿!这下好玩了,世上可没有哪种棍子能将上面的球分开了。你看着手中的棍子绞尽脑汁的思考着,忽然你灵机一动,猛地一拍桌子,所有的球顿时都飞到了空中,说时迟那时快,你闪电般的抄起一张纸,刷的一下就飞到两种球中间,成功的将两种球分开了。
现在站在这些坏蛋的角度看,这些球就好像被一条曲线给分开了。
再后来,便有了现在大名鼎鼎的SVM算法。这些球被称为数据,当时你手上的棍子被称之为分类器,使得棍子两边间隔最大叫做最优化,拍桌子那个技术被叫做核技术,那张被你抄向空中的纸叫做超平面,棍子由直线变成曲线便叫做软化。
怎么样?对看起来很高深的SVM算法是不是明白点什么了?笔者也不想说枯燥的定理和公式,便千辛万苦找到了这篇文章,结合着前辈们的解释就给译过来了。当然了,这里只是简化理解一下SVM,具体SVM的理论内核,如何计算实现,还由各位去补充机器学习算法知识啦。