我想在 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++ 实现检查了相同的示例,结果权重按预期翻转了它们的符号。