1 votos

¿Por qué hay discrepancia entre los valores propios de la matriz de covarianza (PCA) y los valores propios de la matriz del núcleo (kernel PCA)?

He hecho PCA en mi matriz de datos $ \mathbf{X} $ lo que me da, entre otras cosas, los valores propios $ \lambda $ y los vectores propios $ v $ de la matriz de covarianza de los datos $ C=\mathbf{X}^T \mathbf{X} $ . Ahora estoy ampliando mi análisis para aplicar también kernel PCA. Ahora, se puede demostrar que los valores propios de $ C $ debe ser igual a los valores propios de la matriz del núcleo $ \mathbf{K} $ : $$ \mathbf{K} \alpha = \lambda \alpha \\ \Leftrightarrow \mathbf{X} \mathbf{X}^T \alpha=\lambda \alpha \\ \Rightarrow \mathbf{X}^T \mathbf{X} \mathbf{X}^T \alpha=\lambda \mathbf{X}^T \alpha \\ \Leftrightarrow Cv=\lambda v $$

Con $ \alpha $ siendo el vector propio de $ \mathbf{K} $ y $ v:= \mathbf{X}^T \alpha $ siendo el vector propio de $ C $ .

Tras aplicar el kernel PCA con un lineal kernel (equivalente al PCA "estándar"), sin embargo, los valores propios son no igual. Veo, sin embargo, una relación (tal vez general) entre $ \lambda_{PCA} $ y $ \lambda_{KPCA} $ porque $ \overline{\lambda}_{PCA, i} = \overline{\lambda}_{KPCA, i} $ con $ \overline{\lambda}_i = \frac{\lambda_i}{\sum_{k=1}^n \lambda_k} $ para la $ i $ -de la $ n $ valores propios.

¿Por qué no son iguales los valores propios? Estoy usando Python con sklearn.decomposition.PCA y sklearn.decomposition.KernelPCA .

1voto

Peach Puntos 101

La matriz de covarianza $ C $ así como la matriz Gram / kernel $ \mathbf{K} $ tienen que ser escalados por $ \frac{1}{n} $ con $ n $ siendo el número de muestras en los datos, suponiendo que los datos están centrados: $$ C = \frac{1}{n} \mathbf{X}^T \mathbf{X} \\ \mathbf{K} = \frac{1}{n} \mathbf{X} \mathbf{X}^T $$ Mientras que la matriz de covarianza hace se escalan en sklearn.decomposition.PCA (en realidad, el ACP se calcula mediante la SVD y los valores propios resultan de $ \lambda_i = \frac{S_i^2}{n-1} $ con $ S $ que son los valores singulares), $ \mathbf{K} $ no se escala en sklearn.decomposition.KernelPCA . Tras escalar los valores propios de $ \mathbf{K} $ manualmente por $ \frac{1}{n - 1} $ la discrepancia desaparece por completo.

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