2024-04-25 12:30:08 发布
网友
我对我得到的结果有些失望。我用C=1e80和penalty = 'l1或{}创建两个模型(sklearn.linear_models.LogisticRegression),然后使用sklearn.cross_validation.cross_val_score和{}和{}对它们进行测试。对我来说,C=1e80应该不会导致任何正则化,AUC应该是相同的。相反,带有'l2'惩罚的模型给出了更差的AUC,并且多次运行得到了相同的结果。这是怎么发生的?在
C=1e80
penalty = 'l1
sklearn.linear_models.LogisticRegression
sklearn.cross_validation.cross_val_score
'l2'
只是想说清楚一点。大多数损失函数的一般形式是
C SUM_i=1^N loss(h(x_i), y_i|theta) + regularizer(theta)
因此,C的全部问题是在训练样本的损失和与正则化器值之间找到一个平衡。在
C
现在,如果损失是有界的(就像在logistic回归的情况下),那么如果没有适当的规范化,L2正则化器(| | theta | |^2)可能会增长到无穷大,因此需要非常高的C使其不相关,从而等于L1(max| theta|j |)。类似地,如果您有增长非常快的损失,例如p>;=2的Lp loss,那么正则化器可能非常小,因此您需要非常小的C来使它做任何事情。在
只是想说清楚一点。大多数损失函数的一般形式是
因此,
C
的全部问题是在训练样本的损失和与正则化器值之间找到一个平衡。在现在,如果损失是有界的(就像在logistic回归的情况下),那么如果没有适当的规范化,L2正则化器(| | theta | |^2)可能会增长到无穷大,因此需要非常高的C使其不相关,从而等于L1(max| theta|j |)。类似地,如果您有增长非常快的损失,例如p>;=2的Lp loss,那么正则化器可能非常小,因此您需要非常小的
C
来使它做任何事情。在相关问题 更多 >
编程相关推荐