Числовые данные: нормализация

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

  • Характеристика X охватывает диапазон от 154 до 24 917 482.
  • Характеристика Y охватывает диапазон от 5 до 22.

Эти две функции охватывают очень разные диапазоны. Нормализация может манипулировать X и Y так, чтобы они охватывали похожий диапазон, возможно, от 0 до 1.

Нормализация обеспечивает следующие преимущества:

  • Помогает моделям сходиться быстрее во время обучения. Когда разные признаки имеют разные диапазоны, градиентный спуск может «отскакивать» и замедлять сходимость. Тем не менее, более продвинутые оптимизаторы, такие как Adagrad и Adam, защищают от этой проблемы, изменяя эффективную скорость обучения с течением времени.
  • Помогает моделям делать более точные прогнозы . Когда разные характеристики имеют разные диапазоны, результирующая модель может делать несколько менее полезные прогнозы.
  • Помогает избежать «ловушки NaN» , когда значения признаков очень высоки. NaN — это аббревиатура для not a number (не число) . Когда значение в модели превышает предел точности с плавающей точкой, система устанавливает значение NaN вместо числа. Когда одно число в модели становится NaN, другие числа в модели также в конечном итоге становятся NaN.
  • Помогает модели выучить соответствующие веса для каждого признака. Без масштабирования признаков модель уделяет слишком много внимания признакам с широкими диапазонами и недостаточно внимания признакам с узкими диапазонами.

Мы рекомендуем нормализовать числовые характеристики, охватывающие совершенно разные диапазоны (например, возраст и доход). Мы также рекомендуем нормализовать одну числовую характеристику, охватывающую широкий диапазон, например, city population.

Рассмотрим следующие две особенности:

  • Наименьшее значение признака A равно -0,5, а наибольшее — +0,5.
  • Наименьшее значение признака B равно -5,0, а наибольшее — +5,0.

Feature A и Feature B имеют относительно узкие пролеты. Однако пролет Feature B в 10 раз шире пролета Feature A Поэтому:

  • В начале обучения модель предполагает, что признак B в десять раз «важнее», чем признак A
  • Обучение займет больше времени, чем следовало бы.
  • Полученная модель может оказаться неоптимальной.

Общий ущерб из-за отсутствия нормализации будет относительно небольшим; однако мы все равно рекомендуем нормализовать функцию A и функцию B до одинакового масштаба, возможно, от -1,0 до +1,0.

Теперь рассмотрим две характеристики с большим разбросом диапазонов:

  • Наименьшее значение признака C равно -1, а наибольшее — +1.
  • Наименьшее значение признака D составляет +5000, а наибольшее — +1 000 000 000.

Если вы не нормализуете Feature C и Feature D , ваша модель, скорее всего, будет неоптимальной. Более того, обучение займет гораздо больше времени, чтобы сойтись, или даже не сойтись полностью!

В этом разделе рассматриваются три популярных метода нормализации:

  • линейное масштабирование
  • Масштабирование Z-оценки
  • логарифмическое масштабирование

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

Линейное масштабирование

Линейное масштабирование (чаще сокращается до просто масштабирования ) означает преобразование значений с плавающей точкой из их естественного диапазона в стандартный диапазон — обычно от 0 до 1 или от -1 до +1.

Линейное масштабирование является хорошим выбором, когда выполняются все следующие условия:

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

Предположим, что age человека — это признак. Линейное масштабирование — хороший метод нормализации age , потому что:

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

Упражнение: проверьте свое понимание

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

Масштабирование Z-оценки

Z-оценка — это количество стандартных отклонений значения от среднего. Например, значение, которое на 2 стандартных отклонения больше среднего, имеет Z-оценку +2,0. Значение, которое на 1,5 стандартных отклонения меньше среднего, имеет Z-оценку -1,5.

Представление функции с масштабированием Z-оценки означает сохранение Z-оценки этой функции в векторе функций. Например, на следующем рисунке показаны две гистограммы:

  • Слева — классическое нормальное распределение.
  • Справа — то же распределение, нормализованное по шкале Z-оценки.
