我正在使用这个 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- 通常使用正则化总是好的吗?