0
我在包e1071中使用了svm函数。据我所知,svm基本功能可以用超平面(支持向量)分隔两个线性可分类的类。更高级的功能允许您执行数字回归和非线性分离。 当我开始对一些数据进行测试时,我无法理解为什么模型的输出是一组巨大的支持向量。 当我在一些非常简单的测试示例上运行它时,我得到了相同的结果。下面是一个例子:限制R svm package e1071中支持向量的数量?
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支持向量是什么意思?为什么支持向量的数量不是一个参数?
感谢
感谢您的回答。事实上,一个巨大的成本函数为我提供了所需的3个向量(我忘了边际)。你能否详细说明为什么我们在明显线性可分的变量情况下得到3个以上的向量?是否因为其他向量为成本函数产生一个客观价值,足以接近最低成本? – eaglefreeman
随着成本的降低,保证金的增加会导致越来越多的宝贝现在躺在边缘区域。边缘区域的点越多,支撑向量就越多。 – DatamineR