我正在使用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%,每个iter在几秒钟内完成。 但如果我使用“-s 7”,即“ L2正则化逻辑回归(对偶)”,那么训练迭代超过1000,而10倍精度仅为60%。
有没有人见过这种奇怪的行为?根据我的理解,L1和L2之间的唯一区别是正则化项是使用abs(x)还是pow(x,2)。
答案 0 :(得分:0)
感谢您发布此内容!我经常使用liblinear,并且通常总是在不假思索地使用L2损失。本文解释了差异:http://www.chioka.in/differences-between-l1-and-l2-as-loss-function-and-regularization/
基于此,我猜测您不仅拥有少量功能,还可能拥有小型数据集?您是否尝试增加输入点的数量?
答案 1 :(得分:0)
在我的糟糕看法中,不认为这是一种“奇怪”行为。在你没有任何意识之前,你必须进行试验以确认哪一个适合你的情况。从理论上讲,L1-regular是有界的,就像特征选择一样,而l2-regular则更加平滑。
答案 2 :(得分:0)
我刚刚意识到LIBLINEAR提供了两个逻辑回归分类器:
0 -- L2-regularized logistic regression (primal)
7 -- L2-regularized logistic regression (dual)
我使用的是7,即使在1000次迭代后也没有收敛。 在我切换到0之后,它收敛得非常快,并且能够达到约70%的准确度。
我认为双重与原始主要是优化方法的差异,所以我认为这可能是一些数值计算问题。
有关双重形式与原始形式的更多信息: https://stats.stackexchange.com/questions/29059/logistic-regression-how-to-get-dual-function
答案 3 :(得分:0)
基本上,我们添加一个正则化项,以防止系数非常适合过度拟合。
L1和L2之间的差是L1是权重之和,而L2只是权重平方的和。
L1不能用于基于梯度的方法,因为它与L2一样不可微分
L1有助于在稀疏特征空间中执行特征选择。特征选择是要了解哪些特征有用和哪些冗余。
它们的属性之间的差异可以概括为:
L2:由于解析解决方案,输出稀疏且没有特征选择而计算效率高
L1:由于稀疏解决方案,稀疏输出和完成特征选择而导致计算效率低下