严重不平衡中的 AUC ROC 阈值设置

数据挖掘 机器学习 逻辑回归 准确性 表现
2022-02-27 20:13:33

我正在对具有非常严重的类不平衡的数据集进行二元逻辑回归。第 1 类仅占数据的 1%。当我在没有类权重的情况下训练逻辑回归器时,我得到的 ROC AUC 得分为 0.6269。这是体面的。然而,当我看到我的混淆矩阵时,我发现我的模型根本没有预测到任何 1。那为什么我的 AUC 这么高?我认为 AUC 是针对这种情况的一个很好的衡量标准。

Confusion matrix
 Predicted      0    All
True                   
0          32109  32109
1           1223   1223
All        33332  33332

我知道混淆矩阵使概率阈值为 0.5,那么分数是否表明存在某个阈值,哪个模型会提供更高的召回率?我怎样才能得到这个阈值?

      Class  precision    recall  f1-score   support

       0       0.96      1.00      0.98     32109
       1       0.00      0.00      0.00      1223

我只关心 1 类的精度和召回率。

2个回答

是的,必须有一些阈值会产生不那么琐碎的分类。在像您这样的不平衡情况下,相关阈值可能相当小。将进行权衡,因此您获得的门槛不会只有一个。您可以绘制 ROC,也许连同一些阈值信息来帮助您找到一个阈值,该阈值会在 ROC 曲线上产生一个点,从而优化您的用例目标。

PR 曲线可能对您更有用,但我不会说 ROC 一定更差。 https://stats.stackexchange.com/questions/262616/roc-vs-precision-recall-curves-on-imbalanced-dataset

-->当每个类的观察数量大致相等时,应使用 ROC 曲线。

-->当存在中度到大类不平衡时,应使用Precision-Recall曲线。

enter code here
 from sklearn.metrics import precision_recall_curve
 precision, recall, thresholds = precision_recall_curve(y_test, probs)
 auc = auc(recall, precision)