我正在使用库e1071在R中训练SVM模型,在此我更改了成本函数并观察了所得支持向量的数量。
library("e1071")
library("mlbench")
data(Glass, package="mlbench")
svm.model <- svm(Type ~ ., data = Glass, cost = 0.00100, gamma= 1)
sum(svm.model$nSV)
#[1] 208
svm.model <- svm(Type ~ ., data = Glass, cost = 1, gamma= 1)
sum(svm.model$nSV)
#[1] 183
svm.model <- svm(Type ~ ., data = Glass, cost = 100000, gamma= 1)
sum(svm.model$nSV)
#[1] 172
我的问题如下:
此处的成本参数是否等于软裕量SVM的双重Lagrange公式中的C参数?
如果这些参数相同,那么我们不应该观察到越来越多的支持向量吗?
“但是,在这里,就像在任何正则化方案中一样,至关重要的是为惩罚因子C选择一个合适的值。如果太大,对不可分离点的惩罚就很高,我们可能会存储很多支持向量和过度拟合如果它太小,我们可能不合身。”
Alpaydin(2004),第224页
给出的示例表明,成本参数越大,我们得到的支持向量就越少。那么,这里出了什么问题?
[编辑1]我与上述图书馆的编辑交换了一些电子邮件,他举了一个反例。
“基本上,是的,但这不是线性的,请尝试:”
N = sapply(1:1000,function(i)svm(Species〜。,data = iris,cost = i)$ tot.nSV)
积(N)
最佳答案
我从库创建者那里得到了这个答案:基本上是的,但这不是线性的,请尝试:AND = sapply(1:1000,function(i)svm(Species〜。,data = iris,cost = i)$ tot。 nSV)图(N)
关于r - SVM:成本参数VS。支持向量数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27401105/