Рисунок 4. Две гистограммы: обе показывают нормальное распределение с идентичным распределением. Первая гистограмма, которая содержит необработанные данные, имеет среднее значение 200 и стандартное отклонение 30. Вторая гистограмма, которая содержит версию Z-оценки первого распределения, имеет среднее значение 0 и стандартное отклонение 1.
Рисунок 4. Необработанные данные (слева) и Z-оценка (справа) для нормального распределения.

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

Рисунок 5. Две гистограммы одинаковой формы, каждая из которых показывает крутой подъем к плато, а затем относительно быстрый спуск, за которым следует постепенный спад. Одна гистограмма иллюстрирует распределение необработанных данных; другая гистограмма иллюстрирует распределение необработанных данных при нормализации по масштабированию Z-оценки. Значения на оси X двух гистограмм сильно различаются. Гистограмма необработанных данных охватывает область от 0 до 29 000, тогда как гистограмма, масштабированная по Z-оценке, колеблется от -1 до примерно +4,8
Рисунок 5. Необработанные данные (слева) и масштабирование Z-оценки (справа) для неклассического нормального распределения.

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

Обратите внимание, что некоторые распределения могут быть нормальными в пределах своего диапазона, но все равно содержать экстремальные выбросы. Например, почти все точки в функции net_worth могут аккуратно вписываться в 3 стандартных отклонения, но несколько примеров этой функции могут находиться в сотнях стандартных отклонений от среднего значения. В таких ситуациях вы можете объединить масштабирование Z-оценки с другой формой нормализации (обычно с отсечением), чтобы справиться с этой ситуацией.

Упражнение: проверьте свое понимание

Предположим, что ваша модель тренируется на признаке с именем height , который содержит рост взрослых десяти миллионов женщин. Будет ли масштабирование Z-оценки хорошим методом нормализации для height ? Почему или почему нет?

Логарифмическое масштабирование

Логарифмическое масштабирование вычисляет логарифм исходного значения. Теоретически логарифм может иметь любое основание; на практике логарифмическое масштабирование обычно вычисляет натуральный логарифм (ln).

Логарифмическое масштабирование полезно, когда данные соответствуют распределению степенного закона . Грубо говоря, распределение степенного закона выглядит следующим образом:

  • Низкие значения X имеют очень высокие значения Y
  • По мере увеличения значений X значения Y быстро уменьшаются. Следовательно, высокие значения X имеют очень низкие значения Y

Рейтинги фильмов являются хорошим примером распределения степенного закона. Обратите внимание на следующий рисунок:

  • Некоторые фильмы имеют много оценок пользователей. (Низкие значения X имеют высокие значения Y )
  • Большинство фильмов имеют очень мало оценок пользователей. (Высокие значения X имеют низкие значения Y )

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

Рисунок 6. Два графика, сравнивающих необработанные данные с логарифмом необработанных данных. График необработанных данных показывает много оценок пользователей в начале, за которыми следует длинный хвост. Логарифм имеет более равномерное распределение.
Рисунок 6. Сравнение необработанного распределения с его логарифмом.

В качестве второго примера, продажи книг подчиняются степенному закону распределения, потому что:

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

Предположим, вы обучаете линейную модель, чтобы найти связь, скажем, между обложками книг и продажами книг. Линейная модель, обучаемая на сырых значениях, должна была бы найти что-то об обложках книг, которые продаются миллионным тиражом, что в 10 000 раз мощнее, чем обложки книг, которые продаются всего 100 экземплярами. Однако логарифмическое масштабирование всех показателей продаж делает задачу гораздо более выполнимой. Например, логарифм 100 равен:

  ~4.6 = ln(100)

в то время как логарифм числа 1 000 000 равен:

  ~13.8 = ln(1,000,000)

Итак, логарифм 1 000 000 всего лишь в три раза больше логарифма 100. Вы, вероятно, можете себе представить, что обложка бестселлера примерно в три раза более влиятельна (в каком-то смысле), чем обложка малораспродаваемой книги.

Вырезка

Отсечение — это метод минимизации влияния экстремальных выбросов. Вкратце, отсечение обычно ограничивает (снижает) значение выбросов до определенного максимального значения. Отсечение — странная идея, и тем не менее, оно может быть очень эффективным.

