MinMaxScaler против StandardScaler против RobustScaler

Масштабирование функций - это процесс нормализации диапазона функций в наборе данных.

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

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

В этой статье мы обсудим:

  • Почему важно масштабирование функций
  • Разница между нормализацией и стандартизацией
  • Почему и как масштабирование функций влияет на производительность модели

В частности, мы рассмотрим 3 различных средства масштабирования в библиотеке Scikit-learn для масштабирования функций, а именно:

  1. MinMaxScaler
  2. StandardScaler
  3. RobustScaler

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

Набор данных

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

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

Изучить данные

Давайте сначала получим общее представление о наших данных.

Это первые 5 строк набора данных.

Как видим, у нас есть 13 независимых переменных и целевая переменная.

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

Кроме того, также оказывается, что все наши независимые переменные, а также целевая переменная относятся к типу данных float64.

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

Именно здесь масштабирование функций может помочь нам решить эту проблему.

Понимание эффектов различных скейлеров

В этом разделе мы узнаем различие между нормализацией и стандартизацией. Кроме того, мы также рассмотрим трансформирующие эффекты 3 различных методов масштабирования функций в Scikit-learn.

Нормализация

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

MinMaxScaler - это функция Scikit-learn для нормализации.

Стандартизация

С другой стороны, стандартизация или нормализация Z-показателя - это еще один метод масштабирования, при котором значения в столбце масштабируются таким образом, чтобы они демонстрировали свойства стандартного гауссовского распределения, то есть среднее значение = 0 и дисперсия = 1.

StandardScaler - это функция Scikit-learn для стандартизации.

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

Нормализация против стандартизации

Здесь возникает вопрос на миллион долларов - когда нам следует использовать нормализацию, а когда - стандартизацию?

Как бы я ни ненавидел ответ, который собираюсь дать, это зависит.

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

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

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

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

Применение

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

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

  • ZN
  • ВОЗРАСТ
  • НАЛОГ
  • B

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

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

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

Какие модели требуют масштабирования функций?

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

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

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

  • Алгоритмы на основе градиентного спуска
  • Алгоритмы на основе расстояния
  • Древовидные алгоритмы

Алгоритмы на основе градиентного спуска

Градиентный спуск - это итеративный алгоритм оптимизации, который сводит нас к минимуму функции.

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

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

Посмотрите это видео, где Эндрю Нг более подробно объясняет алгоритм градиентного спуска.

Алгоритмы на основе расстояния

Алгоритмы, лежащие в основе моделей, основанных на расстоянии, делают их наиболее уязвимыми для немасштабированных данных.

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

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

Древовидные алгоритмы

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

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

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

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

Сравнение точности модели

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

Я выбрал 2 алгоритма на основе расстояния (KNN и SVR), а также 1 алгоритм на основе дерева (регрессор деревьев решений) для нашего небольшого эксперимента.

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

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

KNN

Результаты модели KNN следующие.

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

В этом примере KNN лучше всего работает с RobustScaler.

СВР

Результаты модели SVR следующие.

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

В этом примере SVR лучше всего работает в StandardScaler.

Древо решений

Результаты модели дерева решений следующие.

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

Вывод

Молодцы, что дочитали статью до конца!

Подводя итог, масштабирование объектов - это процесс преобразования объектов в наборе данных таким образом, чтобы их значения имели одинаковый масштаб.

В этой статье мы узнали разницу между нормализацией и стандартизацией, а также 3 различных средства масштабирования в библиотеке Scikit-learn: MinMaxScaler, StandardScaler и RobustScaler.

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

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

Удачного обучения!





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

Следуй за мной на других платформах