¿Cuál es la diferencia entre el blanqueamiento ZCA y el blanqueamiento PCA?

60

Estoy confundido sobre el blanqueamiento de ZCA y el blanqueamiento normal (que se obtiene dividiendo los componentes principales por las raíces cuadradas de los valores propios de PCA). Por lo que sé,

xZCAwhite=UxPCAwhite,
donde son vectores propios de PCA.U

¿Cuáles son los usos del blanqueamiento ZCA? ¿Cuáles son las diferencias entre el blanqueamiento normal y el blanqueamiento con ZCA?

RockTheStar
fuente
2
Según "Redes neuronales: trucos del oficio", PCA y ZCA difieren solo por una rotación.
Martin Thoma

Respuestas:

81

Deje que sus datos (centrados) se almacenen en una matriz n×d matrix X con d características (variables) en columnas y n puntos de datos en filas. Deje que la matriz de covarianza C=XX/n tenga vectores propios en columnas de E y valores propios en la diagonal de D , de modo que C=EDE .

Entonces, lo que usted llama transformación de blanqueamiento de PCA "normal" viene dada por WPCA=D1/2E , vea mi respuesta en Cómo blanquear los datos usando ¿análisis de componentes principales?

Sin embargo, esta transformación de blanqueamiento no es única. De hecho, los datos blanqueados permanecerán blanqueados después de cualquier rotación, lo que significa que cualquier con matriz ortogonal también será una transformación de blanqueamiento. En lo que se llama blanqueamiento ZCA, tomamos (vectores propios apilados de la matriz de covarianza) como esta matriz ortogonal, es decir,W=RWPCARE

WZCA=ED1/2E=C1/2.

Una propiedad definitoria de la transformación ZCA (a veces también llamada "transformación de Mahalanobis") es que da como resultado datos blanqueados que están lo más cerca posible de los datos originales (en el sentido de mínimos cuadrados). En otras palabras, si desea minimizar sujeto a se blanquea, entonces debería tomar . Aquí hay una ilustración 2D:XXA2XAA=WZCA

Blanqueamiento PCA y ZCA

La subparcela izquierda muestra los datos y sus ejes principales. Observe el sombreado oscuro en la esquina superior derecha de la distribución: marca su orientación. Las filas de se muestran en la segunda subtrama: estos son los vectores en los que se proyectan los datos. Después del blanqueamiento (abajo), la distribución se ve redonda, pero observe que también se ve rotada: la esquina oscura ahora está en el lado este, no en el lado noreste. Las filas de se muestran en la tercera subtrama (tenga en cuenta que no son ortogonales). Después del blanqueamiento (abajo) la distribución se ve redonda y está orientada de la misma manera que originalmente. Por supuesto, uno puede obtener de PCA blanqueaba los datos a ZCA blanqueado de datos girando con .WPCAWZCAE

El término "ZCA" parece haberse introducido en Bell y Sejnowski 1996en el contexto del análisis de componentes independientes, y significa "análisis de componentes de fase cero". Ver allí para más detalles. Lo más probable es que te hayas encontrado con este término en el contexto del procesamiento de imágenes. Resulta que cuando se aplica a un grupo de imágenes naturales (píxeles como entidades, cada imagen como un punto de datos), los ejes principales se parecen a los componentes de Fourier de frecuencias crecientes, vea la primera columna de su Figura 1 a continuación. Entonces son muy "globales". Por otro lado, las filas de transformación ZCA se ven muy "locales", vea la segunda columna. Esto se debe precisamente a que ZCA intenta transformar los datos lo menos posible, por lo que cada fila debería estar mejor cerca de una de las funciones básicas originales (que serían imágenes con un solo píxel activo). Y esto es posible de lograr,

PCA y ZCA en Bell y Sejnowski 1996

Actualizar

En Krizhevsky, 2009, Aprendizaje de múltiples capas de características de Tiny Images , vea también ejemplos en las respuestas de @ bayerj (+1).

Creo que estos ejemplos dan una idea de cuándo el blanqueamiento ZCA podría ser preferible al PCA. Es decir, las imágenes blanqueadas con ZCA todavía se parecen a las imágenes normales , mientras que las imágenes blanqueadas con PCA no se parecen en nada a las imágenes normales. Esto es probablemente importante para algoritmos como las redes neuronales convolucionales (como, por ejemplo, las utilizadas en el artículo de Krizhevsky), que tratan juntos los píxeles vecinos y dependen en gran medida de las propiedades locales de las imágenes naturales. Para la mayoría de los otros algoritmos de aprendizaje automático, debería ser absolutamente irrelevante si los datos se blanquean con PCA o ZCA.

