知乎/回答
2 分钟

支持向量机(SVM)是什么意思?

作者

创建于

发布于知乎/回答

大部分答案都在写公式,我来聊聊直觉上的东西。

设想一下你要做一个分类器,区分狗和炸鸡。首先假定我们只有两个数据,那么这条线会很容易画,自然而然就会画在正中间。

这个时候,我们加入一个新的数据,这个狗跟现有的数据差别很大。这个时候,分类线应该画在哪里?

这就是 SVM 跟其他线性模型很不一样的地方了,SVM 这条分类线不会变化,依然在两者的正中间,但是其他的线型模型,比如 LR,就会偏移一些。

这就是 SVM 一个很好的性质了:**分类的平面,只跟部分数据(support vector)有关,而且是最“相似”,最容易“相互混淆”的那部分数据,与其他的绝大部分数据都无关。**我们移走或者增加那些本身就距离很远的数据,对于分类结果没有改变,但是如果我们能给出更多的“相似”的数据,打上精准的标签,那分类结果就会更精确。

这个性质引申出 SVM 一些很好的特性:

  • 对于数据的要求很低,不要求数据符合什么样的分布,只要存在边界就可以,模糊的边界也可以。
  • 过拟合的概率不高,因为决定那条线的数据量很少。
  • 在抽样的数据上依然会表现的很好。
  • Outlier 对于分类的影响非常小。

SVM 的劣势是作为一个线型模型,分类的边界只能是线型的的,哪怕用了 kernel 升维度,在高维度也是线型的,kernel 的选择对于数据的分布有特定的假设。

Radial Basis Function (RBF) kernel SVM

作为对比,常见的树模型的分类边界就可以是多个线型的叠加组成非常复杂的任意曲线。因此,在实战操作中,树模型比如 XGBoost 还是更容易上手,大概率表现更好一些。

树模型的分类边界