Должен ли я пойти на «сбалансированный» набор данных или «представительный» набор данных?

48

Моя задача «машинного обучения» - отделить доброкачественный интернет-трафик от вредоносного. В сценарии реального мира большая часть (скажем, 90% или более) интернет-трафика является доброкачественной. Таким образом, я почувствовал, что должен выбрать аналогичную настройку данных для обучения своих моделей. Но я наткнулся на одну или две исследовательские работы (в своей области работы), в которых для обучения моделей использовался подход «балансировки классов», подразумевающий одинаковое количество случаев доброкачественного и злонамеренного трафика.

В общем, если я строю модели машинного обучения, должен ли я использовать набор данных, который представляет проблему реального мира, или сбалансированный набор данных лучше подходит для построения моделей (поскольку некоторые классификаторы плохо себя ведут с дисбалансом классов, или по другим неизвестным мне причинам)?

Может ли кто-то пролить больше света на плюсы и минусы как выбора, так и того, как решить, какой из них выбрать?

ПНП
источник

Ответы:

38

Я бы сказал, что ответ зависит от вашего варианта использования. Исходя из моего опыта:

  • Если вы пытаетесь построить репрезентативную модель, которая описывает данные, а не предсказывает их, я бы предложил использовать репрезентативную выборку ваших данных.
  • Если вы хотите построить прогностическую модель, особенно ту, которая хорошо себя зарекомендовала по показателям AUC или рангового порядка, и планируете использовать базовую структуру ML (т. Е. Дерево решений, SVM, наивный байесовский метод и т. Д.), То я бы предложил вам прокормить рамки сбалансированного набора данных. Большая часть литературы о дисбалансе классов обнаруживает, что случайная недостаточная выборка (понижающая выборка класса большинства до размера класса меньшинства) может привести к повышению производительности.
  • Если вы строите прогностическую модель, но используете более продвинутую структуру (то есть что-то, что определяет параметры выборки через оболочку, или модификацию структуры упаковки, которая выбирает классовую эквивалентность), то я бы предложил снова передать репрезентативную выборку и позволить алгоритм заботится о балансировке данных для обучения.
ДГМА
источник
2
Если вы пытаетесь построить репрезентативную модель - такую, которая описывает данные, а не обязательно предсказывает ... кто строит модель, которая не предопределена ?? Не доставил вас туда ...
pnp
8
Неуправляемое обучение может служить примером, когда вы строите модель, которая не обязательно предназначена для прогнозирования. В некоторых случаях вы можете изучить или обобщить ваши данные.
DSea
1
Я бы сказал, что безопаснее сбалансировать вашу выборку, но также собирать веса выборки, чтобы вы могли позже пересмотреть ваши данные для репрезентативности, если вам нужно. @pnp множество социологов строят не предсказательные модели, например, для подтверждения теорий.
shadowtalker
Как сбалансированная модель будет сравниваться с репрезентативной моделью, использующей взвешенные наблюдения для имитации сбалансированной модели?
JenSCDC
1
AUC не подвержен дисбалансу классов, так как вероятность того, что ваша модель ранжирует случайно выбранный положительный класс выше, чем случайно выбранный отрицательный класс. Я совершенно не согласен с вашим советом здесь для общих целей. Если у вас есть репрезентативная выборка, например, простая случайная выборка, ее следует оставить репрезентативной.
Мэтью Друри
8

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

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

В итоге: ошибки классификации не имеют одинаковую стоимость!

Пасмод Тьюринг
источник
7

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

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

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

damienfrancois
источник
4

Разделите операционный и обучающий сценарии.

Операционный сценарий - это сценарий, в котором будет измеряться ваш классификатор. Это где вы должны хорошо работать. Использование должно иметь набор данных, который представляет этот сценарий.

Сценарий обучения - это то, что вы делаете, чтобы построить классификатор, который будет хорошо работать в рабочем сценарии.

Много раз наборы данных в обоих сценариях имеют одну и ту же природу, поэтому нет необходимости различать их. Например, у вас есть какой-то интернет-магазин, поэтому вы используете его для обучения в прошлом, чтобы хорошо работать в будущем. Однако во время обучения вы можете использовать набор данных, отличный от того, который представляет рабочий сценарий. На самом деле, если вы спите, мечтаете о классификаторе, проверяете его в своем рабочем сценарии (этот шаг должен быть сделан после пробуждения), вы так же хороши, как и после обычного пути машинного обучения.

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

Итак, не стесняйтесь использовать два набора данных - вы можете использовать сбалансированный набор данных для обучения. Как только вы закончите, проверьте свой классификатор рабочего набора данных.

Dal
источник
3

Я думаю, что есть две отдельные проблемы для рассмотрения: время обучения и точность прогноза.

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

Теперь вторая проблема заключается в точности прогнозирования: разные алгоритмы используют разные метрики ошибок, которые могут соответствовать или не соответствовать вашим собственным целям. Например, логистическая регрессия оштрафует общую вероятность ошибки, поэтому, если большая часть ваших данных относится к одному классу, она будет стремиться улучшить точные оценки вероятности (например, 90 против 95% вероятности) этого одного класса, а не пытаться идентифицировать редкий класс. В этом случае вы определенно захотите попытаться изменить вес, чтобы подчеркнуть редкий класс (и впоследствии скорректировать оценку [, отрегулировав член смещения], чтобы перестроить оценки вероятности)

seanv507
источник