我想在R中使用LiblineaR库,这对大型数据集有效。 (我想在wieghts上使用l1-norm进行特征选择,但与此问题无关)。我观察到的是,即使改变了类标签,重量也没有。这是一个例子;
x <- rbind(cbind(rnorm(100),rnorm(100)), cbind(rnorm(100,3), rnorm(100,3)))
y <- c(rep(1,100), rep(-1,100))
m <- LiblineaR(x,y)
m$W
W1 W2 Bias
[1,] -1.238046 -1.437913 3.86309
y2 <- c(rep(-1,100), rep(1,100))
m2 <- LiblineaR(x,y2)
m2$W
W1 W2 Bias
[1,] -1.238046 -1.437913 3.86309
因此,即使在翻转标签后,重量也保持不变。这对于特征选择是有问题的。
为什么会出现这种情况?
如果使用来自库e1071的svm,则原始权重(使用自定义函数计算)按预期翻转。
更新:我使用liblinear的c ++实现检查了相同的示例,结果权重按预期翻转了它们的符号。