python - 如何在python scikit-learn中找到逻辑回归中的正则化参数?

Posted

技术标签:

【中文标题】python - 如何在python scikit-learn中找到逻辑回归中的正则化参数?【英文标题】:How to find the regularization parameter in logistic regression in python scikit-learn? 【发布时间】:2017-02-20 10:50:16 【问题描述】:

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

【问题讨论】:

【参考方案1】:

我应该如何选择正确的 C?

您应该拥有三折数据集:训练、验证和测试。你在火车上训练,在验证中设置超参数,最后在测试中进行评估。特别是,当数据较小时,您可以使用 k-fold CV 方式执行此操作,您首先使用 CV 进行训练测试拆分,然后在内部使用另一个,将训练进一步拆分为实际训练和验证。

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

除了在权重上设置任意先验之外没有任何理由(因此任何其他值都将同样合理)。

【讨论】:

在根据测试集的表现选择C的情况下,是否属于过拟合的例子?我试图理解为什么这样做是个坏主意。 这不是过度拟合的示例,而是无效估计器的示例,只是您不能信任以这种方式选择的模型。从这个意义上讲,它与过度拟合有关,它可能导致过度拟合,但问题更深层次 - 简单地说,如果您使用数据来做出关于模型的任何决策,以及它的评估 - 评估是有偏见的,因此 - 没用。

以上是关于python - 如何在python scikit-learn中找到逻辑回归中的正则化参数?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 scikit-learn 的 SVM 中使用非整数字符串标签? Python

如何在python中使用scikit-image greycomatrix()函数?

如何安装scikit-learn

如何在 Python/Scikit Learn 中转换输入的结构回归

如何使用 Python (scikit-learn) 计算 FactorAnalysis 分数?

python - 如何在python scikit-learn中进行字典向量化后预测单个新样本?