У меня мультиклассовая несбалансированная проблема. Зависимая переменная показана ниже.
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
Пожалуйста, предложите.