Улучшение результата задачи классификации на сильно несбалансированном наборе данных

#scikit-learn #svm

#scikit-learn #svm

Вопрос:

Я запускаю модель LinearSVC, используя sklearn для моей задачи классификации для несбалансированного набора данных, и получаю результат, приведенный ниже:

 confusion matrix:
[[43677 28222]
 [ 5309  9575]]

classification report:
   precision    recall  f1-score   support

   class 0:       0.72      0.69      0.71    133958
   class 1:       0.70      0.73      0.72    133958

   micro avg       0.71      0.71      0.71    267916
   macro avg       0.71      0.71      0.71    267916
weighted avg       0.71      0.71      0.71    267916

               precision    recall  f1-score   support

class 0:       0.89      0.61      0.72     71899
class 1:       0.25      0.64      0.36     14884

    micro avg       0.61      0.61      0.61     86783
    macro avg       0.57      0.63      0.54     86783
 weighted avg       0.78      0.61      0.66     86783
  

Посмотрите на результат, есть ли у вас какие-либо предложения для меня по его улучшению? (Я использую метод передискретизации для балансировки обучающего набора данных)

Что меня беспокоит, так это отфильтровать все экземпляры в классе 1 из данных, должен ли я просто посмотреть на точность / отзыв класса 1 или мне следует использовать какие-либо другие показатели для оценки того, насколько хороша моя модель?

Комментарии:

1. class_weight от scikit-learn.org/stable/modules/generated / … с избыточной выборкой и без нее должно быть одной из первых вещей, которые нужно попробовать.

Ответ №1:

передискретизация не всегда помогает (т. Е. она просто дублирует выборки для балансировки данных). попробуйте разные подходы, например, «Синтетический метод избыточной выборки меньшинства». Для получения более подробной информации обратитесь к следующему, ПОРАЖЕННОМУ