支持向量机(SVM)是什么意思?
大部分答案都在写公式,我来聊聊直觉上的东西。
设想一下你要做一个分类器,区分狗和炸鸡。首先假定我们只有两个数据,那么这条线会很容易画,自然而然就会画在正中间。

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

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

这就是 SVM 一个很好的性质了:分类的平面,只跟部分数据(support vector)有关,而且是最“相似”,最容易“相互混淆”的那部分数据,与其他的绝大部分数据都无关。我们移走或者增加那些本身就距离很远的数据,对于分类结果没有改变,但是如果我们能给出更多的“相似”的数据,打上精准的标签,那分类结果就会更精确。
这个性质引申出 SVM 一些很好的特性:
- 对于数据的要求很低,不要求数据符合什么样的分布,只要存在边界就可以,模糊的边界也可以。
- 过拟合的概率不高,因为决定那条线的数据量很少。
- 在抽样的数据上依然会表现的很好。
- Outlier 对于分类的影响非常小。
SVM 的劣势是作为一个线型模型,分类的边界只能是线型的的,哪怕用了 kernel 升维度,在高维度也是线型的,kernel 的选择对于数据的分布有特定的假设。

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

树模型的分类边界
继续阅读
全部内容有哪些方法可以帮助AB测试显著更快一些?
方法是有不少的,比较常见的一个方向是做方差缩减(Variance Reduction[1])。这里分享一篇来自 Netflix KDD 2016 年的文章 Improving the Sensitivity of Online Controlled Experiments: Case Studies at Netfli...
如何看待深度学习中不分验证集?
这就是典型的 overfitting 嘛,自欺欺人地刷数据。有限数据,天赋异禀,看着训练集,靠着随机函数丢硬币丢出完美符合的测试集的 if-else,拿到完美指标。刷就是了。 不过这是所有公开数据集都难以避免的,毕竟所有的数据都开放了,只要数据有限,不管怎么分,总有可能过拟合。所以刷数据的论文主要是看个 insight...
如何评价 KNN 算法?
K-NN 算法好啊,特别是深度学习出来后万物皆可 Embedding,几乎啥问题都可以转换成为两者 Embedding 的相似度问题,不管是分类、回归、排序等等,Embedding + K-NN 打分简单易行。 而且 K-NN 线上服务也特别好做,简单,速度快。如果 Embedding 数量特别多,也有很多近似 K-N...

