Технологии и защита 8 мин чтения

Нормализация данных: три разных смысла одного термина

Термин «нормализация данных» в трёх значениях: реляционные базы, машинное обучение и очистка спарсенных данных — разбираем каждое.

КP
Команда Parsing.agency
Сбор данных под задачи бизнеса
Опубликовано: 8 февраля 2025

Почему вокруг этого термина путаница

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

Три основных значения:

  1. Нормализация баз данных — проектирование структуры таблиц так, чтобы устранить избыточность и аномалии. Это классическая теория реляционных БД и «нормальные формы».
  2. Нормализация (стандартизация, канонизация) данных — приведение значений к единому формату: даты, телефоны, адреса, регистр, кодировки. Это раздел очистки данных, напрямую связанный с обогащением и сопоставлением записей.
  3. Нормализация признаков в статистике и 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 (нижний регистр домена).

Процесс стандартизации

Типичный пайплайн:

  1. Профилирование. Понять, какие форматы реально встречаются в данных и насколько они «грязные».
  2. Определение канонической формы. Решить, к какому единому виду приводить каждое поле.
  3. Парсинг и разбор. Разложить значение на компоненты (например, адрес — на улицу, дом, город).
  4. Преобразование. Применить правила приведения к каноническому виду.
  5. Маппинг на справочники. Сопоставить значения со справочными таблицами (страны, валюты, отрасли).
  6. Валидация. Проверить корректность результата (телефон содержит верное число цифр, дата существует).
  7. Логирование. Сохранить, что и как было изменено, для прослеживаемости.

Инструменты

Часть делается регулярными выражениями и правилами, часть — специализированными библиотеками: для телефонов есть библиотеки разбора номеров, для адресов — геокодеры, для 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, названия компаний без разнобоя в организационно-правовых формах. Поэтому в реальном конвейере обработки данных порядок обычно такой: сначала профилирование, затем нормализация/стандартизация, потом сопоставление и дедупликация, и только затем обогащение внешними данными.

Краткие выводы

«Нормализация данных» — зонтичный термин для трёх разных задач:

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

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