如何使用没有正则化的逻辑回归更好?

机器算法验证 物流 分类 数据挖掘
2022-03-17 08:16:58

我正在使用这个 Java 机器学习库:https ://sites.google.com/site/qianmingjie/home/toolkits/laml

从我使用逻辑回归的图书馆:http ://web.engr.illinois.edu/~mqian2/upload/projects/java/LAML/doc/ml/classification/LogisticRegression.html

此类支持 4 种类型的正则化:

  • 0:无正则化
  • 1:L1正则化
  • 2:L2^2 正则化
  • 3:L2正则化
  • 4:无穷范数正则化

您基本上使用以下代码创建了一个正则回归对象:

int regularizationType = 1;
double lambda = 0.1;
Classifier logReg = new LogisticRegression(regularizationType, lambda);

当我尝试它时,我注意到了这个奇怪的事情:

据我所知,正则化的想法是让权重尽可能小,因此使用 lambda 会惩罚大权重。所以应该使用一个大的 lambda 来进行正则化。但是,当我使用带有 a 的 L1 正则化时lambda=1,性能比使用lambda=0.0001. 实际上我得到的最好性能是我使用的时候lambda=0

我的问题:

1-没有正则化的逻辑回归如何比使用正则化时表现更好?正则化的想法到底不是为了让性能更好吗?!

2-我应该为正则化参数使用大值吗?!

3- 通常使用正则化总是好的吗?

1个回答

据我所知,正则化的想法是让权重尽可能小,因此使用 lambda 会惩罚大权重。

在内心深处,正则化实际上是为了防止你的权重适合你的问题中的“噪音”,也就是过度拟合。如果你有更多的噪音(即通过噪音分布的标准偏差来衡量),那么你将需要更多的正则化来防止过度拟合。这并不是真正要保持较小的重量。

所以应该使用一个大的 lambda 来进行正则化。

通过正则化,最好避免这种明确的陈述。有时越大越好,有时不是。

但是,当我使用 lambda=1 的 L1 正则化时,性能比使用 lambda=0.0001 更差。实际上我得到的最好性能是当我使用 lambda=0 时!

根据我上面的推理,更大的 lambda => 更好的性能是不正确的。这取决于噪音水平等。实际上,您始终可以设置 lambda = 1000000,并且您的所有权重都将为零。正确选择 lambda 可能是一种微妙的艺术。

对于您的问题:

1-没有正则化的逻辑回归如何比使用正则化时表现更好?正则化的想法到底不是为了让性能更好吗?!

通常,正则化会提高模型的性能。在我看来,您正在考虑一个特定的应用程序和/或数据集,在这种情况下,正则化很可能对这个特定问题没有帮助。

但是,如果不知道“更好的性能”是什么意思,就很难说清楚。你做了什么来测试你的模型的泛化性能?lambda = 0总是会在训练数据上表现更好,但你应该关心的是测试数据上的表现。

2-我应该为正则化参数使用大值吗?!

见上文 - 这有点像一门艺术,您需要在特定问题中平衡它与噪音水平。您是否熟悉/是否尝试过交叉验证等技术来选择超参数?

3 - 通常使用正则化总是好的吗?

参见 1) 的答案。