Зачем масштабировать объекты

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

Что такое масштабирование функций

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

  • Изменение масштаба

Изменение масштаба означает добавление или вычитание константы из вектора, а затем умножение или деление вектора на константу (f (x) = ax + b). Примером может служить изменение единиц измерения, например Цельсия на Фаренгейт.

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

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

Есть две нормализации, которые можно сделать.

  1. Мин-макс нормализация:

Мы масштабируем диапазон значений до [-1,1] или [0,1]. Формула

2. Средняя нормализация:

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

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

Стандартизация означает доведение среднего значения вектора до 0 и стандартного отклонения до 1. Обычно это делается путем вычитания среднего значения и деления на стандартное отклонение. Стандартизованное значение также называется Z-оценкой.

Где делать масштабирование функций

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

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

Есть другие алгоритмы, в которых помогает масштабирование, например, анализ главных компонентов (PCA), k-ближайших соседей (Knn), линейная / логистическая регрессия (при регуляризации), где масштабирование помогает нам избежать перекоса в сторону большой величины. особенность. Даже нейронные сети выигрывают от масштабирования функций.

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

Как: модуль предварительной обработки scikit-learn имеет отличный API и документацию по масштабированию функций здесь.