1

我正在使用 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-regularized logistic regression (dual) ”,那么训练迭代次数超过1000,10倍准确率只有60%。

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

4

3 回答 3

0

感谢您发布此信息!我经常使用 liblinear,并且通常总是不假思索地使用 L2 损失。这篇文章很好地解释了差异: http: //www.chioka.in/differences-between-l1-and-l2-as-loss-function-and-regularization/

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

于 2015-05-25T00:03:53.873 回答
0

在我看来,这不是一种“奇怪”的行为。在您没有任何感觉之前,您必须进行试验以确认哪个更适合您的情况。理论上,L1-regular 是有界的,就像特征选择一样,而 l2-regular 更平滑。

于 2015-05-25T01:48:20.687 回答
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

于 2015-05-25T13:33:37.210 回答