Масштабирование (Scaling)
Масштабирование меняет диапазон или распределение значений каждого признака отдельно.
Не путать с нормализацией! Нормализация меняет длину вектора признаков каждого объекта целиком и применяется, когда важно сохранить направления векторов и углы между ними. При этом не так важно сохранять длину векторов. Такое встречается в задачах обработки текста, изображений, в рекомендательных системах.
Масштабирование – необходимый шаг для приведения признаков к одинаковому масштабу. Если признаки имеют разный масштаб, модель неизбежно будет придавать большее значение более масштабным признакам (с большими числовыми значениями и размахом), и меньшее значение признакам с меньшим масштабом.
Важно! Перед проведением масштабирования необходимо устранить выбросы в данных или использовать специальные (робастные – устойчивые к выбросам) способы масштабирования.
Способы масштабирования:
Первые два способа – наиболее часто используемы.
- стандартизация
- диапазонное шкалирование
- масштабирование средним
Стандартизация
Приведение значений признака к нулевому среднему и единичной дисперсии.
X = (Xi – Xmean) / sigma
Реализация
from sklearn.preprocessing import StandardScaler
import pandas as pd
scaler = StandardScaler()
X_std = scaler.fit_transform(X)
# Метод возвращает массив numpy
X_std
# Для перевода в датафрейм
X_1 = pd.DataFrame(X_std, columns=X.columns)
Диапазонное шкалирование – minmax
Все значения признака умещаются в диапазон от 0 до 1. При этом нули остаются нулями.
X = (Xi – min(X)) / (max(X) – min(X))
Есть обобщенная формула для выбора значений диапазона [a, b]:
X = a + ((Xi – min(X)) / (max(X) – min(X))) * (b – a)
Масштабирование средним
X = (Xi – Xmean ) / (max(X) – min(X))
Нормализация
Это изменение масштаба данных таким образом, чтобы их длина (норма) стала равной единице.
Нормализация применяется к вектору признаков одного наблюдения, когда важна их относительная длина и направление вектора.
L2-нормализация
Наиболее частый вариант нормализации.
Xnormalized = X / ||X||2 = X / sqrt(X12 + X22 + … + Xn2)
L1-нормализация
Xnormalized = X / ||X||1 = X / (|X1| + |X2| + … + |Xn|)
Нормализация меняет длину вектора признаков каждого объекта целиком и применяется, когда важно сохранить направления векторов и углы между ними. При этом не так важно сохранять длину векторов. Такое встречается в задачах обработки текста, изображений, в рекомендательных системах.