¿Cuál es el propósito de la normalización de filas?

12

Entiendo el razonamiento detrás de la normalización de la columna, ya que hace que las características se ponderen por igual, incluso si no se miden en la misma escala; sin embargo, a menudo en la literatura vecina más cercana, las columnas y las filas se normalizan. ¿Para qué sirve la normalización de filas / por qué normalizar filas? Específicamente, ¿cómo afecta el resultado de la normalización de fila a la similitud / distancia entre vectores de fila?

curiosity_delivers
fuente
¿Puedes por favor citar la literatura que normaliza las filas? Me doy cuenta de que esta es una discusión relativamente antigua, pero recientemente me encontré con un problema similar y estoy tratando de descubrir las diferencias. Publicaré mi opinión como respuesta.
DataD'oh

Respuestas:

4

Este es un hilo relativamente antiguo, pero recientemente encontré este problema en mi trabajo y me topé con esta discusión. La pregunta ha sido respondida pero siento que no se ha abordado el peligro de normalizar las filas cuando no es la unidad de análisis (ver la respuesta de @ DJohnson arriba).

El punto principal es que la normalización de filas puede ser perjudicial para cualquier análisis posterior, como el vecino más cercano o k-means. Por simplicidad, mantendré la respuesta específica para centrar la media en las filas.

Para ilustrarlo, utilizaré datos gaussianos simulados en las esquinas de un hipercubo. Afortunadamente, Rhay una función conveniente para eso (el código está al final de la respuesta). En el caso 2D, es sencillo que los datos centrados en la fila media caigan en una línea que pasa por el origen a 135 grados. Los datos simulados se agrupan utilizando k-means con el número correcto de grupos. Los datos y los resultados de la agrupación (visualizados en 2D utilizando PCA en los datos originales) se ven así (los ejes para el gráfico de la izquierda son diferentes). Las diferentes formas de los puntos en las gráficas de agrupación se refieren a la asignación de agrupación de verdad fundamental y los colores son el resultado de la agrupación de k-medias.

ingrese la descripción de la imagen aquí

Los grupos superior izquierdo e inferior derecho se reducen a la mitad cuando los datos se centran en la fila de la media. Por lo tanto, las distancias después del centrado de la fila media se distorsionan y no son muy significativas (al menos basadas en el conocimiento de los datos).

No es tan sorprendente en 2D, ¿y si usamos más dimensiones? Esto es lo que sucede con los datos 3D. La solución de agrupamiento después de centrar la fila media es "mala".

ingrese la descripción de la imagen aquí

Y similar con los datos 4D (ahora se muestra por brevedad).

¿Por qué está pasando esto? El centrado de la media de la fila empuja los datos a un espacio donde algunas características se acercan más de lo que están. Esto debería reflejarse en la correlación entre las características. Veamos eso (primero en los datos originales y luego en los datos centrados en la media de la fila para casos 2D y 3D).

[,1] [,2] [1,] 1.000 -0.001 [2,] -0.001 1.000 [,1] [,2] [1,] 1 -1 [2,] -1 1 [,1] [,2] [,3] [1,] 1.000 -0.001 0.002 [2,] -0.001 1.000 0.003 [3,] 0.002 0.003 1.000 [,1] [,2] [,3] [1,] 1.000 -0.504 -0.501 [2,] -0.504 1.000 -0.495 [3,] -0.501 -0.495 1.000 Por lo tanto, parece que el centrado de la fila media está introduciendo correlaciones entre las características. ¿Cómo se ve afectado esto por la cantidad de características? Podemos hacer una simulación simple para resolver eso. El resultado de la simulación se muestra a continuación (nuevamente el código al final).

ingrese la descripción de la imagen aquí

Entonces, a medida que aumenta el número de características, el efecto del centrado de la fila media parece disminuir, al menos en términos de las correlaciones introducidas. Pero solo usamos datos aleatorios distribuidos uniformemente para esta simulación (como es común cuando se estudia la maldición de la dimensionalidad ).

Entonces, ¿qué sucede cuando usamos datos reales? Como muchas veces la dimensionalidad intrínseca de los datos es menor, la maldición podría no aplicarse . En tal caso, supongo que el centrado medio de fila podría ser una "mala" elección como se muestra arriba. Por supuesto, se necesita un análisis más riguroso para hacer cualquier afirmación definitiva.

