Перейти к содержимому

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

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

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

Масштабирование признаков критически важно по нескольким причинам:

  • Это улучшает производительность модели, уменьшая влияние различных масштабов признаков.
  • Это также помогает ускорить процесс обучения.
  • Это гарантирует, что ни один отдельный признак не будет доминировать в модели из-за своего масштаба.

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

Существует несколько методов масштабирования признаков, включая:

  • Standard Scaler
  • MinMax Scaler
  • Robust Scaler
  • MaxAbs Scaler

Standard Scaler

Standard Scaler — одна из самых распространенных техник масштабирования в машинном обучении. Он приводит данные к среднему значению 0 и стандартному отклонению 1. Этот метод хорошо работает с наборами данных, имеющими нормальное распределение.

MinMax Scaler

MinMax Scaler масштабирует данные в фиксированный диапазон от 0 до 1. Этот метод хорошо работает с наборами данных, имеющими равномерное распределение.

Robust Scaler

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

MaxAbs Scaler

MaxAbs Scaler масштабирует данные в диапазон [-1, 1], деля каждое значение на максимальное абсолютное значение. Этот метод хорошо работает с наборами данных, содержащими как положительные, так и отрицательные значения.

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

В Python масштабирование признаков можно легко выполнить с помощью библиотеки scikit-learn. Ниже приведен пример масштабирования набора данных с использованием Standard Scaler с соблюдением лучших практик для предотвращения утечки данных: масштабировщик обучается только на тренировочных данных:

Масштабирование набора данных с помощью Standard Scaler в Python

python
from sklearn.preprocessing import StandardScaler
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split

data = load_iris()
X = data.data
y = data.target

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

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

Масштабирование набора данных с помощью других масштабировщиков

python
from sklearn.preprocessing import MinMaxScaler, RobustScaler, MaxAbsScaler

# MinMax Scaler
min_max_scaler = MinMaxScaler()
X_train_minmax = min_max_scaler.fit_transform(X_train)

# Robust Scaler
robust_scaler = RobustScaler()
X_train_robust = robust_scaler.fit_transform(X_train)

# MaxAbs Scaler
maxabs_scaler = MaxAbsScaler()
X_train_maxabs = maxabs_scaler.fit_transform(X_train)

Заключение

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

Считаете ли это полезным?

Предпросмотр dual-run — сравните с маршрутами Symfony на продакшене.