Классификация с керасом, несбалансированные классы - PullRequest
0 голосов
/ 05 марта 2020

У меня проблема с двоичной классификацией, которую я пытаюсь решить в Керасе. Для начала я следовал обычному примеру MNIST, используя softmax в качестве функции активации в моем выходном слое.

Однако в моей задаче 2 класса сильно разбалансированы (1 появляется в ~ 10 раз чаще, чем другой). И что еще более важно, они несимметричны в том, как они могут ошибаться.

Ошибочно принять A за B гораздо менее сурово, чем ошибочно принять B за A. Точно так же, как пещерный человек пытается классифицировать животных по домашним животным и хищникам: ошибочно принять питомца за хищника, но обратный путь будет смертельным.

Итак, мой вопрос: как бы я смоделировал что-то подобное с Keras?

большое спасибо

1 Ответ

1 голос
/ 05 марта 2020

Неисчерпывающий список того, что вы можете сделать:

  1. Создание сбалансированного набора данных с использованием дополнений данных. Если данные являются изображениями, вы можете добавить дополнения к изображениям в пользовательском генераторе данных , который будет выводить сбалансированные объемы данных из каждого класса в пакете и сохранять результаты в новом наборе данных. Если данные являются табличными, вы можете использовать такую ​​библиотеку, как imbalanced-learn , чтобы выполнить выборку выше / ниже.

  2. Как сказал @Daniel, вы можете использовать class_weights во время обучения (в методе fit ) таким образом, что ошибки в важном классе наказываются больше. Смотрите этот урок: Классификация по несбалансированным данным . Та же идея может быть реализована с помощью пользовательской функции потерь с / без class_weights во время тренировки.

...