Обсуждение участника:Imil Baltaniazov

Материал из MachineLearning.

Перейти к: навигация, поиск
Статья написана с использованием LLM Claude Sonnet 5 и проверена участником Imil Baltaniazov 15:56, 10 июля 2026 (MSD)


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

Содержание

Введение

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

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

Постановка задачи

Рассмотрим датасет с двумя признаками: возраст клиента (лет) и годовой доход (в рублях).

Клиент Возраст, лет Доход, руб./год
1 25 450 000
2 40 1 200 000
3 60 3 000 000

Возраст изменяется в диапазоне примерно 25–60 (разброс порядка десятков), доход — в диапазоне 450 000–3 000 000 (разброс порядка миллионов). Если такие данные подать, например, в метод k ближайших соседей, евклидово расстояние между объектами будет практически полностью определяться разницей в доходе — вклад возраста окажется пренебрежимо мал, хотя с содержательной точки зрения оба признака могут быть одинаково важны. Аналогичная проблема возникает при обучении линейных моделей градиентными методами: поверхность функции потерь становится сильно вытянутой вдоль направления признака с малым масштабом, что замедляет сходимость градиентного спуска.

Нормализация (min-max scaling)

Нормализация (min-max scaling) линейно переносит значения признака в заданный диапазон, обычно [0,1]. Для признака x преобразование задаётся формулой:

x' = \frac{x - x_{min}}{x_{max} - x_{min}}

где x_{min} и x_{max} — минимальное и максимальное значения признака на обучающей выборке. Для приведения к произвольному диапазону [a, b] используется обобщённая формула:

x' = a + \frac{(x - x_{min})(b - a)}{x_{max} - x_{min}}

Числовой пример. Возьмём признак «возраст» из таблицы выше: значения 25, 40, 60. Тогда x_{min}=25, x_{max}=60:

  • для 25: x' = (25-25)/(60-25) = 0{,}00
  • для 40: x' = (40-25)/(60-25) = 0{,}43
  • для 60: x' = (60-25)/(60-25) = 1{,}00

Когда применять. Min-max scaling полезен, когда требуется строго ограниченный диапазон значений — например, для входов нейронных сетей с сигмоидными или tanh-активациями, для алгоритмов обработки изображений (пиксели естественно ограничены), а также когда распределение признака заведомо не является нормальным и не имеет тяжёлых выбросов.

Чувствительность к выбросам. Основной недостаток метода — сильная зависимость от экстремальных значений x_{min} и x_{max}. Единственный аномальный объект способен «сжать» основную массу данных в узкий поддиапазон. Например, если среди клиентов появится доход в 50 000 000 руб., все остальные значения дохода после нормализации окажутся сосредоточены вблизи нуля, потеряв различимость.

В библиотеке scikit-learn метод реализован классом MinMaxScaler.

Стандартизация (z-score)

Стандартизация (standardization, z-score normalization) центрирует признак относительно среднего и масштабирует его так, чтобы дисперсия стала равна единице. Формула преобразования:

x' = \frac{x - \mu}{\sigma}

где \mu — выборочное среднее признака, \sigma — выборочное стандартное отклонение:

\mu = \frac{1}{n}\sum_{i=1}^{n} x_i, \qquad \sigma = \sqrt{\frac{1}{n}\sum_{i=1}^{n}(x_i - \mu)^2}

После преобразования признак имеет нулевое среднее и единичную дисперсию: E[x']=0, Var(x')=1. Полученные значения называют z-оценками (z-scores) — они показывают, на сколько стандартных отклонений конкретное наблюдение отстоит от среднего.

Числовой пример. Для того же признака «возраст» (25, 40, 60): \mu = 41{,}67, \sigma \approx 14{,}36. Тогда:

  • для 25: x' = (25-41{,}67)/14{,}36 \approx -1{,}16
  • для 40: x' = (40-41{,}67)/14{,}36 \approx -0{,}12
  • для 60: x' = (60-41{,}67)/14{,}36 \approx 1{,}28

Когда применять. Стандартизация — наиболее универсальный выбор для большинства алгоритмов, использующих градиентную оптимизацию (логистической регрессии, SVM, нейронных сетей), а также для методов, опирающихся на предположения о нормальном распределении данных или на разложение ковариационной матрицы, в первую очередь для метода главных компонент (PCA). В отличие от min-max scaling, стандартизация не привязана к жёсткому диапазону, поэтому она устойчивее к добавлению новых наблюдений и мягче реагирует на умеренные выбросы, хотя среднее и стандартное отклонение сами по себе также чувствительны к экстремальным значениям.

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

