Масштабирование
Модели машинного обучения обучаются на больших наборах данных, которые могут содержать широкий диапазон значений для каждого признака. Во многих случаях эти признаки могут иметь совершенно разные масштабы, что затрудняет эффективное обучение модели. Масштабирование признаков — это процесс стандартизации диапазона значений признаков, что облегчает модели выявление закономерностей.
Зачем использовать масштабирование признаков?
Масштабирование признаков критически важно по нескольким причинам:
- Это улучшает производительность модели, уменьшая влияние различных масштабов признаков.
- Это также помогает ускорить процесс обучения.
- Это гарантирует, что ни один отдельный признак не будет доминировать в модели из-за своего масштаба.
Методы масштабирования признаков
Существует несколько методов масштабирования признаков, включая:
- 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
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)Масштабирование набора данных с помощью других масштабировщиков
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)Заключение
Масштабирование признаков — это критически важный этап при создании точных и эффективных моделей машинного обучения. Стандартизируя диапазоны признаков, вы предотвращаете доминирование масштаба, ускоряете сходимость обучения и улучшаете общую производительность модели. Выберите масштабировщик, который лучше всего соответствует распределению ваших данных и чувствительности к выбросам.