Центрирование данных (Data Centering)

Что такое Центрирование данных (Data Centering)?

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

Суть центрирования проще всего понять на бытовой аналогии.

Представьте, что вы организуете вечеринку и хотите расставить стулья вокруг стола. Если стол стоит не по центру комнаты, стулья будут располагаться неравномерно — с одной стороны их будет больше, с другой меньше. Чтобы всё выглядело гармонично, вы сначала перемещаете стол в центр комнаты, а затем уже расставляете стулья вокруг него. Аналогично и с данными: центрирование «перемещает» данные так, чтобы их «центр тяжести» (среднее значение) оказался в нуле, что упрощает дальнейшую работу алгоритмов.

Исторически предобработка данных, включая центрирование, стала активно применяться с развитием методов многомерной статистики и линейной алгебры, лежащих в основе многих алгоритмов машинного обучения. Хотя точное время появления термина «центрирование данных» в контексте ML установить сложно, практика нормализации и центрирования данных прочно вошла в стандарт предобработки с 1980–1990‑х годов, когда начали активно развиваться нейронные сети и методы обучения с учителем. Важную роль в популяризации предобработки сыграли работы по анализу главных компонент (PCA), где центрирование — обязательный шаг перед вычислением ковариационной матрицы.

Центрирование часто путают с нормализацией и стандартизацией, но между ними есть различия:

  • Центрирование меняет только среднее значение признака (сдвигает распределение), не затрагивая его разброс (дисперсию).
  • Нормализация обычно приводит значения признака к диапазону [0, 1] или [−1, 1], меняя и среднее, и дисперсию.
  • Стандартизация (z‑score normalization) не только центрирует данные, но и делит их на стандартное отклонение, приводя распределение к нулевому среднему и единичной дисперсии.

Центрирование данных применяется в самых разных сценариях машинного обучения и нейросетей:

  • перед применением PCA (анализа главных компонент) — без центрирования результаты PCA будут некорректны;
  • в алгоритмах градиентного спуска — центрирование ускоряет сходимость, так как делает поверхность ошибки более «симметричной»;
  • в свёрточных нейронных сетях (CNN) — часто центрируют входные изображения (например, вычитают средний пиксель по датасету);
  • в рекуррентных сетях (RNN) и трансформерах — центрирование входных последовательностей может улучшить стабильность обучения.

Примеры:

  • в библиотеке scikit‑learn центрирование выполняется через StandardScaler (если установить with_std=False) или вручную вычитанием X.mean(axis=0);
  • в PyTorch и TensorFlow/Keras центрирование часто встраивают в пайплайн предобработки данных (например, через torchvision.transforms.Normalize с нулевым средним);
  • в датасетах типа ImageNet принято вычитать средний пиксель (например, [0.485, 0.456, 0.406] для RGB‑каналов), что фактически является центрированием.

Авторизация