Нормирование данных
Проиллюстрируем значение использования норм на примере широко известной методики К.Томаса. Напомним, что в ней вывод о доминирующей стратегии поведения в конфликтной ситуации делается с опорой на числовые данные. А именно, после подсчета суммарных баллов по каждой шкале, нужно выявить шкалу имеющую наибольший балл. Соответствующая шкале стратегия интерпретируется как доминирующая в конфликтной ситуации. Подсчитанные статистики показывают, что средние величины шкальных оценок по абсолютной величине различны. Они варьируют у мужчин от 5,25 балла до 7,25 балла и у женщин от 3,71 до 7,65 баллов (см. табл. 11).
Табл. 11. Первичные статистики шкальных оценок методики Томаса
| Пол | Мужчины (n=56) | Женщины (n=71) | ||||||
| Стратегия | Средн | -95% | +95% | Сигма | Средн | -95% | +95% | Сигма |
| Напористость | 5,25 | 4,45 | 6,05 | 2,99 | 3,71 | 3,04 | 4,37 | 2,83 |
| Сотрудничество | 6,29 | 5,64 | 6,93 | 2,41 | 6,24 | 5,74 | 6,74 | 2,11 |
| Компромисс | 5,32 | 4,71 | 5,93 | 2,27 | 5,62 | 5,10 | 6,14 | 2,19 |
| Избегание | 7,25 | 6,71 | 7,79 | 2,02 | 7,65 | 7,18 | 8,11 | 1,96 |
| Уступчивость | 5,82 | 5,19 | 6,46 | 2,37 | 6,70 | 6,20 | 7,20 | 2,11 |
Средн. — средние величины;
-950% и +95.0% — доверительные интервалы средних величин;
Выделены наибольшие средние величины.
Таким образом, если не учитывать нормативные данные, полученные на российской выборке (или проверенные на российской выборке), то в интерпретации результатов можно придти к неверным выводам. В самом деле, мужчинам и женщинам свойственно предпочтение стратегии избегания. В руководстве к методике не говорится о том, что доминирование одной из пяти стратегий является транскультуральной характеристикой личности. По контексту можно понять, что автор исходит из предположения о равной вероятности предпочтения каждой из пяти стратегий. Поскольку между шкальными показателями существуют статистически значимые корреляционные связи, вряд ли можно говорить о равной вероятности следования каждой из пяти стратегий. В такой ситуации, когда отсутствуют нормативные данные и сведения о характере распределения величин, надежнее опираться на подсчитанные для своей выборки статистики. В частности — для оценки выраженности доминирования одной из стратегий использовать сигму и доверительные интервалы. Добавим, что нормы целесообразно рассчитать отдельно для мужчин и женщин. По представленным данным видно, что в двух шкалах из пяти показатели значимо различаются у разных полов. При сравнении групп или подгрупп, эта половая специфичность может оказаться переменной, влияние которой нельзя не учитывать.
Вычислять нормы целесообразно и в других случаях. Полученные при сборе данных начальные (первичные) оценки выполнения экспериментальных заданий далеко не всегда удобно использовать в дальнейшей работе. Их тем или иным способом преобразуют. Наиболее частыми преобразованиями являютсяцентрирование и нормированиесреднеквадратическими отклонениями. Под центрированием понимается линейная трансформация величин признака, при которой средняя величина распределения определенного признака становится равной нулю. Направление шкалы и ее единицы остаются при этом неизменными.
Суть нормирования состоит в переходе к другому масштабу — стандартизированным единицам измерения. При стандартизировании результатов тестовых испытаний нормирование чаще всего осуществляется с помощью среднеквадратических отклонений. Стандартизирование производится при нормальном распределении тестовых оценок или близком к нему по виду.
В психологии существует целый ряд шкал, основанных на нормальном распределении и имеющих разные значения М и s. Например, в шкале отклонений интеллекта IQ: М=100, s =15; в шкале Векслера М=10, s = 3. Распределения различных измеренных в эксперименте признаков имеют разные величины М и s . Переводя полученные первичные оценки разных признаков к распределению с одними и теми же М и s, мы получаем больше возможностей для оценки и сопоставления их варьирования. Сделать это нам позволяет использование нормированного отклонения. Нормированное отклонение показывает, на сколько сигм отклоняется та или иная варианта от среднего уровня варьирующего признака (средней арифметической), и выражается формулой:
s
где V — значение признака (в начальных баллах).
С помощью нормированного отклонения можно оценить любое полученное значение по отношению к группе в целом, взвесить его отклонение и одновременно освободиться от именованных величин. Для того чтобы избавиться от отрицательных чисел к полученной величине t можно прибавить какую-либо константу. Удобно, если все числа, с которыми вы оперируете имеют одинаковое количество знаков. С учетом этих соображений весьма удобна шкала Т-оценок. Для этой шкалы принято нормальное распределение, имеющее М=0, s =10. Для пересчета берется константа равная 50. Формула преобразования начальных баллов в Т-оценки следующая:
s
Смысл процедуры нормирования рассмотрим на примере. Предположим, нас интересуют некоторые связи коммуникативной умелости продавцов с особенностями расположения магазина в крупном городе. Чтобы составить некоторую интегральную оценку коммуникативной умелости конкретного продавца, мы можем через наблюдение получить по каждому испытуемому ряд параметров, характеризующих его общение с покупателем. Например, мы можем измерить среднюю длительность контакта глазами, среднее количество улыбок в фиксированный интервал времени, количество грубых, неприветливых обращений и т.д. Можно охарактеризовать преимущества и недостатки расположения магазина в городе (насколько "бойкое место" и т.п.). Для этого можно подсчитать количество маршрутов городского транспорта, имеющих остановки в непосредственной близости от магазина, оценить его удаленность от станций метро, учесть число расположенных поблизости магазинов другого профиля и т.д.
Для того чтобы вывести некоторый обобщенный коммуникативный показатель невозможно складывать число улыбок с длительностью контакта глазами и вычитать из этой суммы количество выражений, свидетельствующих о низкой речевой культуре. Бессмысленно складывать число автобусных маршрутов с числом соседних магазинов и вычитать из суммы величину расстояния до ближайшего метро. Лучше собрать необходимый массив количественных данных, проводя исследование в ряде магазинов, подсчитать первичные статистики для всех этих показателей, а затем, после преобразования начальных данных, получить Т-баллы по каждому показателю.
При нормировании из каждого полученного при сборе данных значения в начальных единицах вычитают среднюю арифметическую, а разность делят на сигму. Полученную величину умножают на 10, затем прибавляют к 50 или вычитают из 50. Выбором последнего арифметического действия (сложение или вычитание) мы можем задать направление вклада, который делает этот параметр в высчитываемую интегральную оценку, т.е. можем задавать направленность преобразования, учитывая специфику данного параметра. Если конкретное значение в начальных единицах превышает среднюю арифметическую, мы можем нормированное отклонение (разность, деленную на сигму) приплюсовать к 50. Это будет соответствовать большей выраженности оцениваемого психического качества у данного испытуемого, чем в среднем по нашей выборке.
Например, большее у конкретного продавца количество улыбок на одну сигму (чем в среднем) количественно теперь будет выражено: 60 Т-баллами. Количественную оценку признаков высокой речевой культуры в нормированных отклонениях следует прибавлять к 50 Т-баллам, а низкой речевой культуры — вычитать из 50 Т-баллов. Если, например, количественная оценка некоторого признака отрицательной направленности (в начальных баллах), превышает среднюю величину на полсигмы, то в Т-баллах она будет равна 45. После такого рода преобразований, подсчитывая интегральный показатель коммуникативной умелости для конкретного испытуемого, мы можем прибавлять одни Т-баллы к другим.
Форму стандартизирования данных целесообразно выбирать с учетом размаха полученных начальных оценок и числа градаций. Если в начальных баллах число градаций 7-15, то могут оказаться вполне подходящими стенайны[2]. Если же число градаций достигает 30 и более при небольшой скошенности распределения (асимметрии), то переводя эти показатели в стенайны мы будем огрублять баллы, т.е. терять некоторую долю точности произведенного измерения. Если есть основания считать, что ваши измерения достаточно эффективны (например, есть данные о хорошей ретестовой надежности, обнаружены высокие корреляции полученных в измерениях показателей с ясными и надежными внешними критериями валидизации и т.д.), то оправданным будет использование стандартизированых единиц имеющее такое же или даже несколько большее число градаций.
Нормализация данных в Python
Перевод статьи «Normalization of Data in Python».
Сегодня мы хотим поговорить о том, что такое нормализация данных в Python. Пожалуй, начать стоит с определения. Нормализация данных – это метод, который ускоряет получение желаемого результата за счет того, что машине приходится обрабатывать меньший диапазон данных.
Нормализация – непростая задача, потому что все ваши результаты зависят от выбора правильного метода нормализации. Выбрав неправильный метод, вы можете получить совсем не то, что ожидали.
Нормализация также зависит от типа данных, т.е. от того, имеете ли вы дело с изображением, текстом, числами и т. д. Каждый тип данных имеет свои методы нормализации. В этой статье мы сосредоточимся на числовых данных.
Метод 1. Использование sklearn
Метод sklearn – очень популярный метод нормализации данных.

