Почему внизу?

42

Предположим, я хочу узнать классификатор, который предсказывает, является ли электронная почта спамом. И предположим, что только 1% писем являются спамом.

Проще всего было бы изучить тривиальный классификатор, который говорит, что ни одно из писем не является спамом. Этот классификатор дал бы нам точность 99%, но он не выучил бы ничего интересного и имел бы 100% ложных негативов.

Чтобы решить эту проблему, люди сказали мне «уменьшить выборку» или изучить подмножество данных, где 50% примеров - это спам, а 50% - не спам.

Но меня беспокоит такой подход, поскольку, как только мы построим этот классификатор и начнем использовать его в реальном объеме электронных писем (в отличие от набора тестов 50/50), он может предсказать, что многие электронные письма являются спамом, когда они ' действительно нет. Просто потому, что он привык видеть гораздо больше спама, чем на самом деле в наборе данных.

Итак, как мы можем решить эту проблему?

(«Повышение частоты дискретизации» или повторение примеров положительного обучения несколько раз, так что 50% данных - это положительные примеры обучения, похоже, страдает от подобных проблем.)

Джессика
источник

Ответы:

37

Большинство моделей классификации на самом деле не дают двоичное решение, а скорее непрерывное значение решения (например, модели логистической регрессии выводят вероятность, SVM выводят расстояние до гиперплоскости со знаком, ...). Используя значения решения, мы можем ранжировать тестовые образцы от «почти наверняка положительного» до «почти наверняка отрицательного».

Основываясь на значении решения, вы всегда можете назначить некоторую отсечку, которая настраивает классификатор таким образом, что определенная часть данных помечается как положительная. Определение подходящего порога может быть выполнено с помощью кривых ROC или PR модели . Вы можете играть с порогом принятия решения независимо от баланса, используемого в тренировочном наборе. Другими словами, методы, такие как up-or downsampling, ортогональны этому.

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

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

Марк Клазен
источник
Спасибо, это было очень полезно. Откуда ты знаешь, каким должен быть порог? Вы хотите установить порог так, чтобы доля положительных прогнозов была равна доле положительных примеров в популяции?
Джессика
2
@Jessica Как я уже упоминал, удобный способ выбора порога - через кривые рабочих характеристик приемника (ROC). Каждый порог соответствует точке в пространстве ROC. Когда вы строите кривую, вы можете выбрать порог на основе того, что соответствует вашим конкретным потребностям. (Вы также можете использовать кривые точного
возврата
Я не согласен с тем, что расстояние от контрольной точки до гиперплоскости, изученной SVM, является какой-либо мерой достоверности прогноза. Были предприняты усилия, чтобы обеспечить уверенность при прогнозировании выходных данных SVM. Посмотрите, например, масштабирование Платта. Но это не так хорошо, как гауссовская классификация процессов (с достоверностью прогноза).
Seeda
1
Масштабирование @Seeda Platt - это принятие решений о вероятностях. Масштабирование Платта так же просто, как прогон (масштабирование) значений решений через логистическую функцию, которая монотонно возрастает и, следовательно, никак не влияет на ранжирование (= достоверность). Все, что он делает, это отображает вывод из в [ 0 , 1 ] . р[0,1]
Марк Клазен
@MarcClaesen Я не предлагаю использовать масштабирование Платта; это «попытка» создать уверенность в предсказании, но есть и лучшие альтернативы. Все, что я хочу сказать, это то, что использование расстояния до гиперплоскости не имеет смысла, и, пересматривая литературу, я никогда не сталкивался с этим, хотя это первое, что приходит в голову, когда пытаешься создать доверие из SVM.
Seeda
14

Реальная проблема здесь заключается в выборе метрики:% точности является плохой мерой успеха модели на несбалансированном наборе данных (по той причине, которую вы упомянули: достичь точности в 99% в этом случае тривиально).

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

Вам гораздо лучше сбалансировать метрику точности, чем балансировать данные. Например , вы могли бы использовать взвешенную точность при оценке вы модель: (error for the positive class + error for the negative class)/2. Если вы прогнозируете все положительные или все отрицательные, это будет 50%хорошая метрика .

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

Zach
источник
Могу я спросить, как классификаторы могут справиться с несбалансированными данными? Возможно, это только мои данные, но я пытался обучить логистической регрессии, случайным лесам и моделям C5.0 на моих данных обучения, как несбалансированных, так и сбалансированных с использованием смешанной избыточной / недостаточной выборки. Модели, обученные на несбалансированных данных, работают намного хуже в моем тестовом наборе, чем модели, обученные на сбалансированных данных.
Seanosapien
13

Как всегда, @Marc Claesenкак отличный ответ.

Я бы просто добавил, что ключевая концепция, которая, кажется, отсутствует, это концепция функции стоимости . В любой модели у вас есть неявная или явная стоимость ложных отрицательных значений для ложных положительных результатов (FN / FP). Для описанных несбалансированных данных часто желательно иметь соотношение 5: 1 или 10: 1. Существует много способов введения функций стоимости в модели. Традиционный метод состоит в том, чтобы ограничить вероятности, создаваемые моделью, - это хорошо работает для логистической регрессии.

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

Чарльз
источник
2
Спасибо, что подняли это, это интересная идея, которую я не рассматривал. Как вы можете определить, какой коэффициент выборки соответствует вашей функции стоимости?
Джессика
8

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

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

β0

βсзнак равноβ0-журнал(п+1-п+)

п+

NNNNN

RobertF
источник
3

Конечно, классифицируя все как «не спам», вы можете сказать, что, учитывая 100 писем, он правильно классифицирует 99 из них, но он также классифицирует как «не спам» единственный, помеченный как спам (100% ложное срабатывание). Оказывается, что метрика, выбранная вами для оценки алгоритма, не адаптируется. Это видео иллюстрирует концепцию.

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

Giuseppe
источник
0

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

Ахмад Хассанат
источник