Comment choisir un noyau pour le noyau PCA?


12

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.


1
Quand vous dites "bonne séparation des données", à quoi faites-vous allusion exactement? À quelle application du noyau PCA pensez-vous? Si cela a quelque chose à voir avec la "séparation des données", alors devriez-vous utiliser une technique de classification (comme une machine à vecteur de support du noyau) au lieu de kPCA? En dehors de tout cela, bonne question, +1. Je n'ai pas d'expérience avec le choix du noyau, donc je ne peux pas vous aider ici.
amibe dit Réintégrer Monica le

@amoeba Il doit être utilisé pour la réduction de dimensionnalité non linéaire. Mes connaissances sur les vecteurs de support sont un peu limitées car je n'ai jamais suivi de cours CS; Je suis un étudiant de premier cycle et j'ai appris grâce à des articles en ligne. Par "bonne séparation des données", j'entends ce que montrent les exemples tracés dans cet article . Je travaille avec Matlab et mon code PCA de noyau est opérationnel pour les noyaux simples, poly, radiaux et sigmoïdes, mais il serait utile de savoir quand les utiliser pour de meilleurs résultats.
Ciboulette du

Je pense que la meilleure (seule?) Façon de sélectionner un noyau est d'utiliser la validation croisée, voir ici: Comment sélectionner le noyau pour SVM? Vous avez seulement besoin d'avoir une mesure de performance pour votre kPCA afin d'utiliser la validation croisée. Séparation de classe peut être une bonne mesure si c'est ce que vous recherchez , mais notez que n'a pas été conçu PCA / KPCA du tout pour aboutir à une bonne séparation des classes; il s'agit simplement de maximiser la variance capturée.
amibe dit Réintégrer Monica

J'ai fait quelques lectures et je pourrais peut-être répondre à votre question après tout. Mais cela pourrait me prendre un certain temps (jours).
amibe dit Réintégrer Monica

@amoeba Maximiser la variance a du sens pour moi maintenant que vous le mentionnez. Je vais me pencher sur la validation croisée moi-même, mais ce serait bien si vous pouviez vous y intéresser un peu aussi si vous pouviez trouver le temps! Je vous remercie.
Ciboulette

Réponses:


7

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:

Débruitage kPCA de Mika et al.

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:

Alam et Fukumizu

Et voici quelques résultats (qui je pense sont assez explicites):

Alam et Fukumizu


1
(+1) Il peut être utile de noter que cette pré-image est l'ensemble des moyennes de Fréchet / Karcher des points attribués à un cluster donné, pas que cela aide nécessairement à quoi que ce soit.
Dougal

xxyyzz

À la réflexion, je suppose que je n'ai pas fait assez attention avant; mon commentaire s'applique au noyau k-means, pas au kPCA. La pré-image est définitivement liée à ce concept, mais pas du tout la même chose. Désolé pour le bruit. :)
Dougal
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.