В scikit-learn метод реализован классом StandardScaler.

Робастное масштабирование

Робастное масштабирование (robust scaling) — метод, использующий устойчивые к выбросам статистики: медиану и межквартильный размах (IQR) вместо среднего и стандартного отклонения. Формула:

x' = \frac{x - Q_2}{Q_3 - Q_1}

где Q_2 — медиана (второй квартиль), Q_1 и Q_3 — первый и третий квартили, а разность Q_3 - Q_1 = IQR — межквартильный размах, охватывающий центральные 50% наблюдений.

Устойчивость к выбросам. Поскольку медиана и квартили являются робастными статистиками — их значение определяется порядком наблюдений, а не их абсолютной величиной, — единичные аномальные значения практически не влияют на результат преобразования. Это ключевое отличие от min-max scaling и стандартизации, где выброс напрямую входит в вычисление масштабирующих параметров (x_{max}, \mu, \sigma).

Пример влияния выброса. Пусть к выборке дохода (450 000, 1 200 000, 3 000 000) добавлено аномальное значение 50 000 000. При min-max scaling три «нормальных» наблюдения сожмутся в диапазон около 0–0,05. При робастном масштабировании медиана и IQR практически не изменятся, и относительное положение исходных наблюдений останется информативным.

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

В scikit-learn метод реализован классом RobustScaler.

Другие методы масштабирования

  • MaxAbsScaler — делит значения признака на максимум по модулю: x' = x / \max(|x|). Результат лежит в диапазоне [-1, 1], при этом сохраняется знак и разреженность данных (нулевые значения остаются нулевыми), поэтому метод удобен для разреженных матриц.
  • PowerTransformer — семейство степенных преобразований (Бокса—Кокса и Йео—Джонсона), приближающих распределение признака к нормальному. Преобразование Бокса—Кокса применимо только к строго положительным значениям:
x^{(\lambda)} = \begin{cases} \dfrac{x^\lambda - 1}{\lambda}, & \lambda \neq 0 \\ \ln(x), & \lambda = 0 \end{cases}

Преобразование Йео—Джонсона обобщает эту формулу на случай отрицательных и нулевых значений. Параметр \lambda подбирается по максимуму правдоподобия. Метод полезен для сильно скошенных распределений (доход, цены, время ожидания), после которых применение стандартизации даёт более симметричные признаки.

  • QuantileTransformer — непараметрическое преобразование, отображающее эмпирическую функцию распределения признака на равномерное или нормальное распределение. Метод наиболее устойчив к выбросам среди перечисленных, поскольку явно «сжимает» хвосты распределения, но является нелинейным и может исказить взаимные расстояния между близкими наблюдениями.

Влияние на алгоритмы машинного обучения

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

Алгоритм Чувствительность к масштабу Обоснование
Линейная регрессия, Логистическая регрессия Высокая Градиентная оптимизация и регуляризация зависят от масштаба коэффициентов
SVM Высокая Оптимизация зазора и ядровые функции зависят от геометрии пространства признаков
KNN Высокая Классификация напрямую основана на евклидовом (или ином) расстоянии
PCA Высокая Направления максимальной дисперсии определяются масштабом признаков
Нейронные сети Высокая Влияет на скорость и устойчивость сходимости градиентного спуска
Метод k-средних Высокая Кластеризация основана на расстояниях между объектами
Деревья решений Низкая Разбиения строятся по пороговым значениям отдельного признака, монотонные преобразования не меняют порядок
Случайный лес Низкая Ансамбль деревьев, наследует их нечувствительность к масштабу
Градиентный бустинг Низкая Базовые модели — деревья решений, разбиения не зависят от абсолютного масштаба
Наивный байесовский классификатор Низкая Оценивает распределения по каждому признаку независимо

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

Влияние на регуляризацию

Регуляризация штрафует величину коэффициентов модели, добавляя к функции потерь L1- или L2-норму вектора весов:

L1: \; \lambda \sum_{j=1}^{p} |w_j|, \qquad L2: \; \lambda \sum_{j=1}^{p} w_j^2

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

В результате без предварительной стандартизации регуляризация штрафует признаки не по их информ ативности, а по их исходному масштабу, что искажает как качество модели, так и интерпретацию значимости коэффициентов. По этой причине стандартизация признаков — обязательный шаг перед применением Ridge (L2), Lasso (L1) и Elastic Net регрессии.

Сравнение методов

