И что попробовать вместо этого

Авторы: Филипп Адкинс, Мишель Гарнер и Дэйв Коойстра.

Получил 99 записей, а Trues: только одну.

Добро пожаловать в мир несбалансированных наборов данных.

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

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

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

Ошибка 1: при первом подходе по умолчанию используется обработка набора данных

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

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

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

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

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

Что попробовать вместо

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

Ошибка 2: полагаться на «предсказание» для предсказания

Для моделей с API-интерфейсами в стиле scikit-learn использование функции «предсказания» бинарного классификатора дает предсказание дискретного класса (например, 0 или 1). Некоторые упускают из виду, что функция «предсказания» обычно основана на эвристике, которая применяет внутренний порог принятия решения по умолчанию, равный 0,5, к функции принятия решения модели. Другими словами, если решающая функция модели равна 0,5 или больше, «предсказание» даст «Истина» или 1, а в противном случае — «Ложь» или 0.

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

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

Что попробовать вместо

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

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

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

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

Этот результат не является исключением. На самом деле, можно почти гарантировать, что это произойдет каждый раз, используя простые рассуждения. Производительность модели, использующей «предсказание», содержится в виде подмножества результатов, доступных при прослушивании различных порогов принятия решений. Поскольку max(V) ›= v, если v находится в V, конечно, мы можем получить лучшую производительность, настроив порог принятия решения!

Ошибка 3: полагаться на значения алгоритма по умолчанию

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

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

Что попробовать вместо

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

Например, XGBoost работает быстрее и точнее, когда для «base_score» установлено соотношение положительных выборок в данных. Гиперпараметры XGBoost по умолчанию заставляют алгоритм проводить много итераций повышения, изучая смещение, замедляя обучение и потенциально вызывая ошибочные повороты алгоритма. Установка правильной инициализации константы позволяет алгоритму сосредоточиться на изучении изменений в данных, а не на приближении к константе.

Мы демонстрируем это в блокноте связанных экспериментов. Используя набор данных с соотношением баланса классов 99 к 1, мы сравниваем базовую оценку XGBoost по умолчанию с рекомендованной нами инициализацией XGBoost.

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

Ошибка 4: При построении модели повторная выборка или повторное взвешивание для управления статистикой выходного класса

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

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

Что попробовать вместо

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

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

В эксперименте Повторная выборка или повторное взвешивание для управления выходной статистикой в связанном блокноте мы проводим следующий эксперимент:

  • Получите конкретное значение «отзыва» с помощью передискретизации.
  • Покажите, что мы можем найти порог принятия решения, используя модель, обученную на необработанных данных, которая достигает того же отзыва.
  • Повторите для различных значений отзыва, полученных в результате повторной выборки, и покажите, что мы можем сопоставлять их каждый раз.
  • Сравните значения точности.

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

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

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

Ошибка 5: Настройка и оценка производительности модели на валидационных или тестовых наборах с передискретизацией

Как правило, наборы данных делятся на три группы:

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

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

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

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

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

Что попробовать вместо

Если вам по какой-то причине все-таки понадобится повторная выборка, создайте проверочные и тестовые наборы до повторной выборки, а не после.

Сохраняйте четкое разделение между всеми разделами набора данных и будьте особенно внимательны к набору тестов — это последний путь к проверке жизнеспособности модели в производственной среде. Это должно быть как можно ближе к производственным ожиданиям.

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

Вот таблица результатов:

Первое, что следует отметить, это то, что метрики оценки в наборе проверки с повторной выборкой выглядят намного лучше, чем те же самые метрики, вычисленные в наборе проверки без повторной выборки. Например, показатель f1 в проверочном наборе с повторной выборкой составляет 79 % по сравнению с 50 % в проверочном наборе без повторной выборки. Это главный мотивирующий фактор, стоящий за этой ошибкой. Эта статистика выглядит намного лучше, но внешность может быть обманчивой. Это ложные результаты.

Напомним, что эти модели были выбраны для максимизации показателя f1. Мы можем видеть «истинную» производительность модели, отраженную в «prod_f1_score». Набор данных «prod» был отделен до того, как была проведена какая-либо наука о данных, и он отражает данные, которые модель увидит после развертывания.

Несмотря на то, что модель, обученная и оцененная на наборе данных с повторной выборкой, показала результат f1 79%, при оценке на репрезентативном наборе тестов мы обнаружили, что она значительно хуже — 38%. Статистика передискретизированного проверочного набора была чрезмерно оптимистичной. Представьте, что вы принимаете деловое решение на основе статистики, которая не соответствует реальности!

С другой стороны, модель, обученная на нетронутом наборе данных, по оценкам, набрала 50% f1 на основе проверки, чего она по существу достигла при оценке на репрезентативном наборе тестов (49%).

Без повторной выборки не только предполагаемая производительность модели с использованием проверочного набора была намного ближе к реальности, которую мы достигли в «prod», но и модель была значительно лучше — оценка f1 49% против 38%.

Варианты использования для повторной выборки или повторного взвешивания данных

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

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

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

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

Подведем итоги, которые можно распечатать для вашей пробковой доски: