我对结果感到有些失望。我使用sklearn.linear_models.LogisticRegression
和C=1e80
'或penalty = 'l1
创建了两个模型('l2'
),然后使用sklearn.cross_validation.cross_val_score
和cv=3
和{{{{}}}对其进行测试1}}。对我而言,scoring='roc_auc'
应该导致几乎没有正规化,AUC应该是相同的。相反,具有C=1e80
惩罚的模型给出了更差的AUC,并且多次运行给出了相同的结果。这是怎么发生的?
答案 0 :(得分:0)
只是为了让它更清晰一些。大多数损失函数的一般形式是
C SUM_i=1^N loss(h(x_i), y_i|theta) + regularizer(theta)
因此,C
的整个问题是在训练样本的损失总和与正则化值之间找到平衡。
现在,如果损失是有限的(如逻辑回归的情况),那么没有适当的归一化,L2正则化器(|| theta || ^ 2)可能会增长到无穷大,因此你需要非常高的C才能使其无关紧要因此在解决方案上与L1(max_j | theta_j |)相等。类似地,如果你有快速增长的损失,例如p> = 2的Lp损失,那么正则化器可能非常小,因此你需要非常小的C
来使它做任何事情。