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

29

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

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

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

IharS
источник
См. Также stats.stackexchange.com/q/247871/232706
Бен Рейнигер

Ответы:

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

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

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

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

  • Некоторые методы могут быть чувствительными к изменениям в распределении классов, например, для наивного байесовского алгоритма - это влияет на предыдущие вероятности.
  • Избыточная выборка может привести к переоснащению
Алексей Григорьев
источник
Или, может быть, попробовать алгоритм кластеризации и использовать центры кластеров?
Лила Прабху
Вы можете проверить эту ссылку для передискретизации и других методов для работы с несбалансированными наборами данных.
janpreet singh
11

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

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

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

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

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

Баран
источник