【发布时间】: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个支持向量是什么意思?为什么支持向量的数量不是参数?
谢谢
【问题讨论】: