Что такое нормализация данных
Перейти к содержимому

Что такое нормализация данных

  • автор:

Нормализация компонента данных

В этой статье описывается компонент в конструкторе Машинного обучения Azure.

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

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

Например, предположим, что ваш входной набор данных содержит один столбец со значениями от 0 до 1 и другой столбец со значениями от 10 000 до 100 000. Большая разница в масштабе чисел может вызвать проблемы, когда вы попытаетесь объединить значения как функции во время моделирования.

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

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

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

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

Настройка нормализации данных

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

  1. Добавьте компонент Нормализация данных в свой конвейер. Вы можете найти компонент в Машинном обучении Azure в разделе Преобразование данных в категории Масштабирование и уменьшение.
  2. Подключите набор данных, содержащий хотя бы один столбец всех чисел.
  3. Используйте селектор столбцов, чтобы выбрать числовые столбцы для нормализации. Если вы не выбираете отдельные столбцы, по умолчанию включаются все столбцы числового типа во входных данных, и ко всем выбранным столбцам применяется один и тот же процесс нормализации. Это может привести к странным результатам, если вы включите числовые столбцы, которые не следует нормализовать! Всегда внимательно проверяйте колонки. Если числовые столбцы не обнаружены, проверьте метаданные столбца, чтобы убедиться, что тип данных столбца является поддерживаемым числовым типом.

