Загрузка урока...
После изучения данных с помощью статистических и визуализирующих методов, вам следует преобразовать данные способами, которые помогут вашей модели обучаться более эффективно. Цель нормализации — преобразовать признаки так, чтобы они находились в схожем масштабе
Например, рассмотрим следующие два признака:
Характеристика 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 лет.
Хотя некоторые возрастные группы представлены лучше, чем другие, большой набор данных должен содержать достаточно примеров всех возрастов.
Примечание:Большинство реальных объектов не соответствуют всем критериям линейного масштабирования. Масштабирование по Z-оценке обычно является лучшим выбором для нормализации, чем линейное масштабирование.
Предположим, что в вашей модели есть признакnet_worth, который содержит чистую стоимость разных людей. Будет ли линейное масштабирование хорошим методом нормализации дляnet_worth? Почему или почему нет?
Z-оценка — это количество стандартных отклонений значения от среднего. Например, значение, которое на 2 стандартных отклонения больше среднего, имеет Z-оценку +2,0. Значение, которое на 1,5 стандартных отклонения меньше среднего, имеет Z-оценку -1,5.
Представление функции с масштабированием Z-оценки означает сохранение Z-оценки этой функции в векторе функций. Например, на следующем рисунке показаны две гистограммы:
Слева — классическое нормальное распределение.
Справа — то же распределение, нормализованное по шкале Z-оценки.

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

Рисунок 5. Необработанные данные (слева) и масштабирование Z-оценки (справа) для неклассического нормального распределения.
Z-оценка является хорошим выбором, когда данные подчиняются нормальному распределению или распределению, несколько похожему на нормальное распределение.
Обратите внимание, что некоторые распределения могут быть нормальными в пределах своего диапазона, но все равно содержать экстремальные выбросы. Например, почти все точки в функции net_worth могут аккуратно вписываться в 3 стандартных отклонения, но несколько примеров этой функции могут находиться в сотнях стандартных отклонений от среднего значения. В таких ситуациях вы можете объединить масштабирование Z-оценки с другой формой нормализации (обычно с отсечением), чтобы справиться с этой ситуацией.
Логарифмическое масштабирование вычисляет логарифм исходного значения. Теоретически логарифм может иметь любое основание; на практике логарифмическое масштабирование обычно вычисляет натуральный логарифм (ln).
Логарифмическое масштабирование полезно, когда данные соответствуют распределению степенного закона . Грубо говоря, распределение степенного закона выглядит следующим образом:
Низкие значения X имеют очень высокие значения Y
По мере увеличения значений X значения Y быстро уменьшаются. Следовательно, высокие значения X имеют очень низкие значения Y
Рейтинги фильмов являются хорошим примером распределения степенного закона. Обратите внимание на следующий рисунок:
Некоторые фильмы имеют много оценок пользователей. (Низкие значения X имеют высокие значения Y )
Большинство фильмов имеют очень мало оценок пользователей. (Высокие значения X имеют низкие значения Y )
Логарифмическое масштабирование изменяет распределение, что помогает обучить модель, которая будет делать более точные прогнозы.

Рисунок 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 произвольным значением, скажем, 4.0?

Рисунок 8. Значения признаков отсечения при 4,0.
Отсечение значения признака на уровне 4,0 не означает, что ваша модель игнорирует все значения больше 4,0. Скорее, это означает, что все значения, которые были больше 4,0, теперь становятся 4,0. Это объясняет странный холм на уровне 4,0. Несмотря на этот холм, масштабированный набор признаков теперь более полезен, чем исходные данные.
Подождите секунду! Можно ли действительно уменьшить каждое значение выброса до некоторого произвольного верхнего порога? При обучении модели — да.
Вы также можете обрезать значения после применения других форм нормализации. Например, предположим, что вы используете масштабирование Z-оценки, но несколько выбросов имеют абсолютные значения, намного превышающие 3. В этом случае вы можете:
Обрежьте Z-оценки больше 3, чтобы они стали ровно 3.
Обрежьте Z-оценки менее -3 до значения ровно -3.
Отсечение предотвращает переиндексацию вашей модели на неважных данных. Однако некоторые выбросы на самом деле важны, поэтому отсечение значений следует выполнять осторожно.
Лучший метод нормализации — тот, который хорошо работает на практике, поэтому пробуйте новые идеи, если считаете, что они хорошо подойдут для вашего распределения признаков.

В этом материале нет файлов для просмотра.