Стандартизация и нормализация: в чем разница для Data Science

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

Содержание Следующие статьи
Содержание Стандартизация и нормализация: в чем разница для Data Science
  1. Почему эти два слова постоянно смешивают
  2. Что делает стандартизация
  3. А что делает нормализация
  4. Как выбирать между ними

Почему эти два слова постоянно смешивают

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

Полезнее всего развести эти понятия через вопрос: к чему именно мы хотим привести признак?

Что делает стандартизация

Формула: раздел математики — математическая статистика
$$ z = \frac{x - \mu}{\sigma} $$
Что означает эта формула

Стандартизация центрирует признак и приводит его к единичному стандартному отклонению. После этого признак измеряется не в исходных единицах, а в отклонениях от среднего.

Что означает каждый символ
  • z — стандартизированное значение
  • x — исходное значение признака
  • \mu — среднее по выборке
  • \sigma — стандартное отклонение признака

Это особенно полезно там, где модель чувствительна к масштабу и где важно, чтобы признаки были сопоставимы по разбросу: линейные модели, PCA, SVM, KNN.

А что делает нормализация

Нормализация чаще означает приведение значений к ограниченному диапазону, например от 0 до 1. Здесь идея не в центрировании и не в стандартном отклонении, а в том, чтобы положить все значения в общую числовую рамку. Это может быть полезно, когда алгоритм или последующий слой системы ожидает именно такой диапазон, либо когда нужно сохранить относительный порядок внутри признака без акцента на распределение.

То есть стандартизация опирается на статистику распределения, а нормализация — на диапазон значений. Это разные вопросы к данным и, соответственно, разные ответы.

Как выбирать между ними

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

example.pyPython
import pandas as pd  # задаем один числовой признак для сравнения двух преобразований
from sklearn.preprocessing import StandardScaler, MinMaxScaler  # берем стандартизацию и нормализацию из sklearn

frame = pd.DataFrame({'feature': [56, 70, 84, 91]})  # создаем исходный столбец значений
standardized = StandardScaler().fit_transform(frame[['feature']])  # переводим значения в z-оценки
normalized = MinMaxScaler().fit_transform(frame[['feature']])  # переводим значения в диапазон от 0 до 1

result = pd.DataFrame({  # собираем все версии признака в одну таблицу
    'raw': frame['feature'],  # исходные значения без изменений
    'z_score': standardized.ravel(),  # стандартизированные значения признака
    'minmax': normalized.ravel(),  # нормализованные значения в диапазоне 0..1
})
print(result.round(3))  # сравниваем, как одно и то же число выглядит после двух разных подходов

Когда видишь обе колонки рядом, путаница обычно исчезает. Стандартизация отвечает на вопрос про положение значения внутри распределения, а нормализация — про его место внутри диапазона.

Что читать дальше

Связанные статьи по этой теме

Canary deployment для моделей: как выкатывать новую версию без лишнего риска Latency в ML API: почему быстрая модель важна не меньше точной Batch inference и real-time inference: как выбирать режим работы модели
Вернуться в блог