Quelles sont les façons de choisir quel noyau entraînerait une bonne séparation des données dans la sortie finale des données par le noyau PCA (analyse des composants principaux), et quelles sont les façons d'optimiser les paramètres du noyau?
Les termes de Layman, si possible, seraient grandement appréciés, et des liens vers des articles expliquant de telles méthodes seraient également intéressants.
Réponses:
L'approche générale pour sélectionner un noyau optimal (soit le type de noyau, soit les paramètres du noyau) dans n'importe quelle méthode basée sur le noyau est la validation croisée. Voir ici pour la discussion sur la sélection du noyau pour les machines à vecteurs de support: Comment sélectionner le noyau pour SVM?
L'idée derrière la validation croisée est que nous omettons certaines données de «test», exécutons notre algorithme pour adapter le modèle aux données de «formation» restantes, puis vérifions dans quelle mesure le modèle résultant décrit les données de test (et l'ampleur de l'erreur) est). Cette opération est répétée pour différentes données laissées de côté, les erreurs sont moyennées pour former une erreur de validation croisée moyenne, puis différents algorithmes peuvent être comparés afin d'en choisir un qui génère l'erreur la plus faible. Dans SVM, on peut utiliser, par exemple, la précision de la classification (ou des mesures connexes) comme mesure des performances du modèle. Ensuite, on sélectionnerait un noyau qui donne la meilleure classification des données de test.
La question devient alors: quelle mesure des performances du modèle peut-on utiliser dans kPCA? Si vous souhaitez obtenir une "bonne séparation des données" (vraisemblablement une bonne séparation des classes), vous pouvez en quelque sorte la mesurer sur les données d'apprentissage et l'utiliser pour trouver le meilleur noyau. Il faut toutefois noter que l' APC / KPCA ne sont pas conçus pour obtenir une bonne séparation des données (ils ne prennent pas les étiquettes de classe en compte du tout ). Donc, d'une manière générale, on voudrait une autre mesure, sans rapport avec la classe, des performances du modèle.
Dans PCA standard, on peut utiliser l' erreur de reconstruction comme mesure de performance sur l'ensemble de test. Dans le noyau PCA, on peut également calculer l'erreur de reconstruction, mais le problème est qu'elle n'est pas comparable entre différents noyaux: l'erreur de reconstruction est la distance mesurée dans l'espace caractéristique cible; et différents noyaux correspondent à différents espaces cibles ... Nous avons donc un problème.
Une façon de résoudre ce problème est de calculer en quelque sorte l'erreur de reconstruction dans l'espace d'origine, pas dans l'espace cible. De toute évidence, le point de données de test laissé de côté réside dans l'espace d'origine. Mais sa reconstruction kPCA vit dans le [sous-espace de faible dimension] de l'espace cible. Ce que l'on peut faire, cependant, est de trouver un point ("pré-image") dans l'espace d'origine qui serait cartographié le plus près possible de ce point de reconstruction, puis de mesurer la distance entre le point de test et cette pré-image comme erreur de reconstruction.
Je ne donnerai pas toutes les formules ici, mais je vous renvoie plutôt à quelques articles et n'insérez ici que plusieurs chiffres.
L'idée de «pré-image» dans kPCA a apparemment été introduite dans cet article:
Mika et al. ne font pas de validation croisée, mais ils ont besoin de pré-images à des fins de débruitage, voir cette figure:
Les points débruits (épais) sont des pré-images des projections kPCA (il n'y a pas de test et d'entraînement ici). Ce n'est pas une tâche triviale de trouver ces pré-images: il faut utiliser la descente de gradient, et la fonction de perte dépendra du noyau.
Et voici un article très récent qui utilisait des pré-images à des fins de validation croisée et de sélection noyau / hyperparamètre:
Voici leur algorithme:
Et voici quelques résultats (qui je pense sont assez explicites):
la source