Z-score (стандартный балл) — это число, которое показывает, на сколько стандартных отклонений конкретное значение отличается от среднего арифметического набора данных. Если Z-score равен 2, это значит, что значение на две сигмы выше среднего; если −1.5 — на полторы сигмы ниже. Z-score переводит любые данные в единую безразмерную шкалу, где среднее всегда равно 0, а стандартное отклонение — 1.
Как это работает
Z-score вычисляется по формуле: из конкретного значения вычитается среднее по выборке, а результат делится на стандартное отклонение. После такого преобразования весь набор данных имеет среднее 0 и стандартное отклонение 1. Это позволяет сравнивать между собой величины с разными единицами измерения — например, рост в сантиметрах и вес в килограммах.
В нейросетях и машинном обучении Z-score-нормализация (её также называют стандартизацией) применяется к входным признакам перед подачей в модель. Алгоритмы градиентного спуска работают быстрее и стабильнее, когда все признаки находятся в сопоставимом масштабе. Без стандартизации признак с большим разбросом значений (например, доход в рублях) будет доминировать над признаком с малым разбросом (например, возраст), что искажает обучение.
В глубоком обучении Z-score используется не только для входных данных, но и внутри архитектуры — например, в batch normalization скрытые активации слоя стандартизируются по текущему батчу. Это ускоряет сходимость и снижает эффект исчезающих градиентов.
Зачем это нужно
В анализе данных Z-score решает три задачи. Первая — сравнение разнородных признаков: после стандартизации все переменные вносят равный вклад в расстояние между точками. Вторая — обнаружение аномалий: значения с модулем Z-score больше 3 встречаются крайне редко (менее 0.3% для нормального распределения) и считаются выбросами. Третья — подготовка данных для нейросетей: модели с градиентным обучением требуют, чтобы признаки были в одном масштабе.
В промт-инжиниринге Z-score применяется для нормализации оценок качества ответов модели. Когда несколько промтов оцениваются по разным метрикам (CLIP score, DreamSim и т.д.), Z-score приводит их к единой шкале, позволяя корректно сравнивать и ранжировать.
Примеры
-
Обнаружение мошенничества с картами. Транзакция на 450 000 рублей при среднем чеке 3 000 рублей и стандартном отклонении 1 200 рублей даёт Z-score ≈ 372. Такое значение с огромным запасом превышает порог 3 и помечается как аномалия для ручной проверки.
-
Нормализация признаков для предсказания цен на жильё. Датасет содержит признаки «площадь» (20–500 м²) и «количество комнат» (1–10). Без стандартизации модель будет опираться почти исключительно на площадь. После Z-score-нормализации оба признака получают сопоставимый вес.
-
Контроль качества в промышленности. Датчик вибрации на конвейере выдаёт показания, Z-score которых стабильно находится в диапазоне от −2 до +2. Резкий скачок до 4.7 сигнализирует о зарождающейся неисправности подшипника.
-
Сравнение промтов в генеративном AI. Два промта оцениваются по метрикам CLIP и DreamSim. Z-score-нормализация каждой метрики позволяет построить единый рейтинг и выбрать промт с наилучшим средним стандартизированным баллом.
Формула
Для одного значения x формула Z-score выглядит так:
Z = (x − μ) / σ
где:
-
x — исходное значение;
-
μ — среднее арифметическое по выборке;
-
σ — стандартное отклонение по выборке.
Для стандартизации всего набора данных каждое значение заменяется на свой Z-score. После этого среднее нового набора равно 0, а стандартное отклонение — 1.
Интерпретация значений:
-
|Z| < 1 — значение типичное, близко к среднему;
-
1 ≤ |Z| < 2 — умеренное отклонение;
-
2 ≤ |Z| < 3 — сильное отклонение, повод для внимания;
-
|Z| ≥ 3 — аномалия или выброс.
Типичные ошибки
-
Применение Z-score к данным с ненормальным распределением без проверки. Z-score предполагает, что данные хотя бы приблизительно соответствуют нормальному распределению. Для сильно скошенных распределений (например, доходы населения) Z-score даёт искажённую картину — используйте робастные методы на основе медианы и MAD (median absolute deviation).
-
Вычисление среднего и стандартного отклонения на тестовой выборке. Параметры нормализации (μ и σ) должны быть вычислены только на обучающей выборке, а затем применены к валидационной и тестовой. Иначе возникает утечка данных (data leakage) и завышенная оценка качества модели.
-
Использование Z-score для признаков, где ноль имеет физический смысл. Если признак — это количество покупок, Z-score может дать отрицательные значения, что нефизично. В таких случаях лучше подходит Min-Max-нормализация.
-
Игнорирование выбросов при вычислении μ и σ. Один экстремальный выброс может сильно сдвинуть среднее и раздуть стандартное отклонение, сделав Z-score остальных точек неинформативным.
Как улучшить
-
Проверяйте распределение перед стандартизацией. Постройте гистограмму или QQ-plot. Если распределение далеко от нормального, рассмотрите логарифмирование или робастный Z-score на основе MAD.
-
Разделяйте вычисление параметров и применение. Сохраняйте μ и σ, полученные на train-выборке, и используйте их для transform на val/test. В scikit-learn для этого есть
StandardScaler. -
Для потоковых данных используйте скользящее окно. Временные ряды нестационарны: среднее и стандартное отклонение меняются со временем. Rolling Z-score с окном (например, 168 точек для недельных данных) даёт более точные результаты, чем глобальная стандартизация.
-
Комбинируйте Z-score с другими методами обнаружения аномалий. Z-score хорошо ловит точечные выбросы, но пропускает контекстные аномалии. Ensemble из Z-score, изоляционного леса и IQR повышает полноту обнаружения.
-
Для признаков с выбросами применяйте робастную версию. Замените среднее на медиану, а стандартное отклонение — на MAD, умноженный на коэффициент 1.4826. Это делает Z-score устойчивым к экстремальным значениям.