逻辑回归中的类型 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 错误的主要内容,如果未能解决你的问题,请参考以下文章

Python 逻辑回归产生错误的系数

Python中的多元逻辑回归显示错误

逻辑回归-5. scikit-learn中的逻辑回归

逻辑回归&线性支持向量机

逻辑回归中的概率校准错误:ValueError:无法将字符串转换为浮点数:'OLIFE'

6.逻辑回归