El enfoque general para seleccionar un óptimo kernel (ya sea del tipo de kernel, o los parámetros del kernel) en cualquier basado en el kernel es el método de validación cruzada. Ver aquí para la discusión de núcleo de selección para máquinas de vectores soporte: Cómo seleccionar el kernel para SVM?
La idea detrás de la validación cruzada es que nos deje alguna "prueba" de datos, ejecutar nuestro algoritmo para ajustar el modelo en el resto de la "formación" de los datos y, a continuación, comprobar lo bien que el modelo resultante se describe los datos de la prueba (y cómo de grande es el error). Esto se repite para diferentes izquierdo de la entrada-salida de datos, los errores son promediadas para formar una cruz promedio validado en el error y, a continuación, los diferentes algoritmos pueden ser comparados con el fin de elegir uno produciendo el menor error. En SVM se puede utilizar por ejemplo, la exactitud de la clasificación (o medidas relacionadas) como medida de desempeño del modelo. Entonces uno podría seleccionar un núcleo del que se obtiene la mejor clasificación de los datos de prueba.
La pregunta entonces es: ¿qué medida de desempeño del modelo se puede utilizar en kPCA? Si usted desea conseguir un "buen separación de los datos" (es de suponer que una buena clase de separación), entonces de alguna manera se puede medir en los datos de entrenamiento y el uso que para encontrar el mejor kernel. Nota, sin embargo, que la PCA/kPCA no están diseñados para producir una buena separación de los datos (no llevan etiquetas de clase en cuenta en absoluto). Por lo general, uno podría querer a otro, de la clase-no relacionados, en la medida de rendimiento del modelo.
En el estándar de la PCA, se puede utilizar la reconstrucción de error como la medida de rendimiento en la prueba de conjunto. En el kernel PCA también podemos calcular la reconstrucción de error, pero el problema es que no es comparable entre los diferentes núcleos: error de reconstrucción es la distancia medida en la entidad de destino del espacio; y diferentes núcleos corresponden a destino diferentes espacios... Así que tenemos un problema.
Una forma de abordar este problema es de alguna manera calcular el error de reconstrucción en el espacio original, no en el espacio de destino. Obviamente la izquierda de datos de prueba de punto de vidas en el espacio original. Pero su kPCA reconstrucción de la vida en el [low-dimensional subespacio de] el objetivo del espacio. Lo que uno puede hacer, sin embargo, es encontrar un punto ("pre-imagen") en el espacio original que se asignan tan cerca como sea posible a esta reconstrucción punto, y luego medir la distancia entre el punto de prueba y esta pre-imagen como la reconstrucción de error.
No voy a dar todas las fórmulas aquí, sino que se refieren a algunos de los papeles y sólo inserte aquí varias figuras.
La idea de "imagen previa" en kPCA al parecer fue introducido en este trabajo:
- Mika, S., Schölkopf, B., Smola, A. J. Müller, K. R., Scholz, M., & Rätsch, G. (1998). Kernel PCA y De-Noising en Función de los Espacios. En NIPS (Vol. 11, pp 536-542).
Mika et al. no están haciendo la validación cruzada, pero necesitan pre-imágenes para de-noising a los efectos de, véase esta figura:
Procesada (gruesa) puntos de pre-imágenes de kPCA proyecciones (no hay ninguna prueba y entrenamiento aquí). No es una tarea trivial para encontrar estos pre-imágenes: uno necesita usar gradiente de la pendiente, y la pérdida de la función dependerá del kernel.
Y aquí es un trabajo muy reciente que utiliza pre-imágenes para la validación cruzada a los efectos de núcleo y/hyperparameter de selección:
Esta es su algoritmo:
Y aquí están algunos de los resultados (que creo que son bastante auto-explicativo):