你知道支持向量机(SVM)是什么意思吗?
超级通俗的解释:支持向量机是用来解决分类问题的。先考虑最简单的情况,豌豆和米粒,用晒子很快可以分开,小颗粒漏下去,大颗粒保留。用一个函数来表示就是当直径d大于某个值D,就判定为豌豆,小于某个值就是米粒。d>D, 豌豆d<D,米粒在数轴上就是在d左边就是米粒,右边就是绿豆,这是一维的情况。但是实际问题没这么简单,考虑的问题不单单是尺寸,一个花的两个品种,怎么分类,假设决定他们分类的有两个属性,花瓣尺寸和颜色。单独用一个属性来分类,像刚才分米粒那样,就不行了。这个时候我们设置两个值尺寸x和颜色y.我们把所有的数据都丢到x-y平面上作为点,按道理如果只有这两个属性决定了两个品种,数据肯定会按两类聚集在这个二维平面上。
SVM - support vector machine, 俗称支持向量机,为一种supervised learning算法,属于classification的范畴。在数据挖掘的应用中,与unsupervised的Clustering相对应和区别。
广泛应用于机器学习(Machine Learning), 计算机视觉(Computer Vision) 和数据挖掘(Data Mining)当中。假设我们要通过三八线把实心圈和空心圈分成两类。那么有无数多条线可以完成这个任务。在SVM中,我们寻找一条最优的分界线使得它到两边的margin都最大。
在这种情况下边缘加粗的几个数据点就叫做support vector,这也是这个分类算法名字的来源。We got a bunch of data points in a n- dimensional to infinite-dimensional space, Then one can always find a optimal hyperplane which is always in the n-1 dimension. 我举个例子吧,当你给SVM一段文本,比如“这款手机屏幕很大,我很喜欢”,你想知道这个文本的情感倾向是积极的还是消极的,你把这个文本扔给SVM分类器,SVM会告诉你说它的情感是积极的。但是现在我们多了一个选项,“中立”。
什么是SVM,当然首先看一下wiki. Support Vector Machines are learning models used for classification: which individuals in a population belong where,So… how do SVM and the mysterious “kernel” work,好吧,故事是这样子的:在很久以前的情人节,大侠要去救他的爱人,但魔鬼和他玩了一个游戏。魔鬼在桌子上似乎有规律放了两种颜色的球,说:“你用一根棍分开它们,要求:尽量在放更多球之后,仍然适用。”SVM就是试图把棍放在最佳位置,好让在棍的两边有尽可能大的间隙现在即使魔鬼放了更多的球,棍仍然是一个好的分界线。然后,在SVM 工具箱中有另一个更加重要的trick。魔鬼看到大侠已经学会了一个trick,于是魔鬼给了大侠一个新的挑战。现在,大侠没有棍可以很好帮他分开两种球了,现在怎么办呢,当然像所有武侠片中一样大侠桌子一拍,球飞到空中。然后,凭借大侠的轻功,大侠抓起一张纸,插到了两种球的中间。现在,从魔鬼的角度看这些球,这些球看起来像是被一条曲线分开了。再之后,无聊的大人们,把这些球叫做「data」,把棍子叫做「classifier」, 最大间隙trick 叫做「optimization」,拍桌子叫做「kernelling」, 那张纸叫做「hyperplane」。Support Vector Machine, 一个普通的SVM就是一条直线罢了,用来完美划分linearly separable的两类。但这又不是一条普通的直线,这是无数条可以分类的直线当中最完美的,因为它恰好在两个类的中间,距离两个类的点都一样远。而所谓的Support vector就是这些离分界线最近的『点』。如果是高维的点,SVM的分界线就是平面或者超平面。其实没有差,都是一刀切两块,我就统统叫直线了。