После изучения ваших данных с помощью методов статистики и визуализации вам следует преобразовать их таким образом, чтобы ваша модель могла обучаться более эффективно. Цель нормализации — преобразовать объекты в одинаковый масштаб. Например, рассмотрим следующие две особенности:
- Функция
X
охватывает диапазон от 154 до 24 917 482. - Функция
Y
охватывает диапазон от 5 до 22.
Эти две функции охватывают очень разные диапазоны. Нормализация может манипулировать X
и Y
так, чтобы они охватывали одинаковый диапазон, например, от 0 до 1.
Нормализация дает следующие преимущества:
- Помогает моделям быстрее сходиться во время обучения. Когда разные функции имеют разные диапазоны, градиентный спуск может «отскакивать» и замедлять сходимость. Тем не менее, более продвинутые оптимизаторы, такие как Adagrad и Adam, защищают от этой проблемы, изменяя эффективную скорость обучения с течением времени.
- Помогает моделям делать более точные прогнозы . Когда разные функции имеют разные диапазоны, результирующая модель может давать несколько менее полезные прогнозы.
- Помогает избежать «ловушки NaN», когда значения функции очень высоки. NaN — это сокращение, а не число . Когда значение в модели превышает предел точности с плавающей запятой, система устанавливает значение
NaN
вместо числа. Когда одно число в модели становится NaN, другие числа в модели также в конечном итоге становятся NaN. - Помогает модели узнать соответствующие веса для каждой функции. Без масштабирования признаков модель уделяет слишком много внимания признакам с широкими диапазонами и недостаточно внимания признакам с узкими диапазонами.
Мы рекомендуем нормализовать числовые характеристики, охватывающие совершенно разные диапазоны (например, возраст и доход). Мы также рекомендуем нормализовать один числовой признак, охватывающий широкий диапазон, например city population.
Учитывайте следующие две особенности:
- Наименьшее значение функции
A
составляет -0,5, а максимальное — +0,5. - Наименьшее значение функции
B
составляет -5,0, а максимальное — +5,0.
Функция A
и функция B
имеют относительно узкие диапазоны. Однако диапазон функции B
в 10 раз шире, чем диапазон функции A
Поэтому:
- В начале обучения модель предполагает, что Feature
A
в десять раз более «важна», чем FeatureB
- Обучение займет больше времени, чем следовало бы.
- Полученная модель может оказаться неоптимальной.
Общий ущерб из-за отсутствия нормализации будет относительно небольшим; однако мы по-прежнему рекомендуем нормализовать функцию 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.](https://developers.google.cn/static/machine-learning/crash-course/images/z-scaling_classic.png?authuser=6&hl=ru)
Масштабирование Z-показателя также является хорошим выбором для данных, подобных показанным на следующем рисунке, которые имеют лишь приблизительно нормальное распределение.
![Рисунок 5. Две гистограммы одинаковой формы, каждая из которых показывает крутой подъем до плато, а затем относительно быстрый спад с последующим постепенным спадом. Одна гистограмма иллюстрирует распределение необработанных данных; другая гистограмма иллюстрирует распределение необработанных данных, нормализованных с помощью масштабирования Z-показателя. Значения по оси X двух гистограмм сильно различаются. Гистограмма необработанных данных охватывает диапазон от 0 до 29 000, а масштабированная гистограмма Z-показателя находится в диапазоне от -1 до примерно +4,8.](https://developers.google.cn/static/machine-learning/crash-course/images/z-scaling-non-classic-normal-distribution.png?authuser=6&hl=ru)
Z-показатель является хорошим выбором, когда данные подчиняются нормальному распределению или распределению, напоминающему нормальное распределение.
Обратите внимание, что некоторые распределения могут быть нормальными в большей части своего диапазона, но все же содержать крайние выбросы. Например, почти все точки функции net_worth
могут аккуратно укладываться в 3 стандартных отклонения, но некоторые примеры этой функции могут отклоняться от среднего значения на сотни стандартных отклонений. В таких ситуациях вы можете комбинировать масштабирование Z-показателя с другой формой нормализации (обычно обрезкой), чтобы справиться с этой ситуацией.
Упражнение: Проверьте свое понимание.
Предположим, ваша модель тренируется на признаке с именем «height
, который содержит рост десяти миллионов женщин. Будет ли масштабирование Z-показателя хорошим методом нормализации height
? Почему или почему нет? Масштабирование журнала
Логарифмическое масштабирование вычисляет логарифм необработанного значения. Теоретически логарифм может быть любым основанием; на практике при логарифмическом масштабировании обычно вычисляется натуральный логарифм (ln).
Логарифмическое масштабирование полезно, когда данные соответствуют степенному закону распределения. Упрощенно степенное распределение выглядит следующим образом:
- Низкие значения
X
имеют очень высокие значенияY
- По мере увеличения значений
X
значенияY
быстро уменьшаются. Следовательно, высокие значенияX
имеют очень низкие значенияY
Рейтинги фильмов являются хорошим примером степенного закона распределения. На следующем рисунке обратите внимание:
- Некоторые фильмы имеют множество пользовательских оценок. (Низкие значения
X
соответствуют высоким значениямY
) - Большинство фильмов имеют очень мало пользовательских оценок. (Высокие значения
X
имеют низкие значенияY
)
Масштабирование журнала изменяет распределение, что помогает обучить модель, которая будет давать более точные прогнозы.
Второй пример: продажи книг подчиняются степенному закону распределения, потому что:
- Большинство опубликованных книг продаются небольшим тиражом, возможно, одной или двумя сотнями.
- Некоторые книги продаются умеренным тиражом, исчисляемым тысячами.
- Лишь немногие бестселлеры будут проданы тиражом более миллиона экземпляров.
Предположим, вы обучаете линейную модель, чтобы найти связь, скажем, между обложками книг и продажами книг. Обучение линейной модели необработанным значениям должно было бы найти что-то об обложках книг, которые продаются миллионным тиражом, что на 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. График RoomPerPerson, на котором почти все значения сгруппированы между 0 и 4, но есть очень длинный хвост, доходящий до 17 комнат на человека.](https://developers.google.cn/static/machine-learning/crash-course/images/PreClipping.png?authuser=6&hl=ru)
Как можно минимизировать влияние этих крайних выбросов? Что ж, гистограмма не является ровным, нормальным или степенным распределением. Что, если вы просто ограничите или обрежете максимальное roomsPerPerson
произвольным значением, скажем, 4,0?
![График RoomPerPerson, на котором все значения лежат в диапазоне от 0 до 4,0. Сюжет колоколообразный, но на 4.0 есть аномальный холм](https://developers.google.cn/static/machine-learning/crash-course/images/Clipping.png?authuser=6&hl=ru)
Обрезание значения функции на уровне 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$ | Когда объект содержит экстремальные выбросы. |
Упражнение: Проверьте свои знания.
Предположим, вы разрабатываете модель, которая прогнозирует производительность центра обработки данных на основе температуры, измеренной внутри центра обработки данных. Почти все значения temperature
в вашем наборе данных находятся в диапазоне от 15 до 30 (по Цельсию), за следующими исключениями:
- Один или два раза в год, в очень жаркие дни,
temperature
фиксируется в пределах от 31 до 45. - Каждая тысячная точка
temperature
устанавливается на 1000, а не на фактическую температуру.
Какой метод нормализации temperature
был бы разумным?
Значения 1000 являются ошибками и должны быть удалены, а не обрезаны.
Значения между 31 и 45 являются допустимыми точками данных. Отсечение этих значений, вероятно, было бы хорошей идеей, если предположить, что набор данных не содержит достаточно примеров в этом диапазоне температур, чтобы обучить модель делать хорошие прогнозы. Однако во время вывода обратите внимание, что усеченная модель будет давать тот же прогноз для температуры 45, что и для температуры 35.