Вопрос или проблема
У меня есть набор данных из 5566 образцов – один столбец содержит текст описания рецепта, а другой – это налоговый класс.
Я хочу создать классификатор, который будет классифицировать рецепты, используя только машинное обучение.
У меня есть огромный дисбаланс в данных:
Какой хороший метод использовать при работе с такими данными?
Как уменьшить или увеличить выборку? Насколько я понял, SMOT не сработает.
Уменьшение выборки просто; всегда можно выбрать случайное подмножество экземпляров для конкретных классов. Однако увеличение выборки означает либо повторение одних и тех же экземпляров, либо генерацию искусственных данных, и это редко хорошо работает с текстовыми данными (например, см. это объяснение). Кроме того, повторная выборка редко является хорошим решением проблемы дисбаланса классов.
Практически маловероятно, что что-то можно сделать с классами, в которых очень мало экземпляров. Я бы предложил (как в связанном ответе) начать с классификации только 10 самых частых классов, отбрасывая все остальное. Если это будет работать достаточно хорошо, вы сможете постепенно улучшать его позже.
Ответ или решение
Как выполнить до- и апсэмплинг текстовых данных для классификации рецептов
Классификация текстовых данных, таких как описания рецептов, представляет собой сложную задачу, особенно при наличии дисбаланса между классами. Вы имеете набор данных из 5566 образцов, где одна колонка содержит текстовые описания, а другая – классы налогов. Ваша цель – создать классификатор для автоматической классификации рецептов с помощью машинного обучения. Однако, как показала ваша визуализация, существуют значительные трудности, связанные с дисбалансом данных.
Проблема дисбаланса классов
Дисбаланс в данных означает, что некоторые классы представлены гораздо большим количеством образцов, чем другие. Это может привести к тому, что модель будет непредсказуемо работать на недостаточно представленном классе, так как она "обучается" на основе более частых классов и игнорирует редкие.
Одним из способов решения этой проблемы является изменение количества образцов в каждом классе.
Метод уменьшения (downsampling)
Уменьшение числа образцов представляет собой простую и быстую стратегию. Она включает случайный отбор подмножества экземпляров из классов с избыточными данными. Это позволит сбалансировать набор данных, но может привести к потере информации, особенно если высокий класс содержит важные данные.
Пример:
- Определите классы, которые имеют избыток экземпляров.
- Для каждого из этих классов случайным образом выберите фиксированное количество экземпляров, чтобы они соответствовали количеству экземпляров в редких классах.
Недостатки: Несмотря на то, что downsampling может сбалансировать данные, он может удалить важные экземпляры, что потенциально приведет к ухудшению качества модели.
Метод увеличения (upsampling)
Увеличение количества образцов более сложное, так как оно может включать или повторное использование существующих экземпляров, или генерацию искусственных данных. Однако нужно помнить, что в случае текстовых данных простое дублирование экземпляров не добавляет новой информации, а создание искусственных текстов, как в случае с SMOTE (Synthetic Minority Over-sampling Technique), может быть проблематичным. Генерация текстов может привести к логически несогласованным или неестественным записям.
Возможные методы:
-
Повторный выбор:
- Повторно используйте экземпляры из низкочастотных классов, что хотя бы увеличит их количество, но не даст новой информации.
-
Генерация синтетических текстов:
- Используйте алгоритмы генерации текстов с помощью языковых моделей. Это может помочь создать новые, более реалистичные образцы, соответствующие имеющимся данным.
- В качестве примеров можно рассмотреть использование трансформеров, таких как GPT, BERT и других.
Недостатки: Эти методы могут быть трудоемкими и требуют наличия большой вычислительной мощности, а также могут не всегда давать ожидаемый эффект.
Рекомендации по уменьшению дисбаланса классов
-
Фокусируйтесь на наиболее частых классах:
- Учитывая, что работа с классами, у которых очень мало образцов, может не иметь смысла, стоит рассмотреть возможность классификации лишь в 10-15 самых частых классов. При таком подходе вы снижаете сложность задачи и можете достичь более высоких показателей точности.
-
Многоступенчатый подход:
- Начните с создания модели для верхних классов, а затем постепенно добавляйте менее представленные классы, анализируя качество классификации на каждом этапе.
-
Использование ансамблевых методов:
- Рассмотрите возможность применения методов, которые могут улучшить предсказания, таких как градиентный бустинг или случайные леса, что может помочь в случае предсказания редких классов на основе множества предсказаний.
Заключение
Работа с дисбалансом классов в текстовых данных требует тщательного продумывания стратегии. Как показано, методы, такие как downsampling и upsampling, имеют свои преимущества и недостатки. Рекомендуем вам начать с более простых подходов и работать в сторону сложных, наглядно дорабатывая модели на основе предварительных результатов. Удачи в разработке вашего классификатора, и помните, что постоянная валидация и тестирование ваших гипотез — ключ к успеху в машинном обучении.