Supongamos que tenemos variables medibles, , hacemos un número de mediciones y luego deseamos realizar una descomposición de valores singulares en los resultados para encontrar los ejes de mayor varianza para los puntos en el espacio -dimensional. ( Nota: suponga que las medias de ya se han restado, por lo que para todo .)( a 1 , a 2 , … , a N ) M > NN ⟨ un i ⟩ = 0 i
Ahora suponga que una (o más) de las variables tiene una magnitud característica significativamente diferente que el resto. Por ejemplo, podría tener valores en el rango de mientras que el resto podría estar alrededor de . Esto sesgará mucho el eje de mayor varianza hacia el eje de . 10 - 100 0.1 - 1 a 1
La diferencia en las magnitudes podría deberse simplemente a una desafortunada elección de la unidad de medida (si hablamos de datos físicos, por ejemplo, kilómetros frente a metros), pero en realidad las diferentes variables pueden tener dimensiones totalmente diferentes (por ejemplo, peso frente a volumen), por lo que Es posible que no haya una forma obvia de elegir unidades "comparables" para ellos.
Pregunta: Me gustaría saber si existen formas estándar / comunes de normalizar los datos para evitar este problema. Estoy más interesado en técnicas estándar que producen magnitudes comparables para para este propósito en lugar de crear algo nuevo.
EDITAR: Una posibilidad es normalizar cada variable por su desviación estándar o algo similar. Sin embargo, aparece el siguiente problema: interpretemos los datos como una nube de puntos en el espacio -dimensional. Esta nube de puntos se puede girar, y este tipo de normalización dará resultados finales diferentes (después de la SVD) dependiendo de la rotación. (Por ejemplo, en el caso más extremo, imagine rotar los datos con precisión para alinear los ejes principales con los ejes principales).
Espero que no haya una forma invariable de rotación para hacer esto, pero agradecería si alguien pudiera señalarme alguna discusión sobre este tema en la literatura, especialmente con respecto a las advertencias en la interpretación de los resultados.
Respuestas:
Las tres normalizaciones comunes son centrar, escalar y estandarizar.
Deje ser una variable aleatoria.X
El centrado es
La resultante tendrá .¯ x ∗ = 0x∗ x∗¯=0
La escala es
La resultante tendrá .x∗ ∑ix∗i2=1
Estandarizar es centrar y luego escalar. La resultante tendrá y .x∗ x∗¯=0 ∑ix∗i2=1
fuente
Tiene toda la razón en que tener variables individuales con variaciones muy diferentes puede ser problemático para PCA, especialmente si esta diferencia se debe a diferentes unidades o diferentes dimensiones físicas. Por esa razón, a menos que todas las variables sean comparables (misma cantidad física, mismas unidades), se recomienda realizar PCA en la matriz de correlación en lugar de la matriz de covarianza. Mira aquí:
Hacer PCA en la matriz de correlación es equivalente a estandarizar todas las variables antes del análisis (y luego hacer PCA en la matriz de covarianza). Estandarizar significa centrar y luego dividir cada variable por su desviación estándar, de modo que todas se conviertan en unidades de varianza. Esto puede verse como un "cambio de unidades" conveniente, para hacer que todas las unidades sean comparables.
Uno puede preguntar si a veces puede haber una mejor manera de "normalizar" las variables; por ejemplo, uno puede elegir dividir por una estimación robusta de la varianza, en lugar de por la varianza en bruto. Esto se preguntó en el siguiente hilo, y vea la discusión subsiguiente (aunque no se dio una respuesta definitiva allí):
Finalmente, le preocupaba que la normalización por desviación estándar (o algo similar) no sea invariante de rotación. Pues sí, no lo es. Pero, como comentó @whuber en el comentario anterior, no existe una forma de rotación invariable: ¡cambiar las unidades de variables individuales no es una operación de rotación invariante ! No hay nada de qué preocuparse aquí.
fuente
Una técnica común antes de aplicar PCA es restar la media de las muestras. Si no lo hace, el primer vector propio será la media. No estoy seguro de si lo has hecho, pero déjame hablar sobre eso. Si hablamos en código MATLAB: esto es
Como se puede ver en la figura, creo que debería restar la media de los datos si desea analizar mejor la (co) varianza. Entonces los valores no estarán entre 10-100 y 0.1-1, pero su media será cero. Las variaciones se encontrarán como los valores propios (o al cuadrado de los valores singulares). Los vectores propios encontrados no se ven afectados por la escala de una dimensión para el caso cuando restamos la media tanto como el caso cuando no lo hacemos. Por ejemplo, he probado y observado lo siguiente que dice que restar la media podría ser importante para su caso. Por lo tanto, el problema puede resultar no de la varianza sino de la diferencia de traducción.
fuente
Para normalizar los datos para PCA, también se usa la siguiente fórmula
fuente