Модель бинарной классификации для несбалансированных данных

datascience.stackexchange https://datascience.stackexchange.com/questions/531

Вопрос

У меня есть набор данных со следующими спецификациями:

  • Обучающий набор данных с 193 176 образцами с 2821 положительным
  • Набор данных тестирования с 82 887 образцами с 673 положительными средствами
  • Есть 10 функций.

Я хочу выполнить бинарную классификацию (0 или 1). Проблема, с которой я сталкиваюсь, заключается в том, что данные очень несбалансированы. После нормализации и масштабирования данных вместе с некоторыми инженерными характеристиками и использованием нескольких различных алгоритмов, это лучшие результаты, которые я мог бы достичь:

mean square error : 0.00804710026904
Confusion matrix : [[82214   667]
                   [    0     6]]

т.е. только 6 правильных положительных хитов. Это использует логистическую регрессию. Вот различные вещи, которые я попробовал с этим:

  • Различные алгоритмы, такие как randomforest, Deciestree, SVM
  • Изменение значения параметров для вызова функции
  • Некоторые интуиции на основе инженерии для включения составных функций

Теперь мои вопросы:

  1. Что я могу сделать, чтобы улучшить количество положительных ударов?
  2. Как можно определить, есть ли переполнение в таком случае? (Я пробовал построение и т. Д.)
  3. В какой момент можно сделать вывод, если, возможно, это лучшее, что я мог бы иметь? (Что кажется грустным, учитывая только 6 ударов из 673)
  4. Есть ли способ, которым я мог бы сделать положительные экземпляры выборки весить больше, поэтому распознавание моделей улучшается, что приводит к большему количеству попаданий?
  5. Какие графические графики могут помочь обнаружить выбросы или некоторую интуицию о том, какой шаблон подойдет лучше всего?

Я использую библиотеку Scikit-Learn с Python, и все реализации являются библиотечными функциями.

редактировать:

Вот результаты с несколькими другими алгоритмами:

Случайный классификатор леса (n_estimators = 100)

[[82211   667]
[    3     6]]

Деревья решений:

[[78611   635]
[ 3603    38]]
Это было полезно?

Решение

  1. Поскольку вы выполняете бинарную классификацию, пытались ли вы настраивать порог классификации? Поскольку ваш алгоритм кажется довольно нечувствительным, я бы попытался опустить его и проверить, есть ли улучшение.

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

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

  4. Не претендуя на то, чтобы быть экспертом по этой теме, есть ряд различных методов, за которыми вы можете следовать (подсказка: Первая ссылка на Google), но, по моему мнению, вы должны сначала убедиться, что вы тщательно выбираете функцию стоимости, чтобы она представляла то, что вы на самом деле ищете.

  5. Не уверены, что вы подразумеваете под интуицией схемы, вы можете уточнить?

Кстати, каковы были ваши результаты с различными алгоритмами, которые вы пробовали? Они были разными?

Другие советы

Поскольку данные очень искажены, в таком случае мы также можем попробовать модельную обучение после переполнения данных.

Удар и Адасин являются некоторые из методов, которые мы можем использовать для избыточной выборки данных.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с datascience.stackexchange
scroll top