逻辑回归中的类型 1&2 错误
Posted
技术标签:
【中文标题】逻辑回归中的类型 1&2 错误【英文标题】:Type 1&2 Errors in Logistic Regression 【发布时间】: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,并做出更真实的肯定猜测。我将不胜感激!
【问题讨论】:
【参考方案1】:什么是class_weight
您一定已经知道,它是根据样本各自的类别分配给样本的权重。如果设置为balanced
,那么它使用反向加权可以这么说:
“平衡”模式使用 y 的值自动调整权重,与输入数据中的类频率成反比,如
n_samples / (n_classes * np.bincount(y))
。
看起来你有一个显着的类不平衡,有利于类正数,因为你的 FN 在应用权重后飙升。
如何解决问题
我可能会说类不平衡和权重问题是一回事,而错误权衡是另一回事。通过解决不平衡(通过过度/不足采样或加权),您通常会尝试改进您的模型。您应该这样做,但不是作为错误权衡调整步骤,而是为了模型性能本身。
之后,您可以通过绘制 ROC 曲线并选择满足您对错误的要求的阈值来进行错误权衡调整。一种常见的做法是修复所需的错误率(在这里您将 FP 设为一个值),然后从曲线中读取相应的其他错误类型
结论
第一步是进行适当的模型训练。您在类别不平衡和权重以及其他考虑因素(例如正则化和其他内容)方面所做的努力都在这里。
然后,在你尽你所能训练一个好的模型之后,你将阅读 ROC 图以找到满足你的问题要求的阈值。如果对应的 FN 错误率对于你想要的 FP 错误率来说太差了,这意味着模型没有你想要的那么好。这是一种权衡,解决它的唯一方法是提出一个更好的模型
【讨论】:
以上是关于逻辑回归中的类型 1&2 错误的主要内容,如果未能解决你的问题,请参考以下文章