Зачем масштабировать объекты
В большинстве случаев разные характеристики в данных могут иметь разную величину. Например, в случае наборов данных о покупках продуктов, мы обычно наблюдаем вес продукта в граммах или фунтах, которые будут большими числами, в то время как цена продукта может быть в долларах. которые будут меньшими числами. Многие алгоритмы машинного обучения используют евклидово расстояние между точками данных в своих вычислениях. Наличие двух функций с разным диапазоном чисел позволит функции с большим диапазоном доминировать в алгоритме.
Что такое масштабирование функций
Масштабирование признака - это метод предварительной обработки, при котором мы изменяем диапазон числового признака. В первую очередь, с числовым признаком можно сделать три вещи:
- Изменение масштаба
Изменение масштаба означает добавление или вычитание константы из вектора, а затем умножение или деление вектора на константу (f (x) = ax + b). Примером может служить изменение единиц измерения, например Цельсия на Фаренгейт.
- Нормализация
Нормализация означает разделение признака с Нормой вектора. По сути, мы хотим, чтобы евклидово расстояние вектора было равно 1.
Есть две нормализации, которые можно сделать.
- Мин-макс нормализация:
Мы масштабируем диапазон значений до [-1,1] или [0,1]. Формула
2. Средняя нормализация:
Вместо того, чтобы использовать минимальное значение для настройки, мы используем среднее значение функции.
- Стандартизация
Стандартизация означает доведение среднего значения вектора до 0 и стандартного отклонения до 1. Обычно это делается путем вычитания среднего значения и деления на стандартное отклонение. Стандартизованное значение также называется Z-оценкой.
Где делать масштабирование функций
Существует семейство алгоритмов, которые инвариантны к масштабу, как и древовидные алгоритмы, где масштабирование не требуется, поскольку они не являются моделями на основе расстояния.
Некоторые семейные алгоритмы, такие как линейный дискриминантный анализ (LDA), наивный байесовский анализ, присваивают веса функциям в зависимости от их диапазона, и, следовательно, масштабирование не влияет на эти алгоритмы.
Есть другие алгоритмы, в которых помогает масштабирование, например, анализ главных компонентов (PCA), k-ближайших соседей (Knn), линейная / логистическая регрессия (при регуляризации), где масштабирование помогает нам избежать перекоса в сторону большой величины. особенность. Даже нейронные сети выигрывают от масштабирования функций.
Но в целом функции масштабируются, так как это помогает быстрее сходиться в градиентных алгоритмах. Как показано ниже
Как: модуль предварительной обработки scikit-learn имеет отличный API и документацию по масштабированию функций здесь.