Масштабирование признаков

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

Масштабирование признаков - это процесс приведения всех признаков в датасете к одному масштабу. Зачем это нужно? Дело в том, что многие алгоритмы машинного обучения чувствительны к масштабу признаков. Например, если один признак измеряется в диапазоне от 0 до 1, а другой - от 1000 до 100000, то второй признак будет доминировать при обучении модели.

Приведу пример. Допустим у нас есть данные о стоимости первоначального заказа клиента и количестве купленных единиц товара:

Person_1, (Initial_order_value) 45,37 $. 32,81 $, 13,58 $.

Если не выполнить масштабирование, то признак Initial_order_value будет иметь намного больший вес, чем количество единиц. Масштабирование позволяет уравнять вклад признаков.

Основные методы масштабирования

Два самых популярных метода масштабирования признаков:

  1. Min-Max Scaling (Нормализация) Приводит все значения признака в диапазон от 0 до 1 по формуле: X_norm = (X - X_min) / (X_max - X_min)

Реализация на Python:

from sklearn.preprocessing import MinMaxScaler

scaler = MinMaxScaler()
X_norm = scaler.fit_transform(X)
  1. Standardization (Стандартизация, Z-масштабирование) Приводит распределение признака к нормальному с нулевым средним и единичной дисперсией: X_std = (X - mean(X)) / std(X)

Реализация:

from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
X_std = scaler.fit_transform(X)

Когда какой метод применять?

  • Если признак распределен нормально, то лучше использовать стандартизацию
  • Если нужно сохранить исходное распределение признака, то min-max масштабирование
  • Для алгоритмов, основанных на расстояниях (KNN, SVM, K-means) лучше стандартизация
  • Для нейронных сетей часто используют min-max, приводя признаки к диапазону [0, 1] или [-1, 1]

Надеюсь, моя статья была полезной и помогла разобраться, что такое масштабирование признаков и как его правильно применять. Не забывайте масштабировать признаки перед обучением моделей - это важный этап предобработки данных, который может значительно повысить качество ваших моделей машинного обучения. Удачи в ваших Data Science проектах!