我有一个多类不平衡问题。因变量如下所示。
Injury
severe Injury (Class 0) 3394
Medium Injury (Class 1) 22318
No Injury (Class 2) 208753
我使用带有参数 class_weight='balanced' 的随机森林算法来处理不平衡问题。该模型产生以下结果。
[[ 650 12 9]
[ 3 2938 1670]
[ 7 917 40569]]
Accuracy Score: 0.9440299305184393
precision score: 0.9016230160324789
Recall score: 0.8612021971135553
AUC Score: 0.8739141097167544
F1 score: 0.879571098748252
precision recall f1-score support
class 0 0.98 0.97 0.98 671
class 1 0.76 0.64 0.69 4611
class 2 0.96 0.98 0.97 41493
avg / total 0.94 0.94 0.94 46775
Kappa Score: 0.7391731672532447
由于我对 0 类和 1 类非常感兴趣,因此使用“宏”方法计算精度、召回率和 F1 分数。
ex:
print ('precision score:', precision_score(test_y,ry_pred, average='macro'))
所以,我的问题是我可以采用单个类(0 类和 1 类)精度、召回率和 f1 吗?或评估模型的总体平均分(包括 2 级)?
ex: F1 score for all three classes = (98+69+97)/3 = 0.8795
F1 Score for 2 classes = (98+69)/2 = 83.5
如果我必须获取单个班级的分数,我可以采用 0 级和 1 级的汇总值来说明模型对次要班级的分类效果如何?
此外,对于 0 类,模型显示出 98 左右的高分。这是过拟合问题吗?我使用 k 折 CV 技术评估模型并显示以下分数。它显示了整体精度、召回率和 F1 分数。
precision score 0.9009562240704383
recall score 0.8576816035552879
F1 score 0.8776626709718627
请建议。