我正在使用LIBLINEAR训练一个简单的逻辑回归分类器。只有3个功能,并且标签是二进制0-1。

输入文件样本:

1   1:355.55660999775586    2:-3.401379785      3:5
1   1:252.43759050148728    2:-3.96044759307    3:9
1   1:294.15085871437088    2:-13.1649273486    3:14
1   1:432.10492221032933    2:-2.72636786196    3:9
0   1:753.80863694081768    2:-12.4841741178    3:14
1   1:376.54927850355756    2:-6.9494008935     3:7


现在,如果我使用“ -s 6”,即“ L1正则逻辑回归”,那么10倍交叉验证的准确性约为70%,并且每次迭代都在几秒钟内完成。
但是,如果我使用“ -s 7”(即“ L2-正则逻辑回归(对偶)”),则训练迭代次数将超过1000,而10倍精度仅为60%。

有人看到过这种奇怪的行为吗?根据我的理解,L1和L2之间的唯一区别是正则项是使用abs(x)还是pow(x,2)。

最佳答案

感谢您发布!我经常使用liblinear,通常总是不加思索地使用L2损失。本文在解释差异方面做得很好:http://www.chioka.in/differences-between-l1-and-l2-as-loss-function-and-regularization/

基于此,我猜测您不仅具有少量功能,而且可能还具有少量数据集?您是否尝试过增加输入点的数量?

关于machine-learning - liblinear L1与L2 Logistic回归性能差异,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30429546/

10-12 21:59