В ячейке номер [83] мы импортируем все необходимые для работы библиотеки: NumPy и sklearn . Вы также можете заметить, что мы импортируем preprocessing из самого sklearn . Именно поэтому данный метод называется методом нормализации sklearn.
Далее, в ячейке номер [84] мы создаем массив NumPy с уникальными целочисленными значениями.
В ячейке номер [85] вызываем метод normalize() из preprocessing и передаем numpy_array , который мы только что создали на предыдущем шаге, в качестве параметра.
Как видно из результатов, в ячейке номер [86] все наши целочисленные данные теперь нормализованы между нулем и единицей.
Метод 2. Нормализация определенного столбца в наборе данных с помощью sklearn
Мы также можем нормализовать конкретный столбец нашего набора данных. Давайте разберем такой случай.

В ячейке номер [87] мы импортируем библиотеки pandas и sklearn.
В ячейке номер [88] создаем CSV-файл с поддельными данными и загружаем его с помощью модуля pandas (функция read_csv() ).
Далее, в ячейке номер [89] мы выводим на экран только что загруженный CSV-файл.
В следующей ячейке мы считываем конкретный столбец CSV-файла, используя np.array() , и сохраняем результат в переменную value_array .
В ячейке номер [92] мы вызываем метод normalize() из preprocessing , в который передаем value_array в качестве параметра.
Метод 3. Нормализация всего набора данных по столбцам или по строкам
В предыдущем методе мы обсудили, как можно нормализовать конкретный столбец файла CSV. Но иногда нам нужно нормализовать весь набор данных. В таком случае мы можем использовать метод, показанный ниже. В нем мы нормализуем весь набор данных, но по столбцам ( axis = 0 ). Если в параметрах функции normalize() указать axis = 1 , она будет нормализовать данные по строкам. По умолчанию значение axis равно 1.

