Что отличает различные масштабаторы, доступные в sklearn?

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

Давайте погрузимся в некоторые из масштабаторов sklearn и поймем, что делает каждый из них:

Стандартный масштабатор

Этот класс стандартизации использует формулу стандартизации или z-оценки для каждой функции, где x — масштабируемое значение, u — среднее значение функции, а s — стандартное отклонение функции.

z = (x — u) / s

Это делает два преобразования. Во-первых, он центрирует данные, удаляя среднее значение каждого признака. Во-вторых, он масштабирует данные путем деления признаков на их стандартное отклонение. Эти преобразования выполняются независимо для каждой функции. Затем масштабированный набор данных имеет среднее значение, равное нулю, и стандартное отклонение, равное 1 (т. е. нормальное или гауссово распределение).

Чтобы выполнить только одно из преобразований, вы можете отключить центрирование с помощью with_mean=False или отключить масштабирование с помощью with_std=False в классе StandardScaler().

МинМаксСкалер

Еще одна форма стандартизации, MinMaxScaler преобразует функции, масштабируя каждую функцию до заданного минимального и максимального значения. Параметр по умолчанию — feature_range =(0,1), который независимо масштабирует каждую функцию в диапазоне от нуля до единицы.

MaxAbsScaler

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

Если функция содержит только положительные значения, диапазон равен [0, 1], а функция масштабирования аналогична функции MinMaxScaler по умолчанию. Если функция содержит только отрицательные значения, диапазон равен [-1, 0]. Однако функция, содержащая как отрицательные, так и положительные значения, будет масштабироваться в диапазоне [-1, 1].

Надежный масштабатор

Этот масштабатор особенно полезен, когда в данных присутствуют выбросы (масштабатор «устойчив» к выбросам).

Вместо среднего значения RobustScaler использует медиану каждой функции для центрирования данных и межквартильный диапазон (IQR) для масштабирования данных. IQR рассчитывается как разница между 1-м квартилем (25-й процентиль/нижний квартиль) и 3-м квартилем (75-й процентиль/верхний квартиль) и содержит средние 50% данных.

Нормализатор

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

Параметр norm по умолчанию равен 'l2' , который масштабирует значения так, чтобы сумма квадратов значений равнялась 1. Если norm=’l1’, то данные масштабируются так, чтобы сумма абсолютных значений также равнялась 1. С norm=’max’ значения каждой строки масштабируются по максимальному из абсолютных значений.

PowerTransformer

PowerTransformer использует «семейство параметрических преобразований» для каждой функции, чтобы масштабировать данные как можно ближе к стандартному нормальному распределению со средним значением, равным нулю, и единичной дисперсией.

Параметр method PowerTransformer по умолчанию имеет значение 'yeo-johnson', которое обрабатывает как положительные, так и отрицательные данные. Альтернативный параметр — method='box-cox', который работает только с положительными входными данными.

QuantileTransformer

Это нелинейное преобразование сопоставляет данные с равномерным распределением (когда output_distribution='uniform')или гауссовым распределением (когда output_distribution='normal').

QuantileTransformer оценивает кумулятивную функцию распределения (CDF) каждого объекта и сопоставляет значения объекта с равномерным или гауссовым распределением в зависимости от параметра output_distribution.

Затем полученные значения сопоставляются с желаемым выходным распределением с помощью соответствующей функции квантиля. Значения признаков, включая выбросы, будут отображены в пределах диапазона нового распределения ([0,1]). Это делает QuantileTransformer устойчивым к выбросам, но может привести к насыщению на любом конце диапазона.

Надеюсь, это было полезным объяснением различных масштабаторов sklearn и того, что они делают. Знание того, как работает каждый масштабатор, может помочь сделать предварительную обработку ваших данных для моделей более эффективной и успешной.