Вопрос или проблема
У меня уже есть 2 набора данных. Один для обучения и один для тестирования. Оба набора данных несбалансированы (с похожими процентами), с около 90% метки 1. Будет ли полезно сбалансировать данные, если тестовый набор в любом случае очень несбалансирован? Примеры метки 0 (которые составляют 10%) все равно достаточны.
Если необходимо, я в конечном итоге использую наращивание. Мой набор данных – это отзывы на tripAdvisor, какая техника будет лучшей в этом случае?
Существуют ли какие-либо смешанные техники, которые используют как недообучение, так и наращивание? Или это имеет малый смысл?
Если ваш набор данных достаточно велик и вы хотите уменьшить его размер по причинам производительности, вы можете использовать недообучение метки 1.
Тем не менее, если у вас есть лишь ограниченное количество доступных данных или если вам точно нужны все обучающие образцы для построения стабильного классификатора, я бы выбрал наращивание (Случайное наращивание (которое дублирует точки данных из метки 0), Метод синтетического наращивания меньшинств SMOTE (который сосредоточен именно на образцах, близких к границе между метками 0 и 1) или Адаптивное синтетическое наращивание ADASYN (который сосредоточен на трудноклассифицируемых классах меньшинства)).
Лично для меня SMOTE работал хорошо для многих несбалансированных наборов данных, попробуйте! Это поможет вашему классификатору лучше различать классы и, таким образом, может улучшить производительность, даже если тестовый набор также несбалансирован.
Но помните, что следует использовать это только на обучающих данных, чтобы иметь возможность провести беспристрастную оценку с использованием тестового набора.
Также возможно уменьшить шаг обучения при обновлении весов, обученных на классе большинства, и/или увеличить шаг обучения при обновлении весов, обученных на классе меньшинства.
Смотрите веса классов в Scipy.
Часто бывает полезно сбалансировать обучающий набор данных. Например, если модель обучается на границе принятия решений, эта граница будет затем учиться отделять различные категории скорее на основе признаков, чем на основе пропорции наблюдений из классов большинства. Во время фазы предсказания только на тестовом наборе данных эта же граница используется без ребалансировки.
Недообучение и наращивание независимы. Наращивание – это отбор с заменой из классов меньшинства. Недообучение – это уменьшение числа классов большинства. Вы можете делать и то, и другое, или одно из них.
Цель состоит в том, чтобы иметь хорошее представление о данных, минимизируя время обучения. Если у вас много качественных точек данных, делайте больше недообучения. Если у вас мало качественных точек данных, делайте больше наращивания.
Ответ или решение
Балансировка Наборов Данных: Практический Подход к Непропорциональным Датасетам
В мире машинного обучения работа с непропорциональными наборами данных — это распространенная ситуация, особенно когда речь идет о классификации. Вы уже имеете два набора данных: один для обучения, другой для тестирования, и оба характеризуются значительной диспропорцией между классами (примерно 90% метки 1 и 10% метки 0).
Зачем Балансировать Данные?
Балансировка обучающего набора может значительно повлиять на эффективность модели. Если модель обучается на несбалансированном наборе данных, она может узнать, что предсказывать класс 1 (большинство) проще, чем пытаться предсказать класс 0 (меньшинство). В итоге, такая модель хорошо работает на обучающих данных, но плохо обобщает свои предсказания на новые, несбалансированные данные.
Несмотря на то, что тестовый набор остается несбалансированным, обучение на сбалансированном наборе может помочь модели лучше различать признаки классов, что может снизить риск переобучения и повысить качество предсказаний.
Выбор Метода Балансировки
Существует несколько методов, которые можно использовать для балансировки ваших данных:
-
Переобучение (Oversampling):
- Случайное переобучение: Увеличьте количество экземпляров метки 0 путем дублирования. Этот простой метод может помочь, но увеличивает риск переобучения.
- SMOTE (Synthetic Minority Over-sampling Technique): Этот метод создает синтетические образцы для класса 0, основываясь на имеющихся данных, что может привести к улучшению обработки классов на границе.
- ADASYN (Adaptive Synthetic Sampling): Этот метод является расширением SMOTE и сосредотачивается на сложно классифицируемых данных, создавая больше синтетических образцов там, где модель испытывает трудности.
-
Недопустимость (Undersampling):
- При наличии большого объема данных можно рассмотреть возможность уменьшения количества экземпляров метки 1. Это может помочь снизить время обучения и нагрузку на модель, но требует осторожности, чтобы не потерять важные данные.
-
Смешанные Подходы:
- Смешанные методы, которые сочетают в себе элементы как переобучения, так и недопустимости, могут быть полезными. Путем уменьшения размера одного класса и увеличения другого класса можно добиться лучшего баланса, соответствующего специфике задачи.
Настройка Параметров Модели
Помимо удаления или добавления данных, вы также можете настроить параметры вашей модели. Например, использование весов классов, которые доступны в библиотеках, таких как Scikit-Learn, позволяет модели более активно реагировать на данные меньшинства во время обучения, увеличивая шаги обновления при обновлении весов для класса 0.
Заключение
Итак, хотя ваш тестовый набор данных по-прежнему будет несбалансированным, причём присутствие 10% экземпляров метки 0 может быть вполне достаточным для адекватной оценки модели, балансировка обучающего набора, безусловно, окажет довольно весомое влияние на общее качество предсказаний. Попробуйте разные методы переобучения, такие как SMOTE или ADASYN, и не забывайте, что стандартные техники настройки параметров класса могут быть также весьма эффективны для улучшения качества обучения вашей модели. Удачи в работе с вашим набором данных о отзывах TripAdvisor!