Нормализация и стандартизация признаков
Материал из MachineLearning.
| | Статья написана с использованием LLM Claude Sonnet 5 и проверена участником Imil Baltaniazov 15:56, 10 июля 2026 (MSD) |
Нормализация и стандартизация признаков — группа методов предобработки данных, предназначенных для приведения числовых признаков к сопоставимому масштабу. Эти преобразования не изменяют форму распределения признака по существу (за исключением специальных методов, таких как преобразование Бокса—Кокса), а лишь линейно или монотонно переносят значения в новый диапазон или к новым статистическим характеристикам.
Введение
Многие алгоритмы машинного обучения чувствительны к масштабу входных признаков. Если один признак измеряется в единицах порядка десятков тысяч, а другой — в единицах порядка нескольких единиц, алгоритмы, основанные на вычислении расстояний, скалярных произведений или градиентной оптимизации, начинают неявно придавать больший вес признаку с большим числовым разбросом — вне зависимости от его реальной информативности. Это приводит к смещённым, плохо интерпретируемым и медленно обучающимся моделям.
Нормализация и стандартизация решают эту проблему, приводя признаки к единой шкале до подачи в модель. Несмотря на то, что оба термина в бытовом употреблении нередко смешиваются, в строгом смысле они обозначают разные преобразования: нормализация переносит значения в фиксированный диапазон (чаще всего ), а стандартизация центрирует признак и приводит его дисперсию к единице. Выбор конкретного метода зависит от природы данных, наличия выбросов и используемого алгоритма.
Постановка задачи
Рассмотрим датасет с двумя признаками: возраст клиента (лет) и годовой доход (в рублях).
| Клиент | Возраст, лет | Доход, руб./год |
|---|---|---|
| 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) линейно переносит значения признака в заданный диапазон, обычно . Для признака
преобразование задаётся формулой:
где и
— минимальное и максимальное значения признака на обучающей выборке. Для приведения к произвольному диапазону
используется обобщённая формула:
Числовой пример. Возьмём признак «возраст» из таблицы выше: значения 25, 40, 60. Тогда ,
:
- для 25:
- для 40:
- для 60:
Когда применять. Min-max scaling полезен, когда требуется строго ограниченный диапазон значений — например, для входов нейронных сетей с сигмоидными или tanh-активациями, для алгоритмов обработки изображений (пиксели естественно ограничены), а также когда распределение признака заведомо не является нормальным и не имеет тяжёлых выбросов.
Чувствительность к выбросам. Основной недостаток метода — сильная зависимость от экстремальных значений и
. Единственный аномальный объект способен «сжать» основную массу данных в узкий поддиапазон. Например, если среди клиентов появится доход в 50 000 000 руб., все остальные значения дохода после нормализации окажутся сосредоточены вблизи нуля, потеряв различимость.
В библиотеке scikit-learn метод реализован классом MinMaxScaler.
Стандартизация (z-score)
Стандартизация (standardization, z-score normalization) центрирует признак относительно среднего и масштабирует его так, чтобы дисперсия стала равна единице. Формула преобразования:
где — выборочное среднее признака,
— выборочное стандартное отклонение:
После преобразования признак имеет нулевое среднее и единичную дисперсию: ,
. Полученные значения называют z-оценками (z-scores) — они показывают, на сколько стандартных отклонений конкретное наблюдение отстоит от среднего.
Числовой пример. Для того же признака «возраст» (25, 40, 60): ,
. Тогда:
- для 25:
- для 40:
- для 60:
Когда применять. Стандартизация — наиболее универсальный выбор для большинства алгоритмов, использующих градиентную оптимизацию (логистической регрессии, SVM, нейронных сетей), а также для методов, опирающихся на предположения о нормальном распределении данных или на разложение ковариационной матрицы, в первую очередь для метода главных компонент (PCA). В отличие от min-max scaling, стандартизация не привязана к жёсткому диапазону, поэтому она устойчивее к добавлению новых наблюдений и мягче реагирует на умеренные выбросы, хотя среднее и стандартное отклонение сами по себе также чувствительны к экстремальным значениям.
Важно подчеркнуть: стандартизация не делает распределение признака нормальным — она лишь центрирует и масштабирует его, сохраняя исходную форму распределения (асимметрию, эксцесс).
В scikit-learn метод реализован классом StandardScaler.
Робастное масштабирование
Робастное масштабирование (robust scaling) — метод, использующий устойчивые к выбросам статистики: медиану и межквартильный размах (IQR) вместо среднего и стандартного отклонения. Формула:
где — медиана (второй квартиль),
и
— первый и третий квартили, а разность
— межквартильный размах, охватывающий центральные 50% наблюдений.
Устойчивость к выбросам. Поскольку медиана и квартили являются робастными статистиками — их значение определяется порядком наблюдений, а не их абсолютной величиной, — единичные аномальные значения практически не влияют на результат преобразования. Это ключевое отличие от min-max scaling и стандартизации, где выброс напрямую входит в вычисление масштабирующих параметров (,
,
).
Пример влияния выброса. Пусть к выборке дохода (450 000, 1 200 000, 3 000 000) добавлено аномальное значение 50 000 000. При min-max scaling три «нормальных» наблюдения сожмутся в диапазон около 0–0,05. При робастном масштабировании медиана и IQR практически не изменятся, и относительное положение исходных наблюдений останется информативным.
Метод рекомендуется использовать при работе с данными, содержащими выбросы, которые нежелательно удалять (например, в финансовых или медицинских данных, где экстремальные значения могут быть содержа тельно важны).
В scikit-learn метод реализован классом RobustScaler.
Другие методы масштабирования
- MaxAbsScaler — делит значения признака на максимум по модулю:
. Результат лежит в диапазоне
, при этом сохраняется знак и разреженность данных (нулевые значения остаются нулевыми), поэтому метод удобен для разреженных матриц.
- PowerTransformer — семейство степенных преобразований (Бокса—Кокса и Йео—Джонсона), приближающих распределение признака к нормальному. Преобразование Бокса—Кокса применимо только к строго положительным значениям:
Преобразование Йео—Джонсона обобщает эту формулу на случай отрицательных и нулевых значений. Параметр подбирается по максимуму правдоподобия. Метод полезен для сильно скошенных распределений (доход, цены, время ожидания), после которых применение стандартизации даёт более симметричные признаки.
- QuantileTransformer — непараметрическое преобразование, отображающее эмпирическую функцию распределения признака на равномерное или нормальное распределение. Метод наиболее устойчив к выбросам среди перечисленных, поскольку явно «сжимает» хвосты распределения, но является нелинейным и может исказить взаимные расстояния между близкими наблюдениями.
Влияние на алгоритмы машинного обучения
Чувствительность алгоритмов к масштабу признаков определяется тем, используют ли они расстояния, скалярные произведения или величину коэффициентов в функции потерь.
| Алгоритм | Чувствительность к масштабу | Обоснование |
|---|---|---|
| Линейная регрессия, Логистическая регрессия | Высокая | Градиентная оптимизация и регуляризация зависят от масштаба коэффициентов |
| SVM | Высокая | Оптимизация зазора и ядровые функции зависят от геометрии пространства признаков |
| KNN | Высокая | Классификация напрямую основана на евклидовом (или ином) расстоянии |
| PCA | Высокая | Направления максимальной дисперсии определяются масштабом признаков |
| Нейронные сети | Высокая | Влияет на скорость и устойчивость сходимости градиентного спуска |
| Метод k-средних | Высокая | Кластеризация основана на расстояниях между объектами |
| Деревья решений | Низкая | Разбиения строятся по пороговым значениям отдельного признака, монотонные преобразования не меняют порядок |
| Случайный лес | Низкая | Ансамбль деревьев, наследует их нечувствительность к масштабу |
| Градиентный бустинг | Низкая | Базовые модели — деревья решений, разбиения не зависят от абсолютного масштаба |
| Наивный байесовский классификатор | Низкая | Оценивает распределения по каждому признаку независимо |
Таким образом, масштабирование признаков критично для всех методов, работающих с расстояниями, скалярными произведениями или градиентной оптимизацией, и практически не влияет на модели, основанные на древовидных разбиениях.
Влияние на регуляризацию
Регуляризация штрафует величину коэффициентов модели, добавляя к функции потерь L1- или L2-норму вектора весов:
Штраф применяется одинаково ко всем коэффициентам , независимо от того, какому признаку они соответствуют. Если признаки измеряются в разных масштабах, коэффициенты, соответствующие признакам с малым разбросом значений, вынуждены принимать большие абсолютные значения, чтобы вносить сопоставимый вклад в предсказание, — и именно эти коэффициенты регуляризация штрафует сильнее всего, хотя содержательно признак может быть не менее важен, чем остальные.
В результате без предварительной стандартизации регуляризация штрафует признаки не по их информ ативности, а по их исходному масштабу, что искажает как качество модели, так и интерпретацию значимости коэффициентов. По этой причине стандартизация признаков — обязательный шаг перед применением Ridge (L2), Lasso (L1) и Elastic Net регрессии.
Сравнение методов
| Метод | Формула | Диапазон результата | Устойчивость к выбросам | Типичное применение |
|---|---|---|---|---|
| Min-max scaling | | | Низкая | Нейросети, изображения, признаки без выбросов |
| Стандартизация (z-score) | | не ограничен, | Средняя | Линейные модели, SVM, PCA |
| Робастное масштабирование | | не ограничен | Высокая | Данные с выбросами |
| MaxAbsScaler | | | Низкая | Разреженные данные |
| PowerTransformer | Бокс—Кокс / Йео—Джонсон | не ограничен, приближается к нормальному | Средняя | Скошенные распределения |
| QuantileTransformer | отображение по квантилям | | Высокая | Сильно неоднородные, многомодальные признаки |
Общий недостаток всех перечисленных методов — параметры преобразования (минимум, максимум, среднее, медиана и т. д.) должны вычисляться исключительно на обучающей выборке и затем применяться к валидационной и тестовой выборкам без пересчёта, иначе возникает утечка данных (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.
После стандартизации (,
;
,
) значения принимают вид:
| Клиент | 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