Совет Чтобы гарантировать, что столбцы определенного типа предоставляются в качестве входных данных, попробуйте использовать компонент Выбрать столбцы в наборе данных перед Нормализацией данных.

  • Использовать 0 для постоянных столбцов, если этот флажок установлен: выберите этот параметр, если любой числовой столбец содержит одно неизменное значение. Это гарантирует, что такие столбцы не будут использоваться в операциях нормализации.
  • В раскрывающемся списке Метод преобразования выберите одну математическую функцию, которая будет применяться ко всем выбранным столбцам.
    • Zscore: преобразует все значения в z-оценку. Значения в столбце преобразуются по следующей формуле: нормализация с помощью стандартизированной величиныСреднее и стандартное отклонения вычисляются для каждого столбца отдельно. Используется стандартное отклонение совокупности.
    • MinMax: нормализатор min-max линейно изменяет масштаб каждой функции до интервала [0,1]. Масштабирование в интервале [0,1] осуществляется путем сдвига значений каждого компонента таким образом, чтобы минимальное значение было равно 0, а затем деления на новое максимальное значение (которое представляет собой разницу между первоначальными максимальными и минимальными значениями). Значения в столбце преобразуются по следующей формуле: нормализация с помощью функции min-max
    • Логистика: значения в столбце преобразуются по следующей формуле: формула нормализации по логистической функции
    • LogNormal: значения в столбце преобразуются по следующей формуле. Значения в столбце преобразуются по следующей формуле: логнормальноеAML_normalization Здесь μ и σ — параметры распределения, вычисленные эмпирически на основе данных как оценки максимального правдоподобия для каждого столбца отдельно.
    • TanH: все значения преобразуются в гиперболический тангенс. Значения в столбце преобразуются по следующей формуле: нормализация с помощью функции tanh
  • Отправьте конвейер или дважды щелкните компонент Нормализовать данные и выберите Выполнить выбранное.
  • Результаты

    Компонент Нормализации данных генерирует два вывода:

    • Чтобы просмотреть преобразованные значения, щелкните компонент правой кнопкой мыши и выберите Визуализировать. По умолчанию значения преобразуются на месте. Если вы хотите сравнить преобразованные значения с исходными значениями, используйте компонент Добавить столбцы, чтобы повторно объединить наборы данных и просмотреть столбцы рядом.
    • Чтобы сохранить преобразование, чтобы можно было применить тот же метод нормализации к другому набору данных, выберите компонент и выберите Зарегистрировать набор данных на вкладке Выходные данные на правой панели. Затем вы можете загрузить сохраненные преобразования из группы Преобразования на левой панели навигации и применить их к набору данных с той же схемой, используя Применить преобразование.

    Дальнейшие действия

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

    Умная нормализация данных

    Во-первых, в подавляющем большинстве книг, интернет-ресурсов и уроков по Data Science нюансы, изъяны разных типов нормализации данных и их причины либо не рассматриваются вообще, либо упоминаются лишь мельком и без раскрытия сути.

    Во-вторых, имеет место «слепое» использование, например, стандартизации для наборов с большим количеством признаков — “чтобы для всех одинаково”. Особенно у новичков (сам был таким же). На первый взгляд ничего страшного. Но при детальном рассмотрении может выясниться, что какие-то признаки были неосознанно поставлены в привилегированное положение и стали влиять на результат значительно сильнее, чем должны.

    И, в-третьих, мне всегда хотелось получить универсальный метод учитывающий проблемные места.

    Повторение — мать учения

    Нормализация — это преобразование данных к неким безразмерным единицам. Иногда — в рамках заданного диапазона, например, [0..1] или [-1..1]. Иногда — с какими-то заданным свойством, как, например, стандартным отклонением равным 1.

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

    Аналитически любая нормализация сводится к формуле

    где — текущее значение,
    — величина смещения значений,
    — величина интервала, который будет преобразован к “единице”

    По сути всё сводится к тому, что исходный набор значений сперва смещается, а потом масштабируется.

    Минимакс (MinMax). Цель — преобразовать исходный набор в диапазон [0..1]. Для него:
    = , минимальное значение исходных данных.
    = — , т.е. за “единичный” интервал берется исходный диапазон значений.

    Стандартизация. Цель — преобразовать исходный набор в новый со средним значением равным 0 и стандартным отклонением равным 1.
    = , среднее значение исходных данных.
    — равен стандартному отклонению исходного набора.

    Для других методов всё аналогично, но со своими особенностями.

    В большинстве методов кластеризации или, например, классификации методом ближайших соседей необходимо рассчитывать меру “близости” между различными объектами. Чаще всего в этой роли выступают различные вариации евклидового расстояния.

    Представим, что у Вас есть какой-то набор данных с несколькими признаками. Признаки отличаются и по типу распределения, и по диапазону. Чтобы можно было с ними работать, сравнивать, их нужно нормализовать. Причём так, чтобы ни у какого из них не было преимуществ перед другими. По крайней мере, по умолчанию — любые такие предпочтения Вы должны задавать сами и осознанно. Не должно быть ситуации, когда алгоритм втайне от Вас сделал, например, цвет глаз менее важным, чем размер ушей*

    * нужно сделать небольшое примечание — здесь речь идёт не о важности признака для, например, результата классификации (это определяется на основе самих данных при обучении модели), а о том, чтобы до начала обучения все признаки были равны по своему возможному влиянию.

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

    Шаг 1 — определяем смещение

    Чаще всего данные центрируют — т.е. определяют, значение, которое станет новым 0 и “сдвигают” данные относительно него.

    Что лучше взять за центр? Некоего «типичного представителя» Ваших данных. Так при использовании стандартизации используется среднее арифметическое значение.

    Здесь проявляется проблема № 1 — различные типы распределений не позволяют применять к ним методы, созданные для нормального распределения.

    Если Вы спросите любого специалиста по статистике, какое значение лучше всего показывает “типичного представителя” совокупности, то он скажет, что это — медиана, а не среднее арифметическое. Последнее хорошо работает только в случае нормального распределения и совпадает с медианой (алгоритм стандартизации вообще оптимален именно для нормального распределения). А у Вас распределения разных признаков могут (и скорее всего будут) кардинально разные.

    Вот, например, различия между медианой и средним арифметическим значением для экспоненциального распределения.

    А вот так выглядят эти различия при добавлении выброса:

    В отличии от среднего значения медиана практически не чувствительна к выбросам и асимметрии распределения. Поэтому её оптимально использовать как “нулевое” значение при центрировании.

    В случае, когда нужно не центрировать, а вписать в заданный диапазон, смещением является минимальное значение данных. К этому вернёмся чуть позже.

    Шаг 2 — масштабируем

    Мы определили нужные величины смещения для всех признаков. Теперь нужно сделать признаки сравнимыми между собой.

    Степень возможного влияния признаков определяется величиной их диапазонов после масштабирования. Если оба признака распределены в одинаковых интервалах, например, [-1..1], то и влиять они могут одинаково. Если же изначально один из признаков лежит в диапазоне [-1..1], а второй — в [-1..100], то очевидно, что изменения второго могут оказывать существенно большее влияние. А значит он будет в привилегированном положении по сравнению с первым.

    Стандартное отклонение

    Вернёмся к примеру стандартизации. В её случае новый диапазон определяется величиной стандартного отклонения. Чем оно меньше, тем диапазон станет “шире”.

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

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

    А это значит, что у второго признака новый диапазон после масштабирования (стандартизации) будет “уже”, и его влияние будет меньше по сравнению с первым.

    Итог — стандартное отклонение не удовлетворяет начальным требованиям по одинаковому влиянию признаков (величине интервала). Даже не говоря о том, что и наличие выбросов может исказить “истинную” величину стандартного отклонения.

    Межквартильный интервал

    Другим часто используемым кандидатом является разница между 75-м и 25-м процентилями данных — межквартильный интервал. Т.е. интервал, в котором находятся “центральные” 50% данных набора. Эта величина уже устойчива к выбросам и не зависит от “нормальности” распределения наличия/отсутствия асимметрии.

    Но и у неё есть свой серьезный недостаток — если у распределения признака есть значимый “хвост”, то после нормализации с использованием межквартильного интервала он добавит “значимости” этому признаку в сравнении с остальными.

    Проблема № 2 — большие “хвосты” распределений признаков.

    Пример — два признака с нормальным и экспоненциальным распределениями. Интервалы значений одинаковы

    После нормализации с использованием межквартильного интервала (для наглядности оба интервала смещены к минимальным значениям равным нулю).

    В итоге интервал у признака с экспоненциальным распределением из-за большого “хвоста” стал больше. А, следовательно, и сам признак стал “влиятельнее”.

    Размах значений

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

    И здесь максимально проявляется, наверное, самая частая проблема в подготовке данных, проблема № 3 — выбросы. Присутствие одного или нескольких аномальных (существенно удалённых) значений за пределами диапазона основных элементов набора может ощутимо повлиять на его среднее арифметическое значение и фиктивно увеличить его размах.

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

    После нормализации по размаху

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

    Работаем с выбросами

    Решением проблемы влияния выбросов при использовании размаха является его замена на интервал, в котором будут располагаться “не-выбросы”. И дальше — масштабировать по этому интервалу.

    Искать и удалять выбросы вручную — неблагодарное дело, особенно когда количество признаков ощутимо велико. А иногда выбросы и вовсе нельзя удалять, поскольку это приведёт к потере информации об исследуемых объектах. Вдруг, это не ошибка в данных, а некое аномальное явление, которое нужно зафиксировать на будущее, а не отбрасывать без изучения? Такая ситуация может возникнуть при кластеризации.

    Пожалуй, самым массово применяемым методом автоматического определения выбросов является межквартильный метод. Его суть заключается в том, что выбросами “назначаются” данные, которые более чем в 1,5 межквартильных диапазонах (IQR) ниже первого квартиля или выше третьего квартиля.*

    * — в некоторых случаях (очень большие выборки и др.) вместо 1,5 используют значение 3 — для определения только экстремальных выбросов.

    Схематично метод изображен на рисунке снизу.

    Вроде бы все отлично — наконец-то есть инструмент, и можно приступать к работе.

    Но и здесь есть своя ложка дёгтя. В случае наличия длинных хвостов (как, например, при экспоненциальном распределении) слишком много данных попадают в такие “выбросы” — иногда достигая значений более 7%. Избирательное использование других коэффициентов (3 * IQR) опять приводит к необходимости ручного вмешательства — не для каждого признака есть такая необходимость. Их потребуется по отдельности изучать и подбирать коэффициенты. Т.е. универсальный инструмент опять не получается.

    Ещё одной существенной проблемой является то, что этот метод симметричный. Полученный “интервал доверия” (1,5 * IQR) одинаков как для малых, так и для больших значений признака. Если распределение не симметричное, то многие аномалии-выбросы с “короткой” стороны просто будут скрыты этим интервалом.

    Скорректированный интервал

    Красивое решение этих проблем предложили Миа Хаберт и Елена Вандервирен (Mia Hubert and Ellen Vandervieren) в 2007 г. в статье “An Adjusted Boxplot for Skewed Distributions”.

    Их идея заключается в вычислении границ “интервал доверия” с учетом асимметрии распределения, но чтобы для симметричного случая он был равен всё тому же 1,5 * IQR.

    Для определения некоего “коэффициента асимметрии” они использовали функцию medcouple (MC), которая определяется так:

    Поиск подходящей формулы для определения границ “интервала доверия” производился с целью сделать долю, приходящуюся на выбросы, не превышающей такую же, как у нормального распределения и 1,5 * IQR — приблизительно 0,7%

    В конечном итоге они получили такой результат:

    Более подробно про этот метод и его эффективность лучше прочитать в самой статье. Найти ее по названию не составляет труда.

    Универсальный инструмент

    Теперь, объединяя все найденные плюсы и учитывая проблемы, мы получаем оптимальное решение:

    1. Центрирование, если оно требуется, производить по медиане.
    2. Масштабировать набор данных по величине скорректированного интервала.
    3. (Опционально) — если центрирование не требуется, то смещать масштабированные данные так, чтобы границы скорректированного интервала приходились на [0..1]

    Назовем его методом… скорректированного интервала — по названию статьи Mia Hubert и Ellen Vandervieren

    Теперь сравним результаты обычных методов с новым. Для примера возьмем уже использовавшиеся выше три распределения с добавлением выбросов.

    Сравнивать новый инструмент будем с методами стандартизации, робастной нормализации (межквартильный интервал) и минимакса (MinMax — с помощью размаха).

    Ситуация № 1 — данные необходимо центрировать. Это используется в кластеризации и многих методах машинного обучения. Особенно, когда необходимо определять меру “близости” объектов.

    Робастная нормализация (по межквартильному интервалу):

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

    Ситуация № 2 — данные необходимо вписать в заданный интервал. Обычно это [0..1]. Это используется, например, при подготовке данных для входов нейронной сети.

    MinMax (по размаху):

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

    То, что только “нормальные” данные попадают в единичный диапазон [0..1], а выбросы не удаляются, но пропорционально выносятся за его пределы — это крайне полезное свойство, которое сильно поможет при кластеризации объектов со смешанными признаками, как числовыми, так и категорийными. Подробно об этом я напишу в другой статье.

    Напоследок, для возможности пощупать руками этот метод, Вы можете попробовать демонстрационный класс AdjustedScaler из моей библиотеки AdjDataTools.

    Он не оптимизирован под работу с очень большим объемом данных и работает только с pandas DataFrame, но для пробы, экспериментов или даже заготовки под что-то более серьезное вполне подойдет. Пробуйте.

    • Нормализация
    • Стандартизация
    • Data Science
    • Центрирование
    • Масштабирование
    • Adjusted boxplot
    • Python
    • AdjustedScaler
    • Python
    • Алгоритмы
    • Машинное обучение
    • Искусственный интеллект
    • Data Engineering

    Описание основных приемов нормализации базы данных

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

    Описание нормализации

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

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

    Что такое «несогласованные зависимости»? Хотя пользователю интуитивно понятно искать в таблице Клиенты адрес конкретного клиента, возможно, не имеет смысла искать там зарплату сотрудника, который обращается к данному клиенту. Зарплата сотрудника связана с сотрудником (зависит от него), поэтому эти сведения следует хранить в таблице Employees (сотрудники). Несогласованные зависимости могут затруднять доступ к данным, так как путь к данным при этом может отсутствовать или быть неправильным.

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

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

    В описаниях ниже приведены соответствующие примеры.

    Первая нормальная форма

    • Устраните повторяющиеся группы в отдельных таблицах.
    • Создайте отдельную таблицу для каждого набора связанных данных.
    • Идентифицируйте каждый набор связанных данных с помощью первичного ключа.

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

    Что произойдет при добавлении третьего поставщика? Добавление поля не является ответом; он требует изменений в программе и таблице и не обеспечивает плавное размещение динамического числа поставщиков. Вместо этого можно поместить все сведения о поставщиках в отдельную таблицу Vendors (поставщики) и связать товары с поставщиками с помощью кодов товаров или поставщиков с товарами с помощью кодов поставщиков.

    Вторая нормальная форма

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

    Записи не должны зависеть от чего-либо, кроме первичного ключа таблицы (составного ключа, если это необходимо). Возьмем для примера адрес клиента в системе бухгалтерского учета. Этот адрес необходим не только таблице Customers, но и таблицам Orders, Shipping, Invoices, Accounts Receivable и Collections. Вместо того чтобы хранить адрес клиента как отдельный элемент в каждой из этих таблиц, храните его в одном месте: или в таблице Customers, или в отдельной таблице Addresses.

    Третья нормальная форма

    • Исключите поля, которые не зависят от ключа.

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

    Например, в таблицу Employee Recruitment (наем сотрудников) можно включить адрес кандидата и название университета, в котором он получил образование. Однако для организации групповой почтовой рассылки необходим полный список университетов. Если сведения об университетах будут храниться в таблице Candidates, составить список университетов при отсутствии кандидатов не получится. Таким образом, создайте вместо этого отдельную таблицу Universities и свяжите ее с таблицей Candidates при помощи ключа — кода университета.

    ИСКЛЮЧЕНИЕ: Придерживаться третьей нормальной формы, хотя теоретически желательно, не всегда является практическим. Например, для устранения всех возможных зависимостей между полями таблицы Customers придется создать отдельные таблицы для хранения сведений о городах, почтовых индексах, торговых представителях, категориях клиентов и любых других сведений, которые могут дублироваться в нескольких записях. Теоретически нормализация стоит проводить. Однако значительное увеличение числа маленьких таблиц может привести к снижению производительности СУБД или исчерпанию памяти и числа дескрипторов открытых файлов.

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

    Другие формы нормализации

    Четвертая нормальная форма, также называемая Boyce-Codd нормальной форме (BCNF), и пятая нормальная форма существуют, но редко рассматриваются в практическом проектировании. Игнорирование этих правил может привести к не совсем идеальному дизайну базы данных, но не должно влиять на функциональные возможности.

    Нормализация таблицы примеров

    Ниже приведен пример нормализации таблицы с вымышленными данными о студентах.

      Таблица до нормализации:

    Student# Advisor Adv-Room Class1 Class2 Class3
    1022 Петров 412 101-07 143-01 159-02
    4123 Иванов 216 101-07 143-01 179-04
    Student# Advisor Adv-Room Class#
    1022 Петров 412 101-07
    1022 Петров 412 143-01
    1022 Петров 412 159-02
    4123 Иванов 216 101-07
    4123 Иванов 216 143-01
    4123 Иванов 216 179-04
    Student# Advisor Adv-Room
    1022 Петров 412
    4123 Иванов 216

    Таблица Registration:

    Student# Class#
    1022 101-07
    1022 143-01
    1022 159-02
    4123 101-07
    4123 143-01
    4123 179-04
    Student# Advisor
    1022 Петров
    4123 Иванов

    Нормализация данных (Data normalization)

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

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

    Необходимость нормализации вызвана тем, что разные признаки обучающего набора данных могут быть представлены в разных масштабах и изменяться в разных диапазонах. Например, возраст, который изменяется от 0 до 100, и доход, изменяющийся от нескольких тысяч до нескольких миллионов. То есть диапазоны изменения признаков «Возраст» и «Доход» различаются в тысячи раз.

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

    Существует несколько основных методов нормализации.

    Десятичное масштабирование (decimal scaling)

    В данном методе нормализация производится путём перемещения десятичной точки на число разрядов, соответствующее порядку числа: x ′ i = x i / 10 n , где n — число разрядов в наибольшем наблюдаемом значении. Например, пусть имеется набор значений: -10, 201, 301, -401, 501, 601, 701. Поскольку n=3, то получим x ′ i = x i / 10 3 . Иными словами, каждое наблюдаемое значение делим на 1000 и получаем: -0.01, 0.201, 0.301, -0.401, 0.501, 0.601, 0.701.

    Минимаксная нормализация

    Несложно увидеть недостаток предыдущего метода: результирующие значения всегда будут занимать не весь диапазон [0,1], а только его часть, в зависимости от наибольшего и наименьшего наблюдаемых значений. Если исходный диапазон мал (скажем, 400 — 500), то получим, что в результате десятичного масштабирование нормализованные значения будут лежать в диапазоне [0.4,0.5], т.е. его изменчивость окажется очень низкой, что плохо сказывается на качестве построенной модели.

    Решить проблему можно путём применения минимаксной нормализации, которая реализуется по формуле:

    X ′ = X − X m i n X m a x − X m i n .

    Эту формулу можно обобщить на привидение исходного набора значений к произвольному диапазону [ a , b ] :

    X ′ = a + X − X m i n X m a x − X m i n ( b − a ) .

    Наиболее часто используется приведение к диапазонам [0,1] и [-1,1]

    Нормализация средним (Z-нормализация)

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

    x ′ i = ( x i − ¯ ¯¯¯ ¯ X ) / σ x .

    Величины, полученные по данной формуле, в статистике называют Z-оценками. Их Абсолютное значение представляет собой оценку (в единицах стандартного отклонения) расстояния между x и его средним значением ¯ ¯¯¯ ¯ X в общей совокупности. Если z меньше нуля, то x ниже средней, а если z больше нуля, то x выше средней.

    Отношение

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

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *