在sklearn的LogisticRegression中提供了2种不同的penalty选择,其中L1相当于lasso回归,L2相当于ridge回归。网上很多介绍其基本原理的大神博客可供参考。而我们的这篇博客更多的是从实验的角度去说明这两种penalty的不同优劣。
在这里我们主要要验证两点:
- L1相较于L2会使参数矩阵更稀疏,也就是说包含更多的0。
- L2的拟合能力要比L1的拟合能力强。
实验材料: - 腾讯社交广告大赛(CTR)提供数据。
- 200000的训练集以及50000的测试集。
- 899个特征,130865个特征两组实验。
实验一(899个特征):
训练集AUC | 测试集AUC | 权重为0的比例 | |
---|---|---|---|
l1 | 0.6295 | 0.6221 | 44.6% |
l2 | 0.6311 | 0.6202 | 1.3% |
实验二(130865个特征):
训练集AUC | 测试集AUC | 权重为0的比例 | |
---|---|---|---|
l1 | 0.9052 | 0.6715 | 91% |
l2 | 0.9693 | 0.6614 | 8% |
通过这两组实验我们可以发现:
- L1的参数矩阵中值为0的比例远大于L2,这里的好处有很多比如节约内存,减少CPU的运算次数等等。
- L2的参数矩阵中的值大部分在0附近,对训练数据的拟合能力更强,但同时也提高了过拟合的风险。
L1和L2的设置往往也限制了solver的选择,也就是优化方法的选择。下一篇博客将会进行讲解。