使用 libsvm 的最大边距线性分隔符

max-margin linear separator using libsvm

我有一组带有 +/- 标签的 N 个数据点 X,我想为其计算最大边距线性分隔符(也称为分类器、超平面),或者如果不存在这样的线性分隔符则失败。

我不想在这个问题的上下文中避免过度拟合,就像我在其他地方所做的那样。所以没有松弛变量;没有交叉验证;支持向量的数量没有限制;只找到最大边距分隔符或失败。

如何使用 libsvm 执行此操作?我相信你不能在 C-SVM 中给出 c=0,也不能在 nu-svm 中给出 nu=1。

相关问题(我认为没有提供答案): Which of the parameters in LibSVM is the slack variable?

在 C-SVM 的情况下,您应该使用线性内核和非常大的 C 值(或 nu = 0.999...对于 nu-SVM)。如果你对这个设置仍然有懈怠,可能你的数据不是线性可分的。

快速解释:C-SVM 优化函数试图同时找到具有最大间隔和最低误分类成本的超平面。 C-SVM 公式中的误分类成本定义为:从误分类点到超平面正确一侧的距离乘以 C。如果增加 C 值(或 nu-SVM 的 nu 值),每个误分类点都会成本太高,完美分离数据的超平面将更适合优化函数。