Метод Формула Диапазон результата Устойчивость к выбросам Типичное применение
Min-max scaling (x-x_{min})/(x_{max}-x_{min}) [0,1] (фиксированный) Низкая Нейросети, изображения, признаки без выбросов
Стандартизация (z-score) (x-\mu)/\sigma не ограничен, \mu=0,\sigma=1 Средняя Линейные модели, SVM, PCA
Робастное масштабирование (x-Q_2)/(Q_3-Q_1) не ограничен Высокая Данные с выбросами
MaxAbsScaler x/\max(|x|) [-1,1] Низкая Разреженные данные
PowerTransformer Бокс—Кокс / Йео—Джонсон не ограничен, приближается к нормальному Средняя Скошенные распределения
QuantileTransformer отображение по квантилям [0,1] или нормальное Высокая Сильно неоднородные, многомодальные признаки

Общий недостаток всех перечисленных методов — параметры преобразования (минимум, максимум, среднее, медиана и т. д.) должны вычисляться исключительно на обучающей выборке и затем применяться к валидационной и тестовой выборкам без пересчёта, иначе возникает утечка данных (data leakage).

Пример: прогнозирование оттока клиентов

Рассмотрим упрощённую задачу бинарной классификации — прогноз оттока клиентов телекоммуникационной компании — с помощью логистической регрессии. Используются два признака: количество месяцев обслуживания (tenure) и ежемесячный платёж (monthly charges, руб.).

Клиент tenure, мес. monthly charges, руб. Отток
A 2 1 800 1
B 34 950 0
C 58 2 400 0
D 4 3 100 1

До масштабирования диапазон tenure — [2, 58], диапазон monthly charges — [950, 3100]. При обучении логистической регрессии без предобработки градиентный спуск будет крайне медленно двигаться вдоль оси tenure, а L2-регуляризация станет несоразмерно штрафовать коэффициент при tenure, поскольку для компенсации малого масштаба этот коэффициент должен быть на порядок больше коэффициента при monthly charges.

После стандартизации (\mu_{tenure}=24{,}5, \sigma_{tenure}\approx23{,}0; \mu_{charges}=2062{,}5, \sigma_{charges}\approx811{,}0) значения принимают вид:

Клиент tenure' charges'
A -0,98 -0,32
B 0,41 -1,37
C 1,46 0,42
D -0,89 1,28

Теперь оба признака имеют сопоставимый масштаб, градиентный спуск сходится быстрее, а величина коэффициентов при регуляризации отражает реальный вклад признака в предсказание, а не его исходную единицу измерения. На практике преобразование выполняется методом fit_transform объекта StandardScaler на обучающей выборке и методом transform — на тестовой:

from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression

scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)

model = LogisticRegression()
model.fit(X_train_scaled, y_train)

Практические рекомендации

  • Для алгоритмов, основанных на расстояниях (KNN, k-means, SVM с ядрами), а также для PCA — использовать стандартизацию (StandardScaler) в качестве метода по умолчанию.
  • Для нейронных сетей и данных с известным ограниченным диапазоном (например, пиксели изображений) — использовать min-max scaling (MinMaxScaler).
  • При наличии выбросов, которые нежелательно удалять из выборки, — использовать роба

стное масштабирование (RobustScaler).

  • Для сильно скошенных распределений (доходы, цены) перед стандартизацией целесообразно применить PowerTransformer, чтобы приблизить распределение к симметричному.
  • Для разреженных матриц (например, после TF-IDF векторизации) — использовать MaxAbsScaler, не нарушающий разреженность.
  • Для древовидных моделей (деревья решений, случайный лес, градиентный бустинг) масштабирование, как правило, не требуется.
  • Параметры масштабирования всегда обучаются только на обучающей выборке и затем применяются к валидационной и тестовой выборкам без повторного вычисления.
  • Перед применением L1- или L2-регуляризации признаки необходимо стандартизировать в обязательном порядке.

См. также

Литература

  • Hastie T., Tibshirani R., Friedman J. The Elements of Statistical Learning: Data Mining, Inference, and Prediction. — 2nd ed. — Springer, 2009.
  • Bishop C. M. Pattern Recognition and Machine Learning. — Springer, 2006.
  • Géron A. Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow. — 3rd ed. — O'Reilly Media, 2022.
  • Box G. E. P., Cox D. R. An Analysis of Transformations // Journal of the Royal Statistical Society, Series B. — 1964. — Vol. 26, No. 2. — P. 211—252.
  • Yeo I.-K., Johnson R. A. A New Family of Power Transformations to Improve Normality or Symmetry // Biometrika. — 2000. — Vol. 87, No. 4. — P. 954—959.
  • Документация scikit-learn: preprocessing — scikit-learn.org/stable/modules/preprocessing.html