При работе с алгоритмами машинного обучения крайне важно предварительно обработать данные, чтобы обеспечить оптимальную производительность модели. Одним из часто используемых методов предварительной обработки данных является масштабирование признаков, целью которого является стандартизация ряда входных признаков. В этой статье мы рассмотрим Robust Scaler — мощный инструмент для масштабирования функций, устойчивых к выбросам. Мы обсудим его внутреннюю работу, преимущества и способы его реализации с помощью Python и популярной библиотеки машинного обучения Scikit-learn.

Содержание
Введение в масштабирование функций
Что такое Robust Scaler?
Преимущества Robust Scaler
Реализация с помощью Scikit-learn
Сравнение Robust Масштабирование с другими масштабировщиками
Заключение

1. Введение в масштабирование функций

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

Улучшить скорость сходимости алгоритмов оптимизации на основе градиента
Обеспечить одинаковую важность всех признаков, независимо от их исходного масштаба
Упростить интерпретацию и визуализацию данных
Существует несколько методов масштабирования признаков, например Масштабирование Min-Max, стандартное масштабирование (нормализация Z-оценки) и надежное масштабирование, каждое из которых имеет свои сильные и слабые стороны.

2. Что такое надежный скалер?

Robust Scaler — это метод масштабирования объектов, который менее чувствителен к выбросам, чем другие методы. Он использует межквартильный диапазон (IQR) для масштабирования, который представляет собой диапазон между первым квартилем (25-й процентиль) и третьим квартилем (75-й процентиль). Трансформация выглядит следующим образом:

Масштабированное значение = (Исходное значение — Медиана) / IQR
Выбор медианы и IQR делает Robust Scaler менее подверженным влиянию экстремальных значений, поскольку оба они более устойчивы к выбросам, чем среднее значение и стандартное отклонение, используемые в стандартном масштабировании.

3. Преимущества надежного скалера

Вот некоторые ключевые преимущества использования Robust Scaler:

Сопротивление выбросам: благодаря использованию медианы и IQR, Robust Scaler менее подвержен выбросам, чем другие методы масштабирования.
Сохраняет относительные расстояния: Robust Scaler поддерживает относительные расстояния между точками данных, что делает его пригодным для алгоритмов. которые основаны на расстояниях, таких как кластеризация k-средних и k-ближайших соседей.
Эффективен с асимметричными данными: Robust Scaler хорошо работает с асимметричными данными, поскольку медиана и IQR менее чувствительны к экстремальным значениям, чем среднее и среднеквадратичное отклонение.

4. Реализация с помощью Scikit-learn

Давайте продемонстрируем, как использовать Robust Scaler с Python и Scikit-learn. Сначала установите библиотеку Scikit-learn, если вы еще этого не сделали:

pip install scikit-learn

Затем импортируйте необходимые библиотеки и создайте набор данных:

import numpy as np
from sklearn.preprocessing import RobustScaler

Создайте набор данных с выбросами

data = np.array([[1, 1000],
[2, 2000],
[3, 3000],
[4, 4000],
[5, 50000]]) # Outlier
#Now, instantiate the Robust Scaler and fit it to the data:
scaler = RobustScaler()
scaled_data = scaler.fit_transform(data)
The scaled_data variable now contains the scaled features:
print(scaled_data)

Выход:

[[-1. -0.66666667]
[ 0. -0.33333333]
[ 1. 0. ]
[ 2. 0.33333333]
[ 3. 10.66666667]]

Как видите, Robust Scaler успешно масштабировал данные, ограничивая влияние выбросов.

5. Сравнение надежного скейлера с другими скейлерами

Чтобы лучше понять преимущества Robust Scaler, давайте сравним его с другими популярными методами масштабирования: масштабированием Min-Max и стандартным масштабированием.

Масштабирование Min-Max преобразует объекты, масштабируя их до определенного диапазона, обычно [0, 1]. Формула для масштабирования Min-Max:

Масштабированное значение = (Исходное значение — Мин.) / (Макс. — Мин.)

Хотя масштабирование Min-Max легко вычислить и интерпретировать, на него могут сильно влиять выбросы.

Стандартное масштабирование (нормализация Z-показателя) стандартизирует характеристики путем вычитания среднего значения и деления на стандартное отклонение. Формула стандартного масштабирования:

Масштабированное значение = (Исходное значение — Среднее) / Стандартное отклонение

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

Вот сравнение трех масштабаторов, использующих один и тот же набор данных:

from sklearn.preprocessing import MinMaxScaler, StandardScaler
# Min-Max scaling
minmax_scaler = MinMaxScaler()
minmax_scaled_data = minmax_scaler.fit_transform(data)
# Standard scaling
standard_scaler = StandardScaler()
standard_scaled_data = standard_scaler.fit_transform(data)
print("Min-Max Scaled Data:")
print(minmax_scaled_data)
print("Standard Scaled Data:")
print(standard_scaled_data)
print("Robust Scaled Data:")
print(scaled_data)

Выход:

Min-Max Scaled Data:
[[0.         0.        ]
 [0.25       0.02040816]
 [0.5        0.04081633]
 [0.75       0.06122449]
 [1.         1.        ]]
Standard Scaled Data:
[[-1.41421356 -0.59628479]
 [-0.70710678 -0.49659864]
 [ 0.         -0.3969125 ]
 [ 0.70710678 -0.29722635]
 [ 1.41421356  1.78702228]]
Robust Scaled Data:
[[-1.         -0.66666667]
 [ 0.         -0.33333333]
 [ 1.          0.        ]
 [ 2.          0.33333333]
 [ 3.         10.66666667]]

Как вы можете видеть, масштабированные данные Min-Max и стандартные масштабированные данные больше подвержены влиянию выброса, чем надежные масштабированные данные.

Заключение

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

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