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

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

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

В приведенном выше фрагменте кода мы использовали SMOTE как часть конвейера. Этот конвейер не является конвейером Scikit-Learn, а конвейером «imblearn». Поскольку в SMOTE нет метода fit_transform, мы не можем использовать его с конвейером Scikit-Learn.

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

Теперь мы проведем эксперимент, сгенерировав 500 синтетических наборов данных с дисбалансом классов, используя метод make_classification пакета Scikit-Learn. Этот эксперимент проводится для того, чтобы оценить, случайны ли вышеприведенные наблюдения. Поскольку мы используем логистическую регрессию, мы гарантируем отсутствие мультиколлинеарности в сгенерированных наборах данных.

В приведенном выше фрагменте кода мы определили функцию с именем «модель», которая принимает входные функции (X), классы (y) и логическое значение «smote» (указывает, должен ли SMOTE быть частью конвейера) в качестве аргументов. Сначала мы разделяем данные на обучающие и тестовые наборы, затем на основе аргумента «smote» мы включаем SMOTE в конвейер (SMOTE будет частью конвейера, если «smote» имеет значение True) и вычисляем оценки перекрестной проверки и тестирования. .

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

N_SAMPLES:
Number of examples in the dataset.
N_FEATURES:
Number of input features.
N_INFORMATIVE:
Number of features carrying information.
CLASS_SEP:
Magnitude of class separation. The higher the magnitude, the simpler would be the classification problem.
MINORITY_CLASS_WEIGHT:
% of minority class samples. 0.26 means the minority class (1) forms 26% of the dataset.
SMOTE_IN_PIPELINE_CV_SCORE:
CV score when SMOTE is included in the pipeline. This is the right way of using SMOTE.
SMOTE_IN_PIPELINE_TEST_SCORE:
Test score or score on unseen data when SMOTE is included in the pipeline. This is the right way of using SMOTE.
SMOTE_OUTSIDE_PIPELINE_CV_SCORE:
CV score when SMOTE is not included in the pipeline. This is the wrong way of using SMOTE.
SMOTE_OUTSIDE_PIPELINE_TEST_SCORE:
Test score or score on unseen data when SMOTE is not included in the pipeline. This is the wrong way of using SMOTE.
SMOTE_IN_PIPELINE_PERCENT_DIFF:
The difference between the cross-validation and test score when SMOTE is included in the pipeline. This is the right way of using SMOTE.
SMOTE_OUTSIDE_PIPELINE_PERCENT_DIFF:
The difference between the cross-validation and test score when SMOTE is not included in the pipeline. This is the wrong way of using SMOTE.

Из нескольких приведенных выше записей фрейма данных видно, что в большинстве случаев значение «SMOTE_IN_PIPELINE_PERCENT_DIFF» очень низкое по сравнению с «SMOTE_OUTSIDE_PIPELINE_PERCENT_DIFF». Мы воспользуемся помощью статистики, чтобы убедиться, что эти наблюдения не случайны.

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

Мы видим, что процентная разница в результатах перекрестной проверки и тестов, когда SMOTE включен в конвейер («SMOTE_IN_PIPELINE_PERCENT_DIFF»), мала по сравнению с теми, где SMOTE находится вне конвейера («SMOTE_OUTSIDE_PIPELINE_PERCENT_DIFF»). Теперь удалим выбросы.

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

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

Выводы

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

Ограничения

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

  1. Выбранный набор данных имеет характеристики в пределах диапазонов, используемых для проведения эксперимента (т. Е. Количество выборок должно быть от 10 000 до 50 000 и т. Д.). Например, вы не можете оценить параметры всего населения, просто опросив «женщин» в возрастном диапазоне «20–30».
  2. Используемая модель - логистическая регрессия. Влияние других алгоритмов на результаты в этом эксперименте не оценивается. Следовательно, мы не можем обобщить эти наблюдения на все алгоритмы. Например, на алгоритм случайного леса может не сильно влиять (в отличие от алгоритма логистической регрессии) положение SMOTE в конвейере. Эксперимент должен проводиться с несколькими алгоритмами, чтобы исключить влияние алгоритма на результат.

Предложения для будущих исследований

  1. Аналогичный эксперимент можно провести, увеличив размер выборки с нынешних 500 и используя более разнообразные наборы данных.
  2. Оценка влияния различных алгоритмов на результаты может быть сделана, чтобы гарантировать, что наблюдения не меняются от одного алгоритма к другому.
  3. Коэффициент корреляции между MINORITY_CLASS_WEIGHT и SMOTE_OUTSIDE_PIPELINE_PERCENT_DIFF составляет -0,45, а коэффициент корреляции MINORITY_CLASS_WEIGHT и SMOTE_IN_PIPELINE_PERCENT_DIFF равен -0,2. Это показывает, что по мере уменьшения размера класса меньшинства процентная разница между перекрестной проверкой и оценкой теста, когда SMOTE находится за пределами конвейера, увеличивается. Аналогичный эксперимент можно провести, изменив «MINORITY_CLASS_WEIGHT» и контролируя все остальные параметры синтетического набора данных. Это позволяет нам напрямую найти влияние веса класса меньшинства на процентную разницу между перекрестной проверкой и результатами тестов при использовании методов передискретизации / недостаточной выборки наряду с методом перекрестной проверки.