【问题标题】:How to find the regularization parameter in logistic regression in python scikit-learn?python - 如何在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),我有什么理由?

【问题讨论】:

    标签: machine-learning scikit-learn logistic-regression


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 在根据测试集的表现选择C的情况下,是否属于过拟合的例子?我试图理解为什么这样做是个坏主意。
    • 这不是过度拟合的示例,而是无效估计器的示例,只是您不能信任以这种方式选择的模型。从这个意义上讲,它与过度拟合有关,它可能导致过度拟合,但问题更深层次 - 简单地说,如果您使用数据来做出关于模型的任何决策,以及它的评估 - 评估是有偏见的,因此 - 没用。
    猜你喜欢
    • 2016-02-21
    • 2017-09-11
    • 2014-09-17
    • 2020-10-11
    • 2017-03-31
    • 2023-02-23
    • 2018-11-18
    • 2016-12-27
    • 2021-05-28
    相关资源
    最近更新 更多