Итак, первые три шага абсолютно идентичны тому, что мы делали в предыдущем разделе.
В ячейке номер [96] мы передаем весь CSV-файл (demo_numeric.csv) вместе с еще одним дополнительным параметром axis = 0, который сообщает библиотеке, что мы хотим нормализовать весь набор данных по столбцам.
И далее, в ячейке [97] мы выводим результат нормализованных данных со значениями от нуля до единицы.
Метод 4. Использование MinMaxScaler()
Sklearn предоставляет и другой метод нормализации — MinMaxScalar . Благодаря простоте использования этот метод тоже пользуется большой популярностью.

Для начала импортируем все необходимые пакеты. Затем создаем CSV-файл с фиктивными данными (demo_numeric.csv) и загружаем его с помощью пакета pandas (функция read_csv() ). После выводим этот файл на экран. В общем, всё, как и в предыдущих методах.
А вот дальше, в ячейке номер [101], мы вызываем MinMaxScalar() из preprocessing и создаем объект min_max_Scalar . Мы не передали никаких параметров, потому что нам нужно нормализовать данные между 0 и 1. Но при желании вы можете добавить свои значения (мы это рассмотрим в следующем разделе).
В ячейке номер [102] мы сначала читаем все имена столбцов для дальнейшего использования для отображения результатов. Затем мы вызываем fit_tranform() из созданного объекта min_max_Scalar и передаем туда CSV-файл.
После этого, в ячейке номер [103], мы получаем нормализованные результаты, находящиеся между 0 и 1.
Метод 5. Использование MinMaxScaler с разными параметрами
Sklearn также предоставляет возможность изменить нормализованные значения. По умолчанию функция нормализует значения в диапазоне от нуля до единицы. Однако есть параметр (называется feature_range ), с помощью которого можно устанавливать границы нормализованных значений в соответствии с нашими требованиями.

