Ануша Мохан, специалист по анализу данных

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

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

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

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

При построении модели с несбалансированными данными есть несколько недостатков:

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

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

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

Кроме того, я сделал этот набор данных сильно несбалансированным, сохранив только образец положительных примеров (злокачественная опухоль) из исходного набора данных. Этот предварительно обработанный набор данных содержит 456 пациентов, из которых 2,6% имеют злокачественную опухоль (12 пациентов) и 97,3% имеют доброкачественную опухоль (444 пациента). Наконец, я произвольно отобрал 30% предварительно обработанного набора данных, который будет представлен как чистый тестовый набор, чтобы я мог оценить модель по действительно невидимым данным.

Весь код и данные можно найти в этом репозитории GitHub.

Показатели оптимизации модели

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

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

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

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

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

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

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

Перекрестная проверка данных с передискретизацией (с использованием SMOTE)
Для класса меньшинства в обучающем наборе была передискретизация до соотношения классов 1, чтобы улучшить качество прогнозов модели за счет увеличения границы принятия решения. Затем была проведена пятикратная перекрестная проверка с использованием этого сбалансированного обучающего набора, чтобы получить оценку производительности набора тестов. Взяв средний балл отзыва по всем 5 итерациям, мы получаем модельный балл 100%!

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

И мы правы. Когда модель, обученная с помощью сбалансированного обучающего набора, применяется к набору тестов, оценка запоминания теста составляет только 50%.

Так что случилось? Предполагалось, что перекрестная проверка будет отражать производительность набора тестов, но в данном случае она не сработала. Моя модель переоснащена?

Сначала мы можем проверить распределение функций в обучающем наборе. Когда мы строим графики плотности ядра, мы видим, что только 2 из 9 функций показывают высокую различительную способность между классом 0 и классом 1.

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

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

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

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

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

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

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

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

GitHub: https://github.com/lumiata/tech_blog

Посетите Lumiata на www.lumiata.com и подпишитесь на Twitter через @lumiata.
Найдите нас в LinkedIn: www.linkedin.com/company/lumiata

Цитаты:
1. О.Л. Мангасарян и У.Х. Вольберг: «Диагностика рака с помощью линейного программирования», SIAM News, том 23, номер 5, сентябрь 1990 г., стр. 1 и 18.

2. Уильям Х. Вольберг и О.Л. Мангасарян: «Многоповерхностный метод разделения паттернов для медицинской диагностики, применяемый в цитологии груди», Труды Национальной академии наук США, том 87, декабрь 1990 г., стр. 9193–9196.