14

Al hacer una regresión o clasificación, ¿cuál es la forma correcta (o mejor) de preprocesar los datos?PCA primero o normalización primero?

  1. normalizar los datos -> PCA -> formación
  2. PCA -> normalizar la salida de la ACP -> formación
  3. normalizar los datos -> PCA -> normalizar la salida de la ACP -> formación

¿Cuál de las opciones anteriores es más correcta o es la forma "estandarizada" de preprocesar los datos? Por "normalizar" me refiero a estandarización, escalado lineal u otras técnicas.

Respuesta

23

Debe normalizar los datos antes de hacer PCA. Por ejemplo, considere la siguiente situación. Puedo crear un conjunto de datos X con una matriz de correlación conocida C:

>> C = [1 0.5; 0.5 1]; 
>> A = chol(rho); 
>> X = randn(100,2) * A; 

Si ahora realizo PCA, I correctamente encontramos que los componentes principales (las filas del vector pesos) están orientados en un ángulo con los ejes de coordenadas :

>> wts=pca(X) 
wts = 
    0.6659 0.7461 
    -0.7461 0.6659 

Si ahora escalar la primera película de la serie de datos en un 100, intuitivamente pensamos que los principales componentes no deben cambiar:

>> Y = X; 
>> Y(:,1) = 100 * Y(:,1); 

Sin embargo, ahora encontramos que los componentes principales están alineados con los ejes de coordenadas:

>> wts=pca(Y) 
wts = 
    1.0000 0.0056 
    -0.0056 1.0000 

Para resolver esto, hay dos opciones. En primer lugar, podría cambiar la escala de los datos:

>> Ynorm = bsxfun(@rdivide,Y,std(Y)) 

(La notación extraña bsxfun se utiliza para hacer la aritmética matricial en Matlab - todo lo que estoy haciendo está restando la media y dividiendo por la desviación estándar de cada función) .

Ahora obtenemos resultados sensibles de PCA:

>> wts = pca(Ynorm) 
wts = 
    -0.7125 -0.7016 
    0.7016 -0.7125 

Son ligeramente diferente a la PCA en los datos originales, porque ahora hemos garantizado que nuestras características tienen unidad de desviación estándar, lo cual no era el caso originalmente.

La otra opción es llevar a cabo PCA utilizando la matriz de correlación de los datos, en lugar del producto exterior:

>> wts = pca(Y,'corr') 
wts = 
    0.7071 0.7071 
    -0.7071 0.7071 

De hecho esto es completamente equivalente a la normalización de la fecha restando la media y dividiendo por la desviación estándar. Es más conveniente. En mi opinión, debe siempre hacer esto a menos que tenga una buena razón para no hacerlo (por ejemplo, si desea para detectar diferencias en la variación de cada función).

5

Necesita normalizar primero los datos siempre. De lo contrario, la PCA u otras técnicas que se utilizan para reducir las dimensiones darán resultados diferentes.

Cuestiones relacionadas