0Pricing
Learn AI with Python · Урок

Масштабирование признаков: нормализация и стандартизация

MinMaxScaler, StandardScaler, RobustScaler — когда применять каждый из них и почему это важно.

«Масштабирование признаков: нормализация и стандартизация» — бесплатный урок Learn AI with Python на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Learn AI with Python, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Learn AI with Python содержит 4 уроков всего.

Зачем масштабировать признаки?

Многие алгоритмы чувствительны к MAGNITUDE признаков. Признак со значениями от 0 до 1 000 000 будет преобладать над признаком со значениями от 0 до 1 в моделях, основанных на расстояниях или градиентах. Масштабирование приводит признаки к сопоставимым диапазонам.

Кому нужно масштабирование

Масштабирование важно для KNN, SVM, k-средних, PCA и моделей на основе градиентного спуска, таких как линейная и логистическая регрессия и нейронные сети. Модели на основе деревьев (случайные леса, градиентный бустинг) не зависят от масштаба и не нуждаются в нём.

Нормализация: MinMaxScaler

Нормализация по минимуму и максимуму изменяет масштаб каждого признака до фиксированного диапазона, обычно от 0 до 1, по формуле (x - min) / (max - min). Форма распределения при этом сохраняется.

from sklearn.preprocessing import MinMaxScaler
import numpy as np
X = np.array([[10.0], [20.0], [30.0], [40.0]])
scaler = MinMaxScaler()
print(scaler.fit_transform(X).ravel())   # [0. 0.333 0.667 1.]

Стандартизация: StandardScaler

Стандартизация задаёт для каждого признака нулевое среднее и единичную дисперсию с помощью формулы (x - mean) / std. В результате получается z-оценка: значения центрируются, но не ограничиваются заданным диапазоном.

from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
Xs = scaler.fit_transform(X)
print(Xs.ravel())
print(Xs.mean(), Xs.std())   # ~0 and ~1

MinMax и стандартное масштабирование

Используйте MinMax, когда нужен ограниченный диапазон (например, для пикселей изображений или входных данных нейронной сети). Используйте стандартное масштабирование, когда алгоритм предполагает данные примерно с нулевым средним (PCA, SVM, линейные модели). MinMax сильнее чувствителен к выбросам.

RobustScaler для работы с выбросами

RobustScaler центрирует данные относительно MEDIAN и масштабирует их по IQR. Поскольку оба показателя устойчивы к выбросам, этот метод подходит, когда экстремальные значения могли бы исказить результаты других методов масштабирования.

from sklearn.preprocessing import RobustScaler
Xo = np.array([[1.0], [2.0], [3.0], [4.0], [100.0]])
print(RobustScaler().fit_transform(Xo).ravel())

fit и transform

Методы масштабирования LEARN параметры в fit (минимум и максимум либо среднее и стандартное отклонение) и APPLY их в transform. fit_transform выполняет обе операции за один вызов.

scaler = StandardScaler()
scaler.fit(X)          # learns mean and std
Xs = scaler.transform(X)   # applies them

Золотое правило: fit только на обучающих данных

Всегда выполняйте fit на наборе TRAINING, а затем только transform тестового набора с использованием выученных параметров. Если выполнить настройку на тестовых данных, информация о них попадёт в модель.

scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)   # transform only!

Почему нельзя выполнять fit на тестовых данных

Если масштабировать данные с помощью статистик, рассчитанных с учётом тестового набора, оценка увидит информацию, которой у неё не должно быть. Это утечка данных. Она приводит к завышенным и ненадёжным оценкам производительности.

Обратное преобразование

Методы масштабирования могут отменить операцию с помощью inverse_transform, что удобно для перевода масштабированных прогнозов обратно в исходные единицы измерения при подготовке отчёта.

original = scaler.inverse_transform(X_train_scaled)
# recovers the pre-scaled values

Масштабирование целевой переменной

При классификации обычно масштабируют FEATURES, а не целевую переменную. В регрессии целевую переменную тоже можно масштабировать, но перед сообщением об ошибках не забудьте выполнить обратное преобразование прогнозов.

Быстрая проверка

Проверьте свои знания о масштабировании.

Итоги

Инструменты масштабирования:

  • Масштабирование важно для моделей на основе расстояний и градиентов; деревья его не учитывают
  • MinMaxScaler -> ограниченный диапазон от 0 до 1; StandardScaler -> нулевое среднее и единичная дисперсия
  • RobustScaler использует медиану и IQR и устойчив к выбросам
  • Всегда выполняйте fit_transform на обучающих данных, а transform — только на тестовых (чтобы избежать утечки)

Часто задаваемые вопросы

Урок «Масштабирование признаков: нормализация и стандартизация» бесплатный?

Да — полный текст урока «Масштабирование признаков: нормализация и стандартизация» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Learn AI with Python, подпишись на CoddyKit PRO. Курс Learn AI with Python содержит 4 уроков всего.

Чему я научусь в уроке «Масштабирование признаков: нормализация и стандартизация»?

MinMaxScaler, StandardScaler, RobustScaler — когда применять каждый из них и почему это важно. Ты практикуешь Learn AI with Python с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Learn AI with Python?

Предыдущий опыт не требуется. Learn AI with Python на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Масштабирование признаков: нормализация и стандартизация»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Learn AI with Python?

Да. Каждый урок Learn AI with Python включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Обнаружение и удаление выбросов
  2. Кодирование категориальных переменных
  3. Масштабирование признаков: нормализация и стандартизация
  4. Создание конвейеров предварительной обработки
← Назад к Learn AI with Python