2

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

4

0 回答 0