40 votos

¿Cuáles son las ventajas del kernel PCA sobre el PCA estándar?

Quiero implementar un algoritmo en un documento que utiliza el núcleo SVD para descomponer una matriz de datos. Así que he estado leyendo materiales sobre métodos kernel y kernel PCA, etc. Pero todavía es muy oscuro para mí, especialmente cuando se trata de detalles matemáticos, y tengo algunas preguntas.

  1. ¿Por qué los métodos del núcleo? O, ¿cuáles son las ventajas de los métodos kernel? ¿Cuál es el propósito intuitivo?

    ¿Suponiendo que un espacio mucho más dimensional es más realista en los problemas del mundo real y capaz de revelar las relaciones no lineales en los datos, en comparación con los métodos no kernel? Según los materiales, los métodos kernel proyectan los datos en un espacio de características de alta dimensión, pero no necesitan calcular el nuevo espacio de características explícitamente. En su lugar, basta con calcular sólo los productos internos entre las imágenes de todos los pares de puntos de datos en el espacio de características. Entonces, ¿por qué proyectar en un espacio de mayor dimensión?

  2. Por el contrario, la SVD reduce el espacio de características. ¿Por qué lo hacen en diferentes direcciones? Los métodos kernel buscan una dimensión más alta, mientras que el SVD busca una dimensión más baja. A mí me parece raro combinarlos. Según el documento que estoy leyendo ( Symeonidis et al. 2010 ), la introducción de Kernel SVD en lugar de SVD puede resolver el problema de la dispersión de los datos, mejorando los resultados.

enter image description here

De la comparación en la figura podemos ver que KPCA obtiene un vector propio con mayor varianza (valor propio) que PCA, supongo. Porque para la mayor diferencia de las proyecciones de los puntos sobre el eigenvector (nuevas coordenadas), KPCA es un círculo y PCA es una línea recta, por lo que KPCA obtiene una mayor varianza que PCA. Entonces, ¿significa que KPCA obtiene componentes principales más altos que PCA?

4 votos

Más un comentario que una respuesta: El KPCA es muy similar al Clustering Espectral - en algunos casos es incluso lo mismo. (véase, por ejemplo cirano.qc.ca/pdf/publicación/2003s-19.pdf ).

0 votos

Disculpe la tardanza en la respuesta. Sí, su respuesta es muy esclarecedora.

50voto

zowens Puntos 1417

El PCA (como técnica de reducción de la dimensionalidad) trata de encontrar un subespacio lineal de baja dimensión al que se limitan los datos. Pero puede ser que los datos estén confinados en un subespacio de baja dimensión no lineal subespacio. ¿Qué pasará entonces?

Observe esta figura, tomada del libro de texto de Bishop "Pattern recognition and Machine Learning" (Figura 12.16):

kernel PCA from Bishop's ML book

Los puntos de datos aquí (a la izquierda) están situados en su mayoría a lo largo de una curva en 2D. El PCA no puede reducir la dimensionalidad de dos a una, porque los puntos no están situados a lo largo de una línea recta. Pero aún así, los datos están "obviamente" situados alrededor de una curva no lineal unidimensional. Así que, aunque el PCA falla, ¡debe haber otra manera! Y, efectivamente, el kernel PCA puede encontrar este colector no lineal y descubrir que los datos son, de hecho, casi unidimensionales.

Para ello, se mapean los datos en un espacio de mayor dimensión. Esto puede parecer una contradicción (su pregunta nº 2), pero no lo es. Los datos se mapean en un espacio de mayor dimensión, pero luego resultan estar en un subespacio de menor dimensión del mismo. Así que se aumenta la dimensionalidad para poder disminuirla.

La esencia del "truco del núcleo" es que uno no necesita realmente explícitamente considerar el espacio de mayor dimensión, por lo que este salto de dimensionalidad potencialmente confuso se realiza de forma totalmente encubierta. La idea, sin embargo, sigue siendo la misma.

7 votos

Buena respuesta. Sin embargo, una pregunta de seguimiento. Dijiste que si los puntos de datos no son lineales, como se muestra en la figura anterior, el PCA no funcionará y se requerirá el PCA de núcleo. Pero cómo sabemos en primer lugar si los puntos de datos son no lineales para el conjunto de datos que tiene más de 4 características (el caso del mundo real). Para visualizar estos datos necesitamos reducir la dimensionalidad, lo que significa que acabamos utilizando PCA para reducir la dimensionalidad, lo que sería erróneo ya que los datos podrían ser no lineales y utilizamos PCA normal para visualizarlos. Entonces, ¿cómo se puede saber si los datos son no lineales para utilizar el kernel PCA en lugar del PCA?

2 votos

Gracias, @usuario. Supongo que esto depende de la aplicación de PCA/kPCA. Por ejemplo, si se aplica como un paso de preprocesamiento para algún algoritmo de clasificación, regresión o clustering, entonces se puede juzgar el rendimiento de PCA vs. kPCA a partir del rendimiento de este algoritmo posterior.

2 votos

Gracias @amoeba. Pero supongo que lo que quería preguntar es que como mencionaste arriba necesitamos usar kPCA cuando los datos no son lineales entonces ¿cómo se sabe si los datos tienen no -linealidad si el no. de características es más de 3? No podemos visualizarlo sin llegar a las dimensiones y entonces es como el problema del huevo y la gallina

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