Сравнение StandardScaler и MinMaxScaler в смешанных наборах данных

При сопоставлении данных для создания прогностической модели специалистам по данным часто приходится масштабировать свой набор данных, чтобы ни один конкретный столбец не оказал чрезмерного влияния на окончательную модель. Если бы весь набор данных был полностью числовым (дискретным или непрерывным), предпочтительным инструментом в sklearn был бы StandardScaler, который масштабирует каждый столбец таким образом, чтобы среднее значение равнялось 0, а стандартное отклонение равнялось 1. Это фактически ставит каждый столбец в равные условия игры. Однако что, если значительная часть набора данных является двоичной? Возможно, результат OneHotEncoding?

Теперь у нас есть 2 варианта использования:

  • Используйте StandardScaler для всего набора данных, включая двоичные столбцы.
  • Используйте MinMaxScaler только для числовых столбцов с масштабированием от 0 до 1.

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

Я использовал набор данных, предоставленный в рамках конкурса танзанийских скважин на воду здесь. Это дает нам исчерпывающий набор данных как категориальных, так и числовых данных. Результирующий кадр данных до масштабирования содержит 57 500 записей с 250 столбцами One Hot Encoded и 3 числовыми столбцами.

Для целей этих испытаний я:

  • использовалась волшебная команда Jupyter %time для отслеживания времени вычислений
  • измерил время масштабирования данных
  • измерили время моделирования на предварительно масштабированных данных (логистическая регрессия)
  • измерили время масштабирования и моделирования для нескольких разных алгоритмов
  • использовал GridSearchCV с использованием идентичных параметров для запуска моделей как в конвейерах стандартного масштабирования, так и в конвейерах минимального и максимального масштабирования.
  • число используемых ядер, n_jobs, оставалось постоянным на протяжении всего теста. Примечание: это относится только к GridSearchCV.

Масштабирование конвейеров

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

Тесты

Использование только масштабируемых конвейеров

В этом тесте мы используем вышеуказанные конвейеры масштабирования для масштабирования набора данных OneHotEncoded до нашего «обработанного» набора данных.

Логистическая регрессия на предварительно масштабированных данных

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

Масштабирование и логистическая регрессия

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

Масштабирование и стохастический градиентный спуск

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

Масштабирование и XGBoost

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

Полученные результаты

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

Выводы

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

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

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

Следующие шаги

Добавьте больше моделей

Увеличьте количество подходов

Отслеживайте не только общий балл, но и точность, отзыв, оценку f1.

Гитхаб

Блокнот для вышеупомянутого эксперимента можно найти здесь