algorithm - SVM - 硬边距还是软边距?

标签 algorithm machine-learning svm

给定一个线性可分的数据集,使用硬间隔 SVM 一定比使用软间隔 SVM 更好吗?

最佳答案

即使训练数据集是线性可分的,我也希望 soft-margin SVM 会更好。原因是在 hard-margin SVM 中,单个异常值可以确定边界,这使得分类器对数据中的噪声过于敏感。

在下图中,单个红色异常值本质上决定了边界,这是过拟合的标志

enter image description here

要了解 soft-margin SVM 在做什么,最好在对偶公式中查看它,您可以看到它与 hard- margin SVM,但有一个额外的约束,即与支持向量相关联的每个拉格朗日乘数以 C 为界。本质上,这限制了任何单点对决策边界的影响,推导参见 Cristianini/Shaw-Taylor 的“An Introduction”中的 Proposition 6.12支持向量机和其他基于内核的学习方法”。

结果是 soft-margin SVM 可以选择具有非零训练误差的决策边界,即使数据集是线性可分的,并且不太可能过拟合。

这是一个在综合问题上使用 libSVM 的示例。带圆圈的点表示支持向量。您可以看到,降低 C 会导致分类器牺牲线性可分性以获得稳定性,从某种意义上说,任何单个数据点的影响现在都受 C 的限制。

enter image description here

支持向量的含义:

对于硬边距 SVM,支持向量是“在边距上”的点。在上图中,C=1000 非常接近 hard-margin SVM,你可以看到圈出的点是会触及 margin 的点(图中 margin 几乎为 0,所以它与分离超平面本质上是一样的)

对于 soft-margin SVM,用对偶变量来解释它们更容易。就双变量而言,您的支持向量预测器是以下函数。

enter image description here

这里,alphas 和 b 是在训练过程中找到的参数,xi's, yi's 是你的训练集,x 是新的数据点。支持向量是包含在预测变量中的训练集中的数据点,即具有非零 alpha 参数的数据点。

关于algorithm - SVM - 硬边距还是软边距?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4629505/

相关文章:

python - 搜索长的连续重复子串

python - 如何提取/剪切模型分类的部分图像?

machine-learning - JMegahal 的替代品

python - 如何使用 TF-IDF 构建单词 n-gram 的训练向量

c++ - libsvm c++ 教程

python - 如何标准化和标准化字符串数据

c++ - 哪个更好地检查 std::string 中是否存在字符?查找还是 find_first_of?

java - 改进 Mitchell 的最佳候选算法

python - 图像分类模型的网格搜索超参数

python - 测试准确率得分高于GridSearchCV中的最佳得分