Первые три шага идентичны тому, что мы делали в прошлых примерах.
Дальше, в ячейке номер [107], мы вызываем MinMaxScalar из preprocessing и создаем объект min_max_Scalar . Но в этот раз внутри MinMaxScaler мы передаем дополнительный параметр — feature_range. Значение параметра мы устанавливаем от 0 до 2. Таким образом, теперь MinMaxScaler нормализует значения данных от нуля до двух.
В ячейке [108] мы сначала читаем все имена столбцов, а затем вызываем fit_tranform() из созданного ранее объекта min_max_Scalar и передаем туда CSV-файл в качестве параметра.
И последним действием, в ячейке номер [109], мы получаем нормализованные результаты, которые находятся между 0 и 2.
Метод 6. Использование максимального абсолютного масштабирования
Также можно нормализовать данные с помощью библиотеки pandas. Этот способ тоже весьма популярен. Максимальное абсолютное масштабирование нормализует значения в диапазоне от нуля до единицы. В нашем примере мы применяем .max() и .abs() :

Сначала мы импортируем нужную нам библиотеку pandas.
Затем (в ячейке номер [111]) мы создаем фрейм фиктивных данных и выводим его на экран.
В ячейке [113] мы вызываем каждый столбец, а затем разделяем значения столбца с помощью .max() и .abs() .
В ячейке номер [114] мы выводим получившийся результат, который подтверждает, что наши данные действительно нормализованы между 0 и 1.
Метод 7. Использование метода z-оценки
Следующий метод, который мы хотим обсудить, — это метод z-оценки. Он преобразует информацию в распределение. Метод z-оценки вычисляет среднее значение каждого столбца, затем вычитает его из каждого столбца и, наконец, делит на стандартное отклонение. Таким образом мы получаем данные, нормализованные между -1 и 1.

В ячейке номер [115] мы создаем фрейм фиктивных данных и выводим его.
Далее, в ячейке [117], мы вычисляем среднее значение столбцов и вычитаем его из каждого столбца. Затем делим значение столбца на стандартное отклонение.
В итоге, в ячейке номер [118] мы получаем и выводим на экран данные, нормализованные в диапазоне от -1 до 1.
Заключение
Сегодня мы обсудили, что такое нормализация данных в Python, и разобрали разные виды методов нормализации. Среди них sklearn, который очень известен благодаря широкому использованию в машинном обучении.
Однако не стоит забывать, что всё зависит от требований пользователя. Иногда для нормализации данных достаточно функции pandas.
Нельзя сказать, что существуют только данные методы нормализации. Нет, различных методов нормализации довольно много, причем они зависят от типа данных. В этой статье мы сфокусировались на числовых данных.
Нормирование (стандартизация) и унификация данных
Нормированные (стандартизованные) данные. В ряде задач бывает удобно или даже необходимо перейти от исходных наблюдений
, где i = 1, 2. п, к нормированным (стандартизованным)
, которые введем далее. Пусть имеются данные
, на основании которых получены

