我正在使用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/