w 支持向量机: Maximum Margin Classifier by pluskid, on 2010-09-08, in Machine Learning 84 comments 支持向量机即 Support Vector Machine,简称 SVM
我最开始听说这头机器的名号的时候,一种神秘感就油然而生,似乎把 Support 这么一个具体的动作和 Vector 这么一个抽象的概念拼到一起,然后再做成一个 Machine ,一听就很玄了
不过后来我才知道,原来 SVM 它并不是一头机器,而是一种算法,或者,确切地说,是一类算法,当然,这样抠字眼的话就没完没了了,比如,我说 SVM 实际上是一个分类器 (Classifier) ,但是其实也是有用 SVM 来做回归 (Regression) 的
所以,这种字眼就先不管了,还是从分类器说起吧
SVM 一直被认为是效果最好的现成可用的分类算法之一(其实有很多人都相信,“之一”是可以去掉的)
这里“现成可用”其实是很重要的,因为一直以来学术界和工业界甚至只是学术界里做理论的和做应用的之间,都有一种“鸿沟”,有些很 fancy 或者很复杂的算法,在抽象出来的模型里很完美,然而在实际问题上却显得很脆弱,效果很差甚至完全 fail
而 SVM 则正好是一个特例——在两边都混得开
好了,由于 SVM 的故事本身就很长,所以废话就先只说这么多了,直接入题吧
当然,说是入贴,但是也不能一上来就是 SVM ,而是必须要从线性分类器开始讲
这里我们考虑的是一个两类的分类问题,数据点用 x 来表示,这是一个 n 维向量,而类别用 y 来表示,可以取 1 或者 -1 ,分别代表两个不同的类(有些地方会选 0 和 1 ,当然其实分类问题选什么都无所谓,只要是两个不同的数字即可,不过这里选择 +1 和 -1 是为了方便 SVM 的推导