Стандартизация данных против нормализации против робастного масштабатора

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

Теоретически это следующие рекомендации:

Преимущества:

  1. Стандартизация: масштабирует функции таким образом, чтобы распределение центрировалось вокруг 0 ​​со стандартным отклонением 1.
  2. Нормализация: сжимает диапазон, так что теперь диапазон составляет от 0 до 1 (или от -1 до 1, если есть отрицательные значения).
  3. Робастный масштабатор: похож на нормализацию, но вместо этого использует межквартильный диапазон, поэтому он устойчив к выбросам.

Недостатки:

  1. Стандартизация: не годится, если данные не распределены нормально (т. е. нет распределения по Гауссу).
  2. Нормализация: сильно подвержены влиянию выбросов (т. е. экстремальных значений).
  3. Надежный масштабатор: не учитывает медианное значение и фокусируется только на тех частях, где находятся объемные данные.

Я создал 20 случайных числовых входов и попробовал вышеупомянутые методы (числа красного цвета представляют выбросы):

Сравнение методов


Я заметил, что - действительно - выбросы отрицательно повлияли на нормализацию, и шкала изменений между новыми значениями стала крошечной (все значения почти идентичны -6 цифр после десятичной точки- _1 _ ) даже есть заметные отличия между исходными входами!

Мои вопросы:

  1. Правильно ли я говорю, что на стандартизацию также негативно влияют крайние значения? Если нет, то почему в соответствии с предоставленным результатом?
  2. Я действительно не вижу, как Robust Scaler улучшил данные, потому что у меня все еще есть экстремальные значения в полученных набор данных? Любая простая полная интерпретация?

person Mike    schedule 14.08.2018    source источник
comment
Есть ли конкретная причина, по которой вы решили отклонить ответ через 2 года после того, как он разрешил ваш вопрос?   -  person desertnaut    schedule 12.10.2020


Ответы (2)


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

Можно рассмотреть такие варианты, как:

  • Отсечение (скажем, от 5 до 95 процентилей) серии / массива перед масштабированием
  • Преобразования, такие как извлечение квадратного корня или логарифм, если отсечение не идеально
  • Очевидно, что добавление еще одного столбца «отсечено» / «логарифмически отсечено» уменьшит потерю информации.
person nupam    schedule 25.09.2019

Правильно ли я говорю, что на стандартизацию также негативно влияют крайние значения?

В самом деле, вы; сами документы scikit-learn ясно предупреждают о таком случае:

Однако, когда данные содержат выбросы, StandardScaler < / a> часто можно ввести в заблуждение. В таких случаях лучше использовать средство масштабирования, устойчивое к выбросам.

Более или менее то же самое верно и для MinMaxScaler.

Я действительно не вижу, как Robust Scaler улучшил данные, потому что у меня все еще есть экстремальные значения в полученных набор данных? Какая-нибудь простая-полная интерпретация?

Надежность не означает иммунитет или неуязвимость, и цель масштабирования - не в удалении выбросов и экстремальных значений. - это отдельная задача со своими методиками; это снова ясно упоминается в соответствующих документах scikit-learn:

RobustScaler

[...] Обратите внимание, что сами выбросы все еще присутствуют в преобразованных данных. Если желательно отдельное отсечение выбросов, требуется нелинейное преобразование (см. Ниже).

где см. ниже относится к QuantileTransformer < / a> и quantile_transform.

person desertnaut    schedule 14.08.2018