2016-10-11 95 views
0

在scikit-learn中,C是正则化强度的倒数(link)。除了我使用三个不同的C(即0.1,1.0和10.0)之外,我已经手动计算了三次具有相同参数和条件的训练。我比较了验证集中的F分数,并确定了“最佳”C.但是,有人告诉我这是错误的,因为我不应该使用验证集来优化C.我应该如何选择正确的C?如果我要从scikit-learn中选择默认C(= 1.0),我有什么理由?如何在python scikit-learn中找到逻辑回归中的正则化参数?

回答

1

我该如何选择合适的C?

你应该有三折的数据集:培训,验证和测试。你在火车上训练,在验证上设置超参数并最终在测试中评估。特别是,当数据量较小时,可以使用k倍CV时尚进行此操作,您首先将CV用于列车测试分割,然后是另一个CV分割,将训练进一步分解为实际的训练和验证。

如果我要从scikit-learn中选择默认C(= 1.0),我有什么理由?

除了在权重上放置任意先验值(因此任何其他值将被同等证明)之外,没有任何理由。

+0

在基于测试集的性能来选择C的情况下,它是否是过度拟合的例子?我想了解为什么这样做不好。 – KubiK888

+0

它不是**过度拟合的例子**,它是** invalid estimator **的例子,只是你不能相信以这种方式选择的模型。它与这种意义上的过度拟合有关,它可以导致这个问题,但问题更深入 - 只要你使用数据来做出有关模型的任何**决策以及它的评估 - 评估就是**偏向**,因此 - 无用。 – lejlot