Масштабирование - это процесс предварительной обработки данных.

Предварительная обработка данных включает в себя преобразование и масштабирование данных в большую или меньшую сторону, прежде чем они будут использованы для дальнейших шагов. Очень часто атрибуты не выражаются одними и теми же стандартами, шкалами или мерами до такой степени, что их статистика дает искаженные результаты моделирования данных. Например, алгоритм кластеризации K-средних не является масштабно-инвариантным; он вычисляет расстояние между двумя точками по евклидову расстоянию. Освежить память о концепции евклидова расстояния - это неотрицательная разница значений между двумя точками в одномерном пространстве. Таким образом, если один из атрибутов имеет широкий диапазон значений, вычисленное расстояние будет искажено этим атрибутом (то есть атрибут с меньшим значением будет вносить очень небольшой вклад). Например, если один из атрибутов измеряется в сантиметрах, а затем принято решение преобразовать его в миллиметры (т.е. умножить значения на 10), это может существенно повлиять на итоговое евклидово расстояние. Чтобы атрибут прибавлял приблизительно пропорционально к окончательному вычисленному расстоянию, диапазон этого атрибута должен быть нормализован.

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

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

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

Некоторые методы статистического обучения (например, линейная регрессия), при которых масштабирование атрибутов не имеет никакого эффекта, могут выиграть от другого метода предварительной обработки, такого как кодирование атрибутов с номинальными значениями для некоторых фиксированных числовых значений. Например, чтобы произвольно присвоить атрибуту пола значение «1» для женщин и «0» для мужчин. Мотивация для этого состоит в том, чтобы разрешить включение атрибута в регрессионную модель. Обязательно где-нибудь задокументируйте значение кодов.

Выбор наилучшего метода предварительной обработки - Z-Score или Min-Max?

Короткий ответ - и то, и другое, и зависит от приложения. Каждый метод имеет свое практическое применение. Z-оценка наблюдения определяется как количество стандартных отклонений, на которые оно падает выше или ниже среднего, другими словами, вычисляется дисперсия (т. Е. Расстояние). Как упоминалось ранее, метод моделирования данных кластеризации требует нормализации в том смысле, что он требует вычисления евклидова расстояния. Z-оценка хорошо подходит и важна для сравнения сходства между атрибутами на основе определенной меры расстояния. То же самое относится к регрессии основных компонентов (PCR); в нем нас интересуют компоненты, которые увеличивают дисперсию. С другой стороны, у нас есть метод min-max, преобразующий атрибуты данных в фиксированный диапазон; обычно от 0 до 1. Метод min-max принимает функциональную форму y = (x-min (x)) / (max (x) -min (x)) , где x - вектор. Примеры использования находятся в обработке изображений и алгоритмах нейронных сетей (NNA), потому что большие целочисленные входы, такие как [0,255] в NNA, могут нарушить или замедлить процесс обучения. Нормализация min-max изменяет диапазон значений интенсивности пикселей изображения [0,255] в 8-битном цветовом пространстве RGB на диапазон от 0 до 1 для упрощения вычислений.

Интуитивно понятная предварительная обработка данных

Возможно, применение методов нормализации к набору данных может пролить свет на то, что с ним происходит; мы могли визуализировать преобразование точек данных, чтобы объяснить это более интуитивно. Итак, начнем с загрузки набора данных из Базы данных машинного обучения UCI. Это набор данных вин, который включает три класса вин, обозначенных как (1,2,3) в первом столбце. Данные были получены в результате анализа, в ходе которого было определено количество 13 компонентов, содержащихся в каждом из трех типов вин.

df <- read.csv(“wine.data”, header=F)
wine <- df[1:3]
colnames(wine) <- c(‘type’,’alcohol’,’malic acid’)
wine$type <- as.factor(wine$type)

Данные вина были прочитаны как файл CSV без заголовка с использованием read.csv. Соответствующие имена заголовков были даны с помощью функции colnames (). Типы вин также были преобразованы в коэффициент с помощью as.factor (). Эти шаги не являются обязательными для нормализации, но являются хорошей общей практикой.

Мы выбрали три атрибута, включая классы вин, и две составляющие, обозначенные как алкоголь и яблочную кислоту, которые измеряются в разных шкалах. Первый компонент измеряется в процентах / объеме, а второй - в г / л. Если бы мы использовали два атрибута в алгоритме кластеризации, нам было бы ясно, что необходим метод нормализации (масштабирования). Сначала мы применим нормализацию Z-оценки, а затем метод min-max к набору данных Wine.

var(wine[,-1])

std.wine <- as.data.frame(scale(wine[,-1])) #normalize using the Z-score method
var(std.wine) #display the variance after the Z-score application

mean(std.wine[,1]) #display the mean of the first attribute

mean(std.wine[,2]) #display the mean of the second attribute

Мы могли видеть, что алкоголь и яблочная кислота стандартизированы с отклонением от 1 до 0.

Обратите внимание, что средние числа были возведены в степень -16, -17 (e-16, e-17) соответственно, что означает число, близкое к нулю.

Затем мы создаем функцию min-max, которая преобразует точки данных в диапазон значений от 0 до 1.

min_max_wine <- as.data.frame(sapply(wine[,-1], function(x) { return((x- min(x,na.rm = F)) / (max(x,na.rm = F)-min(x,na.rm = F)))}))

Построение всех трех различных шкал точек данных вина, как показано ниже:

plot(std.wine$alcohol,std.wine$`malic acid`,col = “dark red”,xlim=c(-5,20), ylim = c(-2,7),xlab=’Alcohol’,ylab=’Malic Acid’, grid(lwd=1, nx=10, ny=10))
par(new=T)
plot(min_max_wine$alcohol,min_max_wine$`malic acid`,col=”dark blue”,xlim=c(-5,20),ylim=c(-2,7),xlab=’’, ylab=’’,axes = F)
par(new=T)
plot(wine$alcohol,wine$`malic acid`,col=”dark green”, xlim=c(-5,20),ylim = c(-2,7),xlab=’’, ylab=’’,axes = F)
legend(-6,7.5, c(“std.wine”,”min_max_wine “,”input scale”), cex=0.75, bty=”n”, fill = c(“dark red”,”dark blue”,”dark green”))

Как видите, есть три набора точек данных; в зеленом наборе измерение находится в исходных объемных процентах, в то время как стандартизованные атрибуты показаны красным, где данные сосредоточены вокруг среднего нуля и дисперсии, равной единице, а нормализованные атрибуты min-max находятся в диапазоне от 0 до 1.

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