ameba dice Reinstate Monica
fuente
¡Gracias! Tengo una pregunta: entonces, ¿eso significa que ZCA básicamente cambia el acceso, pero no cambia mucho la posición de los datos? (según su área de sombreado). Además, ¿eso significa que cada vez que hacemos blanqueamiento, debemos hacer blanqueamiento ZCA? ¿Cómo decidiríamos usar PCAwhitening o ZCA whitening?
RockTheStar
44
(1) No estoy exactamente seguro de lo que quiere decir, pero lo diría así: ZCA estira el conjunto de datos para hacerlo esférico, pero trata de no rotarlo (mientras que PCA sí lo hace bastante). (2) De hecho, creo que en la mayoría de los casos no importa si usa blanqueamiento PCA o ZCA. La única situación que puedo imaginar donde ZCA podría ser preferible es el preprocesamiento para redes neuronales convolucionales. Por favor, vea una actualización de mi respuesta.
ameba dice Reinstate Monica
55
El PCA es como hacer una transformación de Fourier, el ZCA es como transformar, multiplicar y transformar de nuevo, aplicando un filtro lineal (fase cero). Entonces, lo que vemos allí es la respuesta al impulso del filtro en cada píxel. Los "componentes" involucrados en la operación son los mismos, las columnas de E, que son los "componentes principales" ... Quiero decir, también puedes llamar a las filas de componentes W, pero creo que es importante entender que están involucrados los mismos "componentes principales", y cuando aplicas el ZCA estás de vuelta en el dominio original, mientras que con el PCA necesitas "reconstruir" la señal.
dividebyzero
1
@dividebyzero +1 a su último comentario, creo que esta es una perspectiva valiosa. En cualquier caso, espero que el significado de mi última figura (que se toma del documento vinculado) esté claro ahora.
ameba dice Reinstate Monica
1
@learning ¡No ve imágenes PCA blanqueadas en esa página! Muestran "imágenes de PCA con dimensiones reducidas", es decir, reconstrucciones a través de PCA, pero no las proyecciones de PCA.
ameba dice Reinstate Monica
23

Dada una descomposición propia de una matriz de covarianza donde es la matriz diagonal de valores propios , el blanqueamiento ordinario recurre a la transformación de los datos en un espacio donde la matriz de covarianza es diagonal: (con algún abuso de notación). Eso significa que podemos diagonalizar la covarianza transformando los datos de acuerdo con

X¯X¯T=LDLT
D=diag(λ1,λ2,,λn)
D1L1X¯X¯TLTD1=D1L1LDLTLTD1=I
X~=D1L1X.

Esto es blanqueamiento ordinario con PCA. Ahora, ZCA hace algo diferente: agrega un pequeño épsilon a los valores propios y transforma los datos nuevamente. Aquí hay algunas imágenes del conjunto de datos CIFAR antes y después de ZCA.

X~=L(D+ϵ)1L1X.

Antes de ZCA:

antes de ZCA

Después de ZCA conϵ=0.0001

después de ZCA 1e-4

Después de ZCA conϵ=0.1

después de ZCA con .1

Para los datos de visión, los datos de alta frecuencia generalmente residirán en el espacio abarcado por los valores propios más bajos. Por lo tanto, ZCA es una forma de fortalecerlos, lo que lleva a bordes más visibles, etc.

bayerj
fuente
1
¿No debería agregarse el épsilon antes de tomar el inverso? Creo que simplemente se agrega para estabilizar la inversión en caso de valores propios cercanos a cero. Entonces, si tiene sentido agregarlo para el blanqueamiento ZCA, entonces también tendría sentido agregarlo para el blanqueamiento PCA.
ameba dice Reinstate Monica
Sí, antes del inverso, gracias. Como esto normalmente se hace con SVD en la práctica, no sé si es necesario estabilizar la inversión.
bayerj 01 de
He agregado otra imagen para mostrar el efecto.
bayerj
2
+1, pero tengo varias dudas y preguntas adicionales. (1) Lo que quise decir sobre epsilon es que no es específico de ZCA, sino que también se puede usar para blanquear PCA. (2) No estoy seguro de entender su comentario sobre SVD: SVD o no, uno necesita invertir valores singulares, de ahí la necesidad de epsilon. (3) La transformación de blanqueamiento de PCA es , la escribió al revés, y esto hace que el cálculo en la segunda fórmula sea incorrecto ... (4) Buenas cifras, ¿dónde están? ¿de? (5) ¿Sabe en qué situaciones sería preferible el blanqueamiento ZCA al blanqueamiento PCA y por qué? D1/2L
ameba dice Reinstate Monica
(1) de acuerdo. Sin embargo, no tengo intuición sobre lo que eso significa. (2) Mi conocimiento de descomposición es incompleto aquí, pero supuse que una matriz de inversión clásica en una matriz de covarianza singular fallará, mientras que SVD en una matriz de datos que da lugar a una covarianza singular no lo hará. (3) Gracias, lo arreglará. (4) De mi código :) (5) Hipotetizo que para muchos algoritmos que dan representaciones sobrecompletas (por ejemplo, GainShape K-Means, Auto encoders, RICA) y / o hacen un trabajo similar como PCA, la independencia algebraica de las características duele, pero No tengo mucho conocimiento sobre esto.
bayerj