【问题标题】:Limit the number of support vectors in R svm package e1071?限制 R svm 包 e1071 中支持向量的数量?
【发布时间】:2016-06-21 08:57:08
【问题描述】:

我使用包 e1071 中的 svm 函数。据我了解,支持向量机的基本功能可以用超平面(支持向量)分离两个线性可分的类。更高级的功能允许您执行数字回归和非线性分离。 当我开始对一些数据进行测试时,我无法理解为什么模型的输出是大量的支持向量。 当我在一些非常简单的测试示例上运行它时,我得到了相同的结果。这是一个例子:

X = rnorm(1000)
Y = rnorm(1000)
data = data.frame(X, Y, Z = as.factor(X + Y > 0))
model = svm(formula = Z ~ X + Y, data = data, kernel = "linear")

结果如下:

Call:
svm(formula = Z ~ X + Y, data = data, kernel = "linear")


Parameters:
  SVM-Type:  C-classification 
SVM-Kernel:  linear 
  cost:  1 
  gamma:  0.5 

Number of Support Vectors:  102

这个例子显然可以仅由一个支持向量线性分离。如果不相信你可以运行:

ggplot(data, aes(X, Y, col = Z)) + geom_point()

102个支持向量是什么意思?为什么支持向量的数量不是参数?

谢谢

【问题讨论】:

    标签: r svm


    【解决方案1】:

    soft-marginhard-margin svm 之间存在区别。这由成本参数控制,该参数惩罚支持向量被允许违反边际约束的程度。因此,只有在成本参数(非常)大的情况下,您才会获得最少数量的支持向量(三个而不是一个)。尝试成本参数 > 10000 的示例值,您将获得三个支持向量。

    【讨论】:

    • 感谢您的回答。确实,一个巨大的成本函数给了我想要的 3 个向量(我忘记了边距)。您能否详细说明为什么在明显线性可分的变量的情况下我们得到超过 3 个向量?是因为其他向量产生的成本函数的目标值足够接近最小成本吗?
    • 随着成本的降低,保证金会随着越来越多的点现在位于边缘区域而增加。边缘区域中的点越多,您拥有的支持向量就越多。
    猜你喜欢
    • 1970-01-01
    • 2013-07-25
    • 2011-11-15
    • 2018-09-04
    • 2011-11-09
    • 2016-03-13
    • 2015-02-08
    • 2015-06-20
    • 2023-03-15
    相关资源
    最近更新 更多