Código para la simulación de agrupamiento

palette(rainbow(10))
set.seed(1024)
require(mlbench)
N <- 5000
for(D in 2:4) {
X <- mlbench.hypercube(N, d=D)
sh <- as.numeric(X$classes)
K <- length(unique(sh))
X <- X$x

Xc <- sweep(X,2,apply(X,2,mean),"-")
Xr <- sweep(X,1,apply(X,1,mean),"-")

show(round(cor(X),3))
show(round(cor(Xr),3))

par(mfrow=c(1,1))

k <- kmeans(X,K,iter.max = 1000, nstart = 10)
kc <- kmeans(Xc,K,iter.max = 1000, nstart = 10)
kr <- kmeans(Xr,K,iter.max = 1000, nstart = 10)
pc <- prcomp(X)
par(mfrow=c(1,4))

lim <- c(min(min(X),min(Xr),min(Xc)), max(max(X),max(Xr),max(Xc)))
plot(X[,1], X[,2], xlim=lim, ylim=lim, xlab="Feature 1", ylab="Feature 2",main="Data",col=1,pch=1)
points(Xc[,1], Xc[,2], col=2,pch=2)
points(Xr[,1], Xr[,2], col=3,pch=3)
legend("topleft",legend=c("Original","Center-cols","Center-rows"),col=c(1,2,3),pch=c(1,2,3))
abline(h=0,v=0,lty=3)

plot(pc$x[,1], pc$x[,2], col=rainbow(K)[k$cluster], xlab="PC 1", ylab="PC 2", main="Cluster original", pch=sh)
plot(pc$x[,1], pc$x[,2], col=rainbow(K)[kc$cluster], xlab="PC 1", ylab="PC 2", main="Cluster center-col", pch=sh)
plot(pc$x[,1], pc$x[,2], col=rainbow(K)[kr$cluster], xlab="PC 1", ylab="PC 2", main="Cluster center-row", pch=sh)
}

Código para aumentar la simulación de características

set.seed(2048)
N <- 1000
Cmax <- c()
Crmax <- c()
for(D in 2:100) {
X <- matrix(runif(N*D), nrow=N)    
C <- abs(cor(X))
diag(C) <- NA
Cmax <- c(Cmax, max(C, na.rm=TRUE))

Xr <- sweep(X,1,apply(X,1,mean),"-")
Cr <- abs(cor(Xr))
diag(Cr) <- NA
Crmax <- c(Crmax, max(Cr, na.rm=TRUE))
}
par(mfrow=c(1,1))
plot(Cmax, ylim=c(0,1), ylab="Max. cor.", xlab="#Features",col=1,pch=1)
points(Crmax, ylim=c(0,1), col=2, pch=2)
legend("topright", legend=c("Original","Center-row"),pch=1:2,col=1:2)

EDITAR

Después de buscar en Google en esta página, las simulaciones muestran un comportamiento similar y propone que la correlación introducida por el centro de la fila media sea .1/(p1)

DataD'oh
fuente
5

Hay varias formas de normalización de filas y el OP no indica cuál tiene en mente.

Una forma específica de normalización de filas (normalización de la norma euclediana) donde cada fila está normalizada (dividida por su norma euclediana) es bastante popular.

Las razones para usar esta forma de normalización de filas se resumen bien en la sección de este documento [0]:3.2

Denote una columna centrada fila -vector y pxxp

(0)r(xx)=||xx||21xx

la fila vector normalizado. Considere lo que esta transformación está haciendo geométricamente a sus datos . Geométricamente, si sus datos originales tienen variables y están centrados, aplicando la normalización de fila euclidiana, proyecta sus datos en la superficie del círculo de unidad dimensional .pp>1p

Por ejemplo, si sus datos originales están centrados (como los puntos negros en esta imagen) y le aplica la normalización de fila, obtendrá las estrellas rojas.

library(car)
p = 2
n = 1000
m = 10
C = matrix(.9, p, p)
diag(C) = 1
set.seed(123)
x = matrix(runif(n * p, -1, 1), n, p) %*% chol(C)
z = sweep(x, 1, sqrt(rowSums(x * x)), FUN = '/')
plot(rbind(x, z), pch = 16, type = 'n', ann = FALSE, xaxt = 'n', yaxt = 'n')
points(x, pch = 16)
points(z, pch = 8, col = 'red')

