Краткое руководство по обучению сильно несбалансированных наборов данных


29

У меня проблема с классификацией примерно 1000 положительных и 10000 отрицательных образцов в тренировочном наборе. Так что этот набор данных довольно несбалансированный. Обычный случайный лес просто пытается пометить все тестовые образцы как мажоритарный класс.

Некоторые хорошие ответы о подвыборке и взвешенном случайном лесе приведены здесь: Каковы последствия для обучения ансамбля дерева с сильно смещенными наборами данных?

Какие методы классификации кроме RF могут решить проблему наилучшим образом?


Ответы:


19
  • Макс Кун рассказывает об этом хорошо в главе 16 « Прикладное прогнозное моделирование» .
  • Как упомянуто в связанном потоке, несбалансированные данные, по сути, являются проблемой обучения с учетом затрат. Таким образом, любой подход, чувствительный к затратам, применим к несбалансированным данным.
  • Существует большое количество таких подходов. Не все реализованные в R: C50, взвешенные SVM являются опциями. Jous-наддув. Rusboost, я думаю, доступен только в виде кода Matlab.
  • Я не использую Weka, но считаю, что он имеет большое количество классификаторов, чувствительных к затратам.
  • Обработка несбалансированных наборов данных: обзор : Сотирис Коциантис, Димитрис Канеллопулос, Панайотис Пинтелась
  • О проблеме классового дисбаланса : Синьцзян Го, Илун Инь, Кайлин Донг, Гонгпин Янг, Гуантун Чжоу

16

В таких ситуациях, как правило, нужно отбирать у большинства класс.

Если вы считаете, что у вас слишком мало экземпляров положительного класса, вы можете выполнить передискретизацию, например, выборки 5n экземпляров с заменой из набора данных размера n.

Предостережения:

  • Некоторые методы могут быть чувствительными к изменениям в распределении классов, например, для наивного байесовского алгоритма - это влияет на предыдущие вероятности.
  • Избыточная выборка может привести к переоснащению

Или, может быть, попробовать алгоритм кластеризации и использовать центры кластеров?
Лила Прабху

Вы можете проверить эту ссылку для передискретизации и других методов для работы с несбалансированными наборами данных.
janpreet singh

11

Повышение градиента также является хорошим выбором здесь. Например, вы можете использовать классификатор повышения градиента в Sci-Kit Learn. Повышение градиента - это принципиальный метод борьбы с дисбалансом классов путем построения последовательных тренировочных наборов на основе неправильно классифицированных примеров.



1
Повышение - это дополнительный шаг в построении леса, который непосредственно устраняет дисбаланс. В статье, на которую вы ссылаетесь, это упоминается во введении, что повышение помогает даже в тех случаях, когда нет дисбаланса. И эта статья делает вывод, что повышение значительно помогает. Так не уверен, где там показана эквивалентность между RF и бустингом?
cwharland

1

В дополнение к ответам, опубликованным здесь, если количество положительных примеров слишком мало по сравнению с отрицательными примерами, то это становится проблемой обнаружения аномалий, где положительными примерами являются аномалии.

У вас есть целый ряд методов для обнаружения аномалий, начиная от использования многомерного распределения Гаусса для моделирования всех точек, а затем выбирая те, которые находятся на 2 или 3 стандартного расстояния от среднего значения.

Еще одна пища для размышлений - я видел довольно много людей, которые случайным образом отбирали отрицательные примеры с большим количеством примеров, чтобы оба класса были одинаковыми по количеству. Это полностью зависит от имеющейся проблемы, хотим ли мы, чтобы они были сбалансированы или нет.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.