Technique de réduction de dimensionnalité pour maximiser la séparation des grappes connues?

8

Disons donc que j'ai un tas de points de données dans R ^ n, où n est assez grand (comme, 50). Je sais que ces données se répartissent en 3 clusters, et je sais à quel cluster chaque point de données appartient. Tout ce que je veux faire est de visualiser ces clusters en 2D de manière à maximiser la séparation visuelle entre les clusters que je vois, dans le but de prouver que les clusters sont facilement séparables en fonction de l'emplacement du point de données dans R ^ n seul.

Jusqu'à présent, la façon dont j'y ai procédé consiste à effectuer une transformation PCA sur les points de données, puis à visualiser des paires de PC au hasard jusqu'à ce que j'en trouve une où les clusters semblent être assez nettement séparés. Cette approche semble cependant assez ad hoc, et il semble qu'il devrait y avoir un moyen facile de trouver une rotation de type PCA des données qui, au lieu de maximiser la variance globale, maximise la séparation entre les grappes.

Existe-t-il une technique standard qui permet cela? Sinon, des idées sur la façon de créer une telle transformation?

dmonner
la source
Vous pourriez être intéressé par Projection Pursuit . (Disponible dans le logiciel GGobi .)
chl

Réponses:

6

"une rotation de type PCA des données qui, au lieu de maximiser la variance globale, maximise la séparation inter-cluster". L'analyse discriminante est exactement une telle technique. Un composant principal maximise la variance le long de celui-ci. Une fonction discriminante maximise le rapport entre la variance de cluster / la variance regroupée dans le cluster le long de celle-ci.

ttnphns
la source
L'analyse discriminante n'est pas canoniquement présentée comme quelque chose qui produit une intégration 2D des données. Quelle intégration 2d proposez-vous d'extraire, par exemple, de la LDA de Fisher?
eric_kernfeld
@eric_kernfeld, on trace facilement les données dans l'espace des fonctions discriminantes. De plus, il est facile d'afficher les fonctions sous forme d'axes supplémentaires dans l'espace des variables d'origine, comme illustré ici et ici .
ttnphns
8

Il y a deux méthodes qui me viennent à l'esprit et qui pourraient vous intéresser. La première utilise des grappes connues et est appelée «analyse des composants du quartier» par Goldberger et al .

L'idée est que vous appreniez une cartographie (par exemple affine) de l'espace de dimension supérieure à un espace visualisable. (par exempleA:RnR2). Cette cartographie est estimée en maximisant le nombre moyen de classification correcte si une variation de la classification k-plus proche voisin est utilisée. Des résultats impressionnants ont été obtenus:

NCA sur le jeu de données wine, faces and digits

L'autre est tSNE , qui apprend une cartographie (par exempleA:RnR2). Cette cartographie n'a pas de contraintes, mais la perte est optimisée (pas par rapport à certains paramétrisations, mais avec de nouveaux points dansR2lui-même) est que le nouvel espace reflète des distances similaires à l'espace d'origine. Similaire est plutôt compliqué ici, il est basé sur l'hypothèse de certaines distributions des points dans l'espace et de la divergence KL correspondante.

Pour ce dernier, il y a du code matlab que vous pouvez trouver sur le lien donné. Voici une visualisation de l'ensemble de données MNIST:

tSNE sur MNIST

bayerj
la source
3

Vous voudrez peut-être regarder ce document:

G. Sanguinetti, Réduction de la dimensionnalité des ensembles de données en cluster, IEEE Trans. Analyse de motifs et intelligence artificielle (PAMI) 30 (3), 535-540 (2008) (www)

Qui décrit une version non supervisée de l'analyse discriminante linéaire, j'en ai vu quelques démonstrations et cela ressemble à un outil très utile à avoir dans sa boîte à outils.

Si vous savez déjà à quelles classes chaque échantillon appartient, alors (comme le suggère ttnphns) vous voulez une analyse discriminante linéaire, le livre d'Andrew Webb sur la reconnaissance statistique des modèles est un bon livre de référence pour ce genre de chose.

Dikran Marsupial
la source
0

L'article «Une approche unifiée de l'APC, du PLS, du MLR et du CCA» (par M Borga et al) fournit une description compacte de divers types de méthodes de projection linéaire, y compris le PCA et le LDA.

james li
la source
0

Les moindres carrés partiels feront ce que vous voulez. La bibliothèque "pls" dans R est ce que j'ai traditionnellement utilisé. Voici un exemple qui crée 3 groupes de 50 points, les assemble dans un bloc de données avec des étiquettes de groupe et exécute PLS sur eux:

library(MASS)
library(pls)

pts1 = mvrnorm(50,c(3,0,3),diag(c(1,1,1)))
pts2 = mvrnorm(50,c(-3,0,3),diag(c(1,1,1)))
pts3 = mvrnorm(50,c(3,3,-3),diag(c(1,1,1)))
pts = as.data.frame(rbind(pts1,pts2,pts3))

pts$labels = c(rep(1,50),rep(2,50),rep(3,50))

plsresult = plsr(labels~.,ncomp=2,data=pts)
plot(plsresult$scores,col=pts$labels)
Jared Schuetter
la source
Pourquoi ne pas utiliser l'analyse discriminante PLS dans ce cas?
chl