机器学习-线性L1与L2逻辑回归性能差异



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

感谢发帖!我经常使用线性,通常总是不加思考地使用L2损耗。本文很好地解释了它们的区别:http://www.chioka.in/differences-between-l1-and-l2-as-loss-function-and-regularization/

基于此,我猜你不仅有少量的特征,而且可能有一个小的数据集?你是否尝试过增加输入点的数量?

我不认为这是一个'奇怪'的行为。在你没有任何感觉之前,你必须试着确认哪一个更适合你的情况。理论上,L1-regular和特征选择一样是有界的,而l2-regular更平滑。

我刚刚意识到liblilinear提供了两个逻辑回归分类器:

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

相关内容

  • 没有找到相关文章

最新更新