Нормированными (стандартизованными) называют данные вида

– безразмерные величины, удовлетворяющие условию 
Покажем, что средняя арифметическая нормированных данных равна нулю:

а дисперсия равна единице:

При этом если нормированная величина больше нуля (.г* > 0), то наблюдаемое значение больше среднего (х; > х). Если же х’ < 0, то х, < х.
Стандартизация (нормирование) данных является необходимым начальным этапом преобразования данных при использовании многих многомерных статистических методов – снижения размерности признакового пространства (факторный, компонентный анализ, см. гл. 5), классификации объектов (кластерный анализ, см. гл. 6) и др., особенно если переменные измерены в шкалах, существенно различающихся в величинах (микроны единиц – миллиарды единиц).
Вследствие распространенности и востребованности в статистических пакетах процедура нормирования (стандартизации) обычно вынесена в меню (рис. 1.31).

Рис. 1.31. Вызов процедуры нормирования (стандартизации) данных в меню пакета STA TISTICA (StatSoft)
Унификация данных (унифицированная шкала). При построении интегральных обобщающих показателей часто возникает ситуация, когда нормирование данных не дает нужного результата. Например, нам необходимо построить интегральный показатель качества жизни в стране (регионе) [1] , включающий в себя три исходные переменные – продолжительность жизни, младенческую смертность и уровень безработицы. При этом, даже переведя эти три показателя в единую шкалу (например, со значениями от 0 до 1 или от 0 до N), мы будем иметь конфликт в интерпретации переменных следующего плана.
Первая переменная – продолжительность жизни – характеризуется тем, что чем большие значения она принимает, тем выше качество жизни в стране (регионе). Напротив, вторая переменная – младенческая смертность – при повышении значений понижает качество жизни. Третья переменная – безработица – имеет свой некоторый оптимум (примерно 5% обеспечивает нормальное функционирование и развитие экономики [2] ). И, соединив все три признака в один интегральный показатель, мы будем иметь отсутствие адекватной интерпретации полученного показателя. Чем он выше, тем выше продожительность жизни (лучше), выше младенческая смерность (хуже), выше безработица (непонятно). Для разрешения таких проблем и существует при анализе данных способ, позволяющий это сделать, – приведение всех переменных, участвующих в построении интегрального показателя, к единой унифицированной шкале.
Унифицированная шкала – используемая при построении интегральных показателей из различных переменных шкала, принимающая значения от 0 до N имеющая единую систему интерпретации: чем выше значения переменной в унифицированной шкале, тем выше значение интегрального показателя. При N = получаем шкалу от 0 до 1.
Переменные первого типа – чем выше показатель, тем лучше (продолжительность жизни) – приводятся к унифицированной шкале следующим образом:

где Xj – значение переменной для г-го наблюдения; amin и атах – соответственно наименьшее и наибольшее наблюдаемые значения переменной.
Согласно этой формуле если xt – amin, то а’ =0, а если .г, – апт, то х] = N, т.е. чем больше значение переменной а,, тем выше (лучше) ее значение в унифицированной шкале а*.
2. Переменные второго типа – чем выше показатель, тем хуже (младенческая смертность) – приводятся к унифицированной шкале следующим образом:

Согласно этой формуле если а, = ат|1), го х = N, а если а,- = а„их, то а* = 0, т.е. чем больше значение переменной а,, тем ниже (хуже) ее значение в унифицированной шкале X/.
3. Переменные третьего типа – показатель имеет некий оптимум аопт, это значение наилучшее, чем больше отклонения от него, тем хуже (уровень безработицы) – приводятся к унифицированной шкале следующим образом:

Согласно этой формуле если xt = аопт, то х] = N. Если же а, имеет максимально возможное отклонение оташп, то а," =0. Например, если (ашах – а,шт) > > (aOMT-amin) и а, = атах, то а’ =0. Таким образом, чем больше значение переменной а, отклоняется от оптимального, тем ниже (хуже) значение а* в унифицированной шкале, а чем ближе значение а, к этому аопт, тем лучше.