it-roy-ru.com

Линейная регрессия :: Нормализация (Vs) Стандартизация

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

Нормализация = x -xmin/xmax - xmin Стандартизация нулевой оценки = x - xmean/xstd

a) Also, when to Normalize (Vs) Standardize ?
b) How Normalization affects Linear Regression?
c) Is it okay if I don't normalize all the attributes/lables in the linear regression?

Спасибо, Сантош

21
Santosh Kumar

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

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

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

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

Однако это не означает, что минимальное и максимальное масштабирование вообще бесполезно! Популярным приложением является обработка изображений, где интенсивность пикселей должна быть нормализована для соответствия определенному диапазону (то есть от 0 до 255 для цветового диапазона RGB). Кроме того, типичный алгоритм нейронной сети требует данных, которые в масштабе 0-1.

Одним из недостатков нормализации по сравнению со стандартизацией является то, что она теряет некоторую информацию в данных, особенно о выбросах.

Также на связанной странице есть эта картинка:

 Plots of a standardized and normalized data set

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

«Нормализующие переменные» на самом деле не имеют смысла. Правильная терминология - «нормализация/масштабирование функций». Если вы собираетесь нормализовать или масштабировать одну функцию, вы должны сделать то же самое для остальных.

19
IVlad

Это имеет смысл, потому что нормализация и стандартизация делают разные вещи.

Нормализация превращает ваши данные в диапазон от 0 до 1

Стандартизация преобразует ваши данные так, что итоговое распределение имеет среднее значение 0 и стандартное отклонение 1

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

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

Если вы собираетесь нормализовать хотя бы одну переменную/функцию, я бы сделал то же самое со всеми остальными.

7
Simon

Первый вопрос: зачем нам нормализация/стандартизация?

=> Мы возьмем пример набора данных, где у нас есть переменная зарплата и возрастная переменная . Возраст может принимать диапазон от 0 до 90, где зарплата может быть от 25 тысяч до 2,5 лакха.

Мы сравниваем разницу для 2 человек, тогда разница в возрасте будет в диапазоне ниже 100, где разница в зарплате будет в диапазоне тысяч. 

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

Нормализация изменяет значения в диапазон [0,1]. также называется min-max в масштабе.

Стандартизация изменяет масштаб данных, чтобы иметь среднее значение (μ), равное 0, и стандартное отклонение (σ), равное 1. Так что это дает нормальный график.

 enter image description here

Пример ниже:

 enter image description here

Другой пример:

 enter image description here

На изображении выше вы можете видеть, что наши фактические данные (зеленым цветом) представлены в диапазоне от 1 до 6, стандартизированные данные (красным цветом) представлены в диапазоне от -1 до 3, тогда как нормализованные данные (синим цветом) представлены в диапазоне от 0 до 1. ,.

Обычно многие алгоритмы требуют, чтобы вы сначала стандартизировали/нормализовали данные перед передачей в качестве параметра. Как и в PCA, где мы делаем уменьшение размеров, выводя наши трехмерные данные в 1D (скажем). Здесь мы требовали стандартизации.

Но при обработке изображений требуется нормализовать пиксели перед обработкой…. Но во время нормализации мы теряем выбросы (экстремальные точки данных - либо слишком низкие, либо слишком высокие), что является небольшим недостатком.

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

1
Ashish Anand