SVM有严格的数学证明,但挺复杂,我仅粗略地写下这篇文章。
用一个二维空间里仅有两类样本的分类问题来举个小例子。假设我们给定了下图左图所示的两类点Class1和Class2(也就是正样本集和负样本集)。我们的任务是要找到一个线,把他们划分开。
显然,只要在两堆数据中划一条线就可以。但划线也有很多种画法:
那到底哪种分法比较好?
SVM试图寻找一个超平面来对样本进行分割,把样本中的正例和反例用超平面分开,但是不是很敷衍地简单的分开,而是尽最大的努力使正例和反例之间的间隔margin最大。
我们的目标是寻找一个超平面,使得离超平面比较近的点能有更大的间距。也就是我们不考虑所有的点都必须远离超平面,我们关心求得的超平面能够让所有点中离它最近的点具有最大间距。
我们先用数学公式来描述下。假设我们有N个训练样本{(x1, y1),(x2, y2), …, (xN, yN)},x是d维向量,而yi∊{+