Например, представьте набор данных, содержащий признак с именем roomsPerPerson , который представляет собой количество комнат (общее количество комнат, деленное на количество жильцов) для различных домов. Следующий график показывает, что более 99% значений признака соответствуют нормальному распределению (примерно, среднее значение 1,8 и стандартное отклонение 0,7). Однако признак содержит несколько выбросов, некоторые из которых экстремальны:

Рисунок 7. График RoomsPerPerson, в котором почти все значения сгруппированы между 0 и 4, но есть ооочень длинный хвост , доходящий до 17 комнат на человека
Рисунок 7. В основном нормально, но не совсем нормально.

Как можно минимизировать влияние этих экстремальных выбросов? Ну, гистограмма не является равномерным распределением, нормальным распределением или распределением по степенному закону. Что, если вы просто ограничите или обрежете максимальное значение roomsPerPerson произвольным значением, скажем, 4.0?

График RoomsPerPerson, в котором все значения лежат между 0 и 4.0. График имеет форму колокола, но есть аномальный холм на 4.0
Рисунок 8. Значения признаков отсечения при 4,0.

Отсечение значения признака на уровне 4,0 не означает, что ваша модель игнорирует все значения больше 4,0. Скорее, это означает, что все значения, которые были больше 4,0, теперь становятся 4,0. Это объясняет странный холм на уровне 4,0. Несмотря на этот холм, масштабированный набор признаков теперь более полезен, чем исходные данные.

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

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

  • Обрежьте Z-оценки больше 3, чтобы они стали ровно 3.
  • Обрежьте Z-оценки менее -3 до значения ровно -3.

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

Краткое изложение методов нормализации

Метод нормализации Формула Когда использовать
Линейное масштабирование$$ x' = \frac{x - x_{min}}{x_{max} - x_{min}} $$ Когда признак в основном равномерно распределен по всему диапазону.
Масштабирование Z-оценки$$ x' = \frac{x - μ}{σ}$$ Когда признак распределен нормально (пик близок к среднему значению). Колоколообразный
Логарифмическое масштабирование$$ x' = log(x)$$ Когда распределение признаков сильно перекошено по крайней мере с обеих сторон хвоста. Тяжелый хвост в форме
Вырезка Если $x > max$, устанавливаем $x' = max$
Если $x < min$, устанавливаем $x' = min$
Когда признак содержит экстремальные выбросы.

Упражнение: проверьте свои знания

Какой метод будет наиболее подходящим для нормализации признака со следующим распределением?

Гистограмма, показывающая кластер данных со значениями в диапазоне от 0 до 200 000. Количество точек данных постепенно увеличивается для диапазона от 0 до 100 000, а затем постепенно уменьшается от 100 000 до 200 000.

Масштабирование Z-оценки
Точки данных в целом соответствуют нормальному распределению, поэтому масштабирование Z-оценки загонит их в диапазон от –3 до +3.
Линейное масштабирование
Просмотрите обсуждения методов нормализации на этой странице и попробуйте еще раз.
Логарифмическое масштабирование
Просмотрите обсуждения методов нормализации на этой странице и попробуйте еще раз.
Вырезка
Просмотрите обсуждения методов нормализации на этой странице и попробуйте еще раз.

Предположим, вы разрабатываете модель, которая прогнозирует производительность центра обработки данных на основе температуры, измеренной внутри центра обработки данных. Почти все значения temperature в вашем наборе данных находятся в диапазоне от 15 до 30 (по Цельсию), за исключением следующих:

  • Один или два раза в год в особенно жаркие дни регистрируются несколько значений temperature от 31 до 45 градусов.
  • Каждая тысячная точка temperature принимается за 1000, а не за фактическую температуру.

Какой метод нормализации temperature будет разумным?

Вырежьте выбросы между 31 и 45, но удалите выбросы со значением 1000.

Значения 1000 являются ошибками и должны быть удалены, а не обрезаны.

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

Обрезать все выбросы
Просмотрите обсуждения методов нормализации на этой странице и попробуйте еще раз.
Удалить все выбросы
Просмотрите обсуждения методов нормализации на этой странице и попробуйте еще раз.
Удалите выбросы между 31 и 45, но обрежьте выбросы значением 1000.
Просмотрите обсуждения методов нормализации на этой странице и попробуйте еще раз.