Comments 15
Не стесняйтесь и пишите комментарии: пожелания, критику, вопросы
Интересно, но вы показали результат уже после upsampling, здорово было бы сравнить с f1 до него.
Автор, ваши результаты не совсем корректны. Метрика улучшилась скорее всего не из-за того, что выборка стала сбалансированной, а из-за того, что и в тестовой и в обучающей выборках присутствуют одни и теже элементы. Естественно, на них классификатор будет угадывать верно, за счёт чего растёт точность. Для чистоты эксперимента надо сначала делить выборки на тестовую и обучающую, а затем в обучающей делать балансировку.
Большое спасибо за замечание, для чистоты эксперимента и правда стоило так сделать
если тестовая тоже несбалансированна (как и рабочие данные) будет перекос в сторону маленьких классов
Не совсем. Смысл балансировки выборок в том, чтобы при обучении классификатор не отдавал предпочтения одному из классов. Как видно на примере из статьи, без балансировки классификатор определял всех как класс 0, потому что это наиболее выгодная стратегия. На тестовой выборке баланс классов уже никак не влияет на классификатор. Он всё равно классифицирует поэлементно, не обращая внимание на то, сколько объектов каждого класса нужно обработать.
Балансировать тестовую выборку стоит в том случае, если объектов какого-то класса там мало в той мере, что точность начинает значительно меняться, если 1 из объектов неверно диагностирован. И это не столько вопрос балансировки, сколько вопрос наращивания обучающей выборки, для стабильной проверки точности классификации.
Для работы с несбалансированными данными советую попробовать библиотеку imblearn. В ней реализованы различные методы overSampling и underSampling
Не всегда дисбаланс классов — это проблема.
Вот статья на эту тему: https://habr.com/ru/post/349078/
Как победить несбалансированность датасета: метод upsampling data