Почему вокруг этого термина путаница
«Нормализация данных» — один из тех терминов, который означает совершенно разные вещи в зависимости от того, кто его произносит. Инженер баз данных, дата-сайентист и специалист по качеству данных, говоря «надо нормализовать данные», имеют в виду три непохожих процесса. Прежде чем что-то делать, важно понять, о каком из них речь.
Три основных значения:
- Нормализация баз данных — проектирование структуры таблиц так, чтобы устранить избыточность и аномалии. Это классическая теория реляционных БД и «нормальные формы».
- Нормализация (стандартизация, канонизация) данных — приведение значений к единому формату: даты, телефоны, адреса, регистр, кодировки. Это раздел очистки данных, напрямую связанный с обогащением и сопоставлением записей.
- Нормализация признаков в статистике и ML — приведение числовых признаков к единому масштабу или распределению, чтобы алгоритмы работали корректно.
Разберём все три по очереди.
Значение 1. Нормализация баз данных
Суть
Нормализация баз данных — это процесс декомпозиции таблиц на более мелкие и логически связанные, чтобы каждый факт хранился ровно в одном месте. Теорию заложил Эдгар Кодд в рамках реляционной модели. Главная цель — устранить избыточность и связанные с ней аномалии.
Какие проблемы решает
Если данные хранятся в одной «плоской» таблице с дублированием, возникают три типа аномалий:
- Аномалия вставки. Нельзя добавить факт, не имея сопутствующих данных. Например, нельзя завести нового сотрудника, пока он не привязан к проекту, если эти сущности в одной таблице.
- Аномалия обновления. Один и тот же факт продублирован в нескольких строках — при изменении приходится править все копии, и легко получить рассогласование.
- Аномалия удаления. Удаляя одну строку, можно случайно потерять данные, которые были только в ней (например, удалив последний проект сотрудника, теряем и самого сотрудника).
Нормальные формы
Нормализация идёт по уровням — «нормальным формам». Каждая следующая строже предыдущей и включает её требования.
Первая нормальная форма (1NF). Все значения атомарны: в одной ячейке — одно значение, без списков и повторяющихся групп. Нельзя хранить «телефоны: 111, 222, 333» в одном поле; каждый телефон — отдельная запись.
Вторая нормальная форма (2NF). Таблица в 1NF, и при этом нет частичных зависимостей: каждый неключевой атрибут зависит от всего первичного ключа, а не от его части. Актуально для составных ключей. Если ключ — «(заказ, товар)», а название товара зависит только от «товар», это нарушение 2NF — название товара нужно вынести в отдельную таблицу.
Третья нормальная форма (3NF). Таблица в 2NF, и нет транзитивных зависимостей: неключевые атрибуты зависят только от ключа, а не друг от друга. Если в таблице сотрудников хранятся «отдел» и «руководитель отдела», то руководитель зависит от отдела, а не от сотрудника напрямую — это транзитивная зависимость, отдел с его атрибутами выносится отдельно.
Нормальная форма Бойса–Кодда (BCNF). Усиленная 3NF: каждый детерминант (то, от чего что-то зависит) должен быть потенциальным ключом. Решает редкие случаи, которые 3NF пропускает при наличии нескольких перекрывающихся ключей.
Четвёртая (4NF) и пятая (5NF) нормальные формы. Устраняют многозначные зависимости и зависимости соединения соответственно. На практике до них доходят редко; для большинства систем целью считается 3NF или BCNF.
Денормализация — когда нормализация мешает
Нормализация оптимизирована под целостность и запись, но дробит данные на множество таблиц, что замедляет чтение из-за обилия соединений (JOIN). Поэтому в аналитических системах часто идут в обратную сторону — денормализуют, сознательно вводя избыточность ради скорости чтения.
Типичные примеры:
- Хранилища данных и OLAP. Схемы «звезда» и «снежинка» намеренно дублируют данные в таблицах измерений.
- Высоконагруженное чтение. Предрассчитанные агрегаты, материализованные представления.
- NoSQL. Документные БД часто хранят связанные данные вместе, чтобы читать их одним запросом.
Правило простое: нормализуй для транзакционных систем (OLTP), денормализуй осознанно для аналитических (OLAP) — и всегда понимай, какой ценой (риск рассогласования) ты платишь за скорость.
Значение 2. Нормализация как приведение к единому виду (стандартизация)
Суть
Это то значение, которое чаще всего встречается в задачах очистки и обогащения данных. Здесь нормализация — приведение значений одного и того же смысла к единому каноническому формату. Цель — чтобы одинаковые по сути данные выглядели одинаково, иначе их невозможно сравнивать, группировать и сопоставлять.
Эта нормализация — обязательный этап перед сопоставлением записей (matching), дедупликацией и обогащением. Нельзя надёжно склеить «ООО Ромашка» и «Ромашка, ООО», пока названия не приведены к общему виду.
Что обычно нормализуют
Даты и время. Приведение к единому стандарту — обычно ISO 8601 (2026-06-29), единый часовой пояс (часто UTC), единый формат. «29.06.2026», «June 29, 2026» и «2026/06/29» должны стать одним значением.
Телефонные номера. Приведение к международному формату E.164 (+995599123456): убрать пробелы, скобки, дефисы, добавить код страны.
Текстовые поля. Обрезка лишних пробелов, единый регистр, удаление невидимых символов, схлопывание двойных пробелов.
Кодировки и Unicode. Приведение к UTF-8 и единой форме нормализации Unicode (NFC/NFD), чтобы визуально одинаковые символы хранились одинаковыми байтами. Иначе «é» как один символ и «é» как «e + знак ударения» считаются разными строками.
Адреса. Стандартизация в единый формат: раскрытие сокращений («ул.» → «улица»), порядок компонентов, нормализация индексов. Часто делается через специализированные сервисы геокодирования.
Единицы измерения и валюты. Приведение к базовой единице (всё в метры, всё в граммы, всё в одну валюту по курсу на дату).
Категориальные значения. Сведение синонимов и вариантов написания к справочному значению: «USA», «США», «United States» → один код страны. Это называется маппингом на справочник (lookup/reference data).
Идентификаторы. Нормализация регистрационных номеров, доменов (нижний регистр, убрать www), email (нижний регистр домена).
Процесс стандартизации
Типичный пайплайн:
- Профилирование. Понять, какие форматы реально встречаются в данных и насколько они «грязные».
- Определение канонической формы. Решить, к какому единому виду приводить каждое поле.
- Парсинг и разбор. Разложить значение на компоненты (например, адрес — на улицу, дом, город).
- Преобразование. Применить правила приведения к каноническому виду.
- Маппинг на справочники. Сопоставить значения со справочными таблицами (страны, валюты, отрасли).
- Валидация. Проверить корректность результата (телефон содержит верное число цифр, дата существует).
- Логирование. Сохранить, что и как было изменено, для прослеживаемости.
Инструменты
Часть делается регулярными выражениями и правилами, часть — специализированными библиотеками: для телефонов есть библиотеки разбора номеров, для адресов — геокодеры, для Unicode — встроенные функции нормализации. Для больших объёмов применяют ETL/ELT-платформы и инструменты качества данных.
Значение 3. Нормализация признаков в статистике и машинном обучении
Суть
В ML «нормализация» — это приведение числовых признаков к сопоставимому масштабу или распределению. Проблема в том, что признаки бывают в разных единицах и диапазонах: возраст (0–100) и доход (0–10 000 000). Многие алгоритмы при этом «отдают предпочтение» признакам с большими значениями просто из-за масштаба, а не из-за важности.
Основные методы
Min-max нормализация. Линейно сжимает значения в диапазон [0, 1] по формуле (x − min) / (max − min). Сохраняет форму распределения, но чувствительна к выбросам: один экстремальный максимум «прижмёт» все остальные значения.
Стандартизация (z-score). Приводит к среднему 0 и стандартному отклонению 1 по формуле (x − μ) / σ. Не ограничивает значения фиксированным диапазоном, лучше работает, когда данные близки к нормальному распределению. Часто именно её и называют «нормализацией», хотя технически это стандартизация.
Робастное масштабирование. Использует медиану и межквартильный размах вместо среднего и отклонения — устойчиво к выбросам.
Нормализация вектора (L2). Приводит вектор признаков к единичной длине. Применяется, например, в работе с текстовыми векторами и при косинусном сходстве.
Логарифмирование. Не масштабирование в строгом смысле, но часто используется, чтобы «выпрямить» сильно скошенные распределения (доход, размеры компаний).
Когда это нужно, а когда нет
Нужно для алгоритмов, чувствительных к масштабу и расстояниям:
- методы на основе расстояний (kNN, k-means, SVM);
- градиентный спуск (нейросети, линейные модели) — нормализация ускоряет сходимость;
- методы с регуляризацией;
- понижение размерности (PCA).
Не обязательно для древовидных моделей (решающие деревья, случайный лес, градиентный бустинг) — они работают с порогами по каждому признаку отдельно, и монотонное масштабирование на них не влияет.
Важное практическое правило
Параметры нормализации (min, max, μ, σ) рассчитываются только на обучающей выборке, а затем применяются к тестовой и боевым данным. Если посчитать их на всех данных сразу, произойдёт «утечка» информации из теста в обучение (data leakage), и оценка качества модели будет завышенной.
Как не перепутать: краткая навигация
| Если речь про… | …то имеется в виду |
|---|---|
| Таблицы, ключи, JOIN, избыточность, аномалии | Нормальные формы (Значение 1) |
| Форматы дат, телефонов, адресов, дубли, сопоставление | Стандартизация / канонизация (Значение 2) |
| Признаки, масштаб, обучение модели, μ и σ | Масштабирование признаков (Значение 3) |
Практический способ понять, о чём речь: спросить, что является целью. Целостность и устранение дублирования в хранилище — это нормальные формы. Возможность сравнивать и склеивать записи — это стандартизация. Корректная работа алгоритма — это масштабирование признаков.
Связь с обогащением данных
Нормализация во втором смысле (стандартизация) — это фундамент, без которого не работает обогащение. Чтобы найти запись во внешнем источнике по ключу, ключ с обеих сторон должен быть приведён к одному виду: домены в нижнем регистре, телефоны в E.164, названия компаний без разнобоя в организационно-правовых формах. Поэтому в реальном конвейере обработки данных порядок обычно такой: сначала профилирование, затем нормализация/стандартизация, потом сопоставление и дедупликация, и только затем обогащение внешними данными.
Краткие выводы
«Нормализация данных» — зонтичный термин для трёх разных задач:
- Нормальные формы наводят порядок в структуре реляционной БД, убирая избыточность и аномалии; иногда их сознательно нарушают (денормализация) ради скорости чтения.
- Стандартизация приводит значения к единому каноническому формату — это основа очистки, сопоставления и обогащения данных.
- Масштабирование признаков готовит числовые данные для алгоритмов машинного обучения, чувствительных к масштабу.
Главный практический навык — по контексту понять, какая именно нормализация требуется, и не применять метод из одной области там, где нужен метод из другой.