【问题标题】:Type 1&2 Errors in Logistic Regression逻辑回归中的类型 1&2 错误
【发布时间】:2020-10-16 10:23:48
【问题描述】:

我有 (1125660, 72) 形状的数据,并尝试使用逻辑回归训练模型。我对预测的主要关注是保持类型 1(误报)错误尽可能低,当我将 class_weight 参数从默认值更改为“平衡”时,它通过将类型 1 减半对我的类型 1 有很大帮助(从 1000 到 500),但我的第 2 类错误编号已从 500 增加到 16000。

logreg = LogisticRegression(max_iter=1000)

# changed to
logreg = LogisticRegression(class_weight='balanced', max_iter=1000)

由于我更关注类型 1,我肯定会使用平衡权重,但现在尝试降低类型 2,并做出更真实​​的肯定猜测。我将不胜感激!

【问题讨论】:

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


    【解决方案1】:

    什么是class_weight

    您一定已经知道,它是根据样本各自的类别分配给样本的权重。如果设置为balanced,那么它使用反向加权可以这么说:

    “平衡”模式使用 y 的值自动调整权重,与输入数据中的类频率成反比,如 n_samples / (n_classes * np.bincount(y))

    看起来你有一个显着的类不平衡,有利于类正数,因为你的 FN 在应用权重后飙升。

    如何解决问题

    我可能会说类不平衡和权重问题是一回事,而错误权衡是另一回事。通过解决不平衡(通过过度/不足采样或加权),您通常会尝试改进您的模型。您应该这样做,但不是作为错误权衡调整步骤,而是为了模型性能本身。

    之后,您可以通过绘制 ROC 曲线并选择满足您对错误的要求的阈值来进行错误权衡调整。一种常见的做法是修复所需的错误率(在这里您将 FP 设为一个值),然后从曲线中读取相应的其他错误类型

    结论

    第一步是进行适当的模型训练。您在类别不平衡和权重以及其他考虑因素(例如正则化和其他内容)方面所做的努力都在这里。

    然后,在你尽你所能训练一个好的模型之后,你将阅读 ROC 图以找到满足你的问题要求的阈值。如果对应的 FN 错误率对于你想要的 FP 错误率来说太差了,这意味着模型没有你想要的那么好。这是一种权衡,解决它的唯一方法是提出一个更好的模型

    【讨论】:

      猜你喜欢
      • 2020-09-21
      • 1970-01-01
      • 2020-12-04
      • 2016-02-21
      • 2019-03-05
      • 1970-01-01
      • 2015-04-18
      • 2021-02-06
      • 2020-06-26
      相关资源
      最近更新 更多