35 votos

¿El blanqueamiento es siempre bueno?

Un paso común de preprocesamiento para los algoritmos de aprendizaje automático es el blanqueo de datos.

Parece que siempre es bueno hacer un blanqueo ya que descorrelaciona los datos, haciéndolos más sencillos de modelar.

¿Cuándo no se recomienda el blanqueamiento?

Nota: Me refiero a la descorrelación de los datos.

30voto

A.Schulz Puntos 264

En primer lugar, creo que descorrelacionar y blanquear son dos procedimientos distintos.

Para descorrelacionar los datos, tenemos que transformarlos para que los datos transformados tengan una matriz de covarianza diagonal. Esta transformación se puede encontrar resolviendo el problema de los valores propios problema de valores propios. Encontramos los vectores propios y los valores propios asociados de la matriz de covarianza ${\bf \Sigma} = {\bf X}{\bf X}'$ resolviendo

$${\bf \Sigma}{\bf \Phi} = {\bf \Phi} {\bf \Lambda}$$

donde ${\bf \Lambda}$ es una matriz diagonal que tiene los valores propios como elementos diagonales.

La matriz ${\bf \Phi}$ por lo que se diagonaliza la matriz de covarianza de ${\bf X}$ . Las columnas de ${\bf \Phi}$ son los vectores propios de la matriz de covarianza.

También podemos escribir la covarianza diagonalizada como

$${\bf \Phi}' {\bf \Sigma} {\bf \Phi} = {\bf \Lambda} \tag{1}$$

Así que para descorrelacionar un solo vector ${\bf x}_i$ Lo hacemos:

$${\bf x}_i^* = {\bf \Phi}' {\bf x}_i \tag{2}$$

Los elementos diagonales (valores propios) en ${\bf \Lambda}$ puede ser el mismo o diferente. Si hacemos que todos sean iguales, esto se llama blanquear los datos. Dado que cada valor propio determina la longitud de su vector propio asociado, la covarianza corresponderá a una elipse cuando los datos no estén blanqueados, y a una esfera (con todas las dimensiones de la misma longitud, o uniforme) cuando los datos estén blanqueados. El blanqueo se realiza de la siguiente manera:

$${\bf \Lambda}^{-1/2} {\bf \Lambda} {\bf \Lambda}^{-1/2} = {\bf I}$$

Equivalentemente, sustituyendo en $(1)$ escribimos:

$${\bf \Lambda}^{-1/2} {\bf \Phi}' {\bf \Sigma} {\bf \Phi} {\bf \Lambda}^{-1/2} = {\bf I}$$

Así, para aplicar esta transformación de blanqueo a ${\bf x}_i^*$ simplemente lo multiplicamos por este factor de escala, obteniendo el punto de datos blanqueado ${\bf x}_i^\dagger$ :

$${\bf x}_i^{\dagger} = {\bf \Lambda}^{-1/2} {\bf x}_i^* = {\bf \Lambda}^{-1/2}{\bf \Phi}'{\bf x}_i \tag 3$$

Ahora la covarianza de ${\bf x}_i^\dagger$ no sólo es diagonal, sino también uniforme (blanco), ya que la covarianza de ${\bf x}_i^\dagger$ , ${\bf E}({\bf x}_i^\dagger {{\bf x}_i^\dagger}') = {\bf I}$ .

Siguiendo con esto, puedo ver dos casos en los que esto podría no ser útil. El primero es bastante trivial, podría ocurrir que el escalado de los ejemplos de datos sea de alguna manera importante en el problema de inferencia que estás viendo. Por supuesto, usted podría los valores propios como un conjunto adicional de características para evitar esto. El segundo es un problema computacional: en primer lugar hay que calcular la matriz de covarianza ${\bf \Sigma}$ que puede ser demasiado grande para que quepa en la memoria (si tiene miles de características) o tarda demasiado en calcularse; en segundo lugar, la descomposición de valores propios es O(n^3) en la práctica, que de nuevo es bastante horrible con un gran número de características.

Y, por último, hay una "trampa" común con la que hay que tener cuidado. Hay que tener cuidado de que se calculan los factores de escala en los datos de entrenamiento y, a continuación, se utilizan las ecuaciones (2) y (3) para aplicar los mismos factores de escala a los datos de prueba, ya que, de lo contrario, se corre el riesgo de sobreajuste (se estaría utilizando información del conjunto de pruebas en el proceso de entrenamiento).

Fuente: http://courses.media.mit.edu/2010fall/mas622j/whiten.pdf

14voto

vignesh Puntos 6

El preblanqueo es una generalización de la normalización de características, que hace que la entrada sea independiente transformándola contra una matriz de covarianza de entrada transformada. No veo por qué esto puede ser algo malo.

Sin embargo, una búsqueda rápida reveló "La viabilidad del blanqueo de datos para mejorar el rendimiento del radar meteorológico" ( pdf ) que dice:

En particular, el blanqueo funcionó bien en el caso de la ACF exponencial (lo que concuerda con los resultados de Monakov), pero menos bien en el caso de la gaussiana. Tras la experimentación numérica, descubrimos que el caso gaussiano está mal condicionado numéricamente en el sentido de que el número de condición (relación entre el valor propio máximo y el mínimo) es extremadamente grande para la matriz de covarianza gaussiana.

No tengo la suficiente formación para comentar esto. Tal vez la respuesta a tu pregunta sea que el blanqueo siempre es bueno, pero hay ciertos inconvenientes (por ejemplo, con datos aleatorios no funcionará bien si se hace mediante la función de autocorrelación gaussiana).

3voto

DharmaTurtle Puntos 137

Desde http://cs231n.github.io/neural-networks-2/

Uno de los puntos débiles de esta transformación es que puede exagerar en gran medida el ruido de los datos, ya que estira todas las dimensiones (incluidas las dimensiones irrelevantes de varianza diminuta que son en su mayoría ruido) para que tengan el mismo tamaño en la entrada. En la práctica, esto puede mitigarse con un suavizado más fuerte...

Lamentablemente, no tengo la suficiente formación como para hacer más comentarios al respecto.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X