Los puntos verdes representan una pequeña cantidad de valores atípicos en los datos originales. Si les aplicas la transformación de normalización de fila, obtienes las estrellas azules.

x_1 = sweep(matrix(runif(m * p, -1, 1), m, p), 2, c(2, -2))
z_1 = sweep(x_1, 1, sqrt(rowSums(x_1 * x_1)), FUN = '/')
plot(rbind(x, x_1, z, z_1), pch = 16, type = 'n', ann = FALSE, xaxt = 'n', yaxt = 'n')
points(x, pch = 16)
points(x_1, pch = 16, col = 'green')
points(z, pch = 8, col = 'red')
points(z_1, pch = 8, col = 'blue')

ingrese la descripción de la imagen aquí

Ahora la ventaja de esta transformación es clara. La proyección en el círculo de la unidad amortigua el efecto de los valores atípicos lejanos. Si sus datos originales se extraen de un modelo centrado excepto por algunos valores atípicos lejanos (como los puntos verdes), cualquier valor estimado de la forma de sus datos basado en se verá afectado por los valores atípicos.F xxFx

Si basa sus estimaciones en los datos normalizados (las estrellas, rojo y azul), los valores atípicos (ahora asignados a las estrellas azules) tienen menos influencia para estropear sus estimaciones.z

Puede ver esto más claramente al comparar las matrices de formas (o elipses de contorno) ajustadas a su vez a los datos, su versión contaminada y la transformación normalizada de las filas de los mismos:

ellipse(crossprod(rbind(x, x_1)) / (n + m - 1) / det(crossprod(rbind(x, x_1)) / (n + m - 1))^(1 / p), center = rep(0, p), col = 'green', radius = 1)
ellipse(crossprod(rbind(z, z_1)) / (n + m - 1) / det(crossprod(rbind(z, z_1)) / (n + m - 1))^(1 / p), center = rep(0, p), col = 'red', radius = 1)
ellipse(crossprod(rbind(x)) / (n - 1) / det(crossprod(rbind(x)) / (n - 1))^(1 / p), center = rep(0, p), col = 'black', radius = 1)

Como puede ver, las elipses de forma ajustadas a los datos contaminados transformados (elipse roja) se estiman mejor de la matriz de formas de los datos no contaminados (elipse negra) que la obtenida de los datos contaminados (elipse verde). Esto se debe a que las estrellas verdes tienen una atracción menor en la elipse roja (construida a partir de los datos transformados ) que en la verde (construida a partir de los datos originales ).xzx

  • [0] S. Visuri, V. Koivunen, H. Oja (2000). Matrices de covarianza de signos y rangos, Journal of Statistical Planning and Inference Volume 91, Issue 2, 557–575.
usuario603
fuente
4

Existen algunos motivos específicos de campo para realizar la normalización de filas. En el análisis de texto, es bastante común representar un texto con el histograma de las palabras que contiene. A partir del recuento de palabras para cada línea, la estandarización sin procesar la convierte en un histograma.

Y la razón computacional . Si está trabajando con una matriz dispersa, no puede centrar y escalar los datos columna por columna fácilmente. Si lo incrusta en una matriz densa, los datos pueden volverse demasiado grandes para caber en la memoria. Sin embargo, el escalado fila por fila no afecta la cantidad total de memoria necesaria.

RUser4512
fuente
Por la razón computacional, ¿estás diciendo que simplemente tomamos la transposición y la fila normalizamos eso debido a la forma en que se representan las matrices dispersas? Estoy preguntando más cómo la normalización de filas afecta los resultados del vecino más cercano en la práctica.
curiosity_delivers
3

La normalización de filas tiene un nombre: escala ipsativa, que generalmente implica reescalar un conjunto de características dividiendo entre el valor máximo para el conjunto o restando la media de las características. Existen muchas motivaciones para elegir este enfoque para transformar los datos, pero la principal es que condiciona las características relativas a las características únicas del individuo (la fila o unidad de análisis).

Mike Hunter
fuente