【问题标题】:How can I change the training threshold for any learning algorithm in sklearn?如何更改 sklearn 中任何学习算法的训练阈值?
【发布时间】:2020-12-19 16:21:27
【问题描述】:

我正在尝试使用 sklearn 训练模型,但是,我想将决策阈值更改为 训练 模型。我在 SO 中找到的大部分结果都是针对测试集的预测。

【问题讨论】:

  • 模型训练没有没有个阈值。

标签: machine-learning scikit-learn classification


【解决方案1】:

在概率分类器训练(通过 scikit-learn 或任何其他框架)中不涉及阈值

在推理时需要一个阈值,以便将概率预测转换为硬标签,而这反过来又是计算本质上的业务指标,如准确度、精度、召回率等所必需的。但这些指标在模型训练中没有作用,其中唯一重要的量(并且在模型拟合期间被最小化)是损失。并且损失的计算不涉及阈值。

换句话说,硬类预测(仅需要阈值)在模型训练中绝对没有任何作用,因此在训练过程中不涉及任何阈值。

我建议阅读以下我的答案,以澄清损失和准确性之间的关系(尽管标题,它们并非特定于 Keras,但它们原则上适用于任何二元分类问题):

引用交叉验证线程Reduce Classification Probability Threshold

当您为新样本的每个类别输出一个概率时,您的练习的统计部分就结束了。选择一个阈值,将新观察分类为 1 与 0 的阈值不再是 统计数据 的一部分。它是 decision 组件的一部分。

【讨论】:

    猜你喜欢
    • 2017-11-12
    • 1970-01-01
    • 2017-07-11
    • 2021-03-30
    • 2015-03-22
    • 2021-05-05
    • 2018-01-09
    • 1970-01-01
    • 2016-05-17
    相关资源
    最近更新 更多