Comment visualiser la véritable dimensionnalité des données?

8

J'ai un ensemble de données nominalement en 16 dimensions. J'ai environ 100 échantillons dans un cas et environ 20 000 dans un autre. Sur la base de diverses analyses exploratoires que j'ai menées à l'aide de PCA et de cartes thermiques, je suis convaincu que la véritable dimensionnalité (c'est-à-dire le nombre de dimensions nécessaires pour capturer la plupart du "signal") est d'environ 4. Je veux créer une diapositive pour cet effet pour une présentation. La «sagesse conventionnelle» à propos de ces données, que je cherche à réfuter, est que la véritable dimensionnalité est un ou deux.

Qu'est-ce qu'une bonne visualisation simple pour montrer la véritable dimensionnalité d'un ensemble de données? De préférence, il devrait être compréhensible pour les personnes qui ont des antécédents en statistique mais qui ne sont pas de "vrais" statisticiens.

dsimcha
la source
1
Définissez «vrai», s'il vous plaît.
Cardinal
@cardinal: C'est inévitablement subjectif. Je veux la quantité de dimensions qui captent "la plupart" de la variance.
dsimcha
1
C'est très bien. Je voulais juste savoir avec certitude ce que tu cherchais. Il existe des exemples intéressants dans les statistiques multivariées où, par exemple, si vous voulez trouver le meilleur nombre de termes à conserver dans le sens des moindres carrés pour l'ACP, vous devez choisir un rang plus petit que le vrai rang, c'est-à-dire le rang du réel structure sous-jacente à partir de laquelle les données ont été générées.
cardinal
Je trouverais un cas spécifique où l'utilisation de 2 dimensions mène à une mauvaise réponse, tandis que l'utilisation de 4 dimensions mène à une bonne réponse. Cela vous aidera à faire passer votre message - les gens comprennent des exemples. Ajoutez ceci à quelques-unes des choses plus générales données ci-dessous - "eblow" dans le tracé d'éboulis, etc.
probabilités
les "exemples" seraient les cas qui ont des scores élevés sur les troisième et quatrième composantes
probabilitéislogic

Réponses:

6

Une approche standard consisterait à faire de l'ACP, puis à montrer un tracé d'éboulis, que vous devriez être en mesure d'extraire de tout logiciel que vous pourriez choisir. Un peu de bricolage et vous pourriez le rendre plus interprétable pour votre public si nécessaire. Parfois, ils peuvent être convaincants, mais souvent ils sont ambigus et il y a toujours de la place pour chicaner sur la façon de les lire afin qu'un complot d'éboulis puisse (éditer: non!) Être idéal. Ça vaut le coup d'oeil cependant.

JMS
la source
3
@JMS, (+1) en particulier pour la note de prudence sur les éboulis. Je les appellerais "standard", mais aussi "une mauvaise idée" (en général). Voici un récit édifiant et aussi un moyen de choisir le rang de manière plus sûre, surtout si MSE est votre métrique. Cela fournit également un exemple, si je me souviens bien, où le vrai rang est le mauvais à choisir pour minimiser MSE.
Cardinal
@cardinal (+1) Thx pour le lien vers l'article d'Owen & Perry.
chl
J'ai apparemment réinventé des parcelles d'éboulis à un moment donné, mais je ne savais pas qu'elles s'appelaient n'importe quoi. Merci de me les avoir rappelés et de m'avoir fait savoir qu'ils sont "standard". Puisque mon objectif est de produire une visualisation agréable, simple, standard et assez bonne l'emporte sur compliquée mais plus optimale.
dsimcha
2
@dsimcha, j'ai fait une recherche rapide sur Google et il y a apparemment un package R qui implémente l'approche dans le lien que j'ai fourni. Il y a un beau papier d'il y a environ 20 ans (peut-être 30), je crois dans The American Statistician , qui démontre clairement les failles de l'inférence en utilisant des éboulis «standard». Je vais voir si je me souviens du titre et posterai un lien ou une référence. Bien que standard, mais (tout à fait) imparfait, c'est une approche attrayante, surtout en raison de contraintes de temps, je voudrais mettre en garde contre un tel état d'esprit. À votre santé.
Cardinal
1
@JMS Il y a un article de Zwick et Velicer (1986) qui plaide pour l'utilisation d'une analyse parallèle (rééchantillonnage des valeurs propres pour tester si les valeurs observées étaient plus grandes que prévu par hasard) ou de leur critère MAP sur des éboulis ou la règle racine-un. Dans leurs simulations, les deux premières méthodes surpassent largement les autres (par exemple, 92% contre 22% de précision) pour identifier le nombre réel de composants. Le package R psychimplémente les deux avec des graphiques de type éboulis (voir fa.parallel()et VSS()). Le papier est "Comparaison de cinq règles pour déterminer le nombre de composants à conserver."
verrouillé
4

Une façon de visualiser cela serait la suivante:

  1. Effectuez une PCA sur les données.
  2. Soit l'espace vectoriel couvert par les deux premiers vecteurs composants principaux, et le complément.VV
  3. Décomposez chaque vecteur de votre ensemble de données comme la somme d'un élément dans plus un terme restant (qui est dans ). Écrivez ceci comme . (cela devrait être facile en utilisant les résultats de l'ACP.)xiVVxi=vi+ci
  4. Créez un nuage de points decontre.||ci||||vi||

Si les données sont vraiment dimensions, le tracé doit ressembler à une ligne plate.2

En Matlab (esquivant toutes les chaussures lancées):

lat_d = 2;   %the latent dimension of the generating process
vis_d = 16;  %manifest dimension
n = 10000;   %number of samples
x = randn(n,lat_d) * randn(lat_d,vis_d) + 0.1 * randn(n,vis_d); %add some noise
xmu = mean(x,1);
xc = bsxfun(@minus,x,xmu);    %Matlab syntax for element recycling: ugly, weird.
[U,S,V] = svd(xc);  %this will be slow;
prev = U(:,1:2) * S(1:2,1:2);
prec = U(:,3:end) * S(3:end,3:end);
normv = sqrt(sum(prev .^2,2));
normc = sqrt(sum(prec .^2,2));
scatter(normv,normc);
axis equal;  %to illlustrate the differences in scaling, make axis 'square'

Cela génère le nuage de points suivant:

nuage de points fait par le code

Si vous passez lat_dà 4, la ligne est moins plate.

shabbychef
la source
@shabbychef, cela semble supposer que (a) la vraie structure est une variété linéaire et (b) les directions à forte variance sont les plus importantes.
Cardinal
1
@cardinal Vous pouvez confondre hypothèse et effet. La courbure dans le collecteur se manifestera sous forme de courbure dans ces diagrammes de dispersion et l'amplitude de la courbure sera révélée dans l'amplitude de la variation verticale dans les diagrammes. En effet, shabbychef considère les données comme résidant approximativement dans un voisinage tubulaire d'un espace linéaire de faible dimension. Cela n'impose aucune restriction sur la forme des données.
whuber
@shabbyshef +1 pour l'idée de décomposition, et bien sûr la mention des chaussures :)
mpiktas
@whuber, @shabbychef, j'étais probablement un peu précipité avec mon premier commentaire, d'autant plus que j'étais loin d'un ordinateur à l'époque. Je pense que j'ai également mal lu la description de Shabby et je n'ai pas pu voir les parcelles. Celles-ci constituent un bon moyen d'augmenter un tracé de paires standard.
Cardinal
1
@cardinal Voici un exemple 4D généralisant votre cylindre: i.imgur.com/9eF8N.png . Le modèle est(s,t)(cos(2πt),sin(2πt),2s/5,t2)plus une erreur normale (0, 0,05) ajoutée indépendamment aux quatre composants. L'image est une matrice de nuage de points de 300 dessins iid avecs et tiid uniforme (0,1), ordonné par variance décroissante. Les proportions de variance totale sont de 49,2%, 46,5%, 2,9%, 1,4%. Les deux rangées du bas imitent les tracés de @ shabby. Ils démontrent la nature presque 2D des données tout en révélant la petite non-linéarité que j'y mets. C'est à ça que tu pensais?
whuber
0

J'ai fait de même en utilisant PROC Varclus dans SAS. L'idée de base est de générer une solution à 4 clusters, de sélectionner la variable corrélée la plus élevée avec chaque cluster, puis de démontrer que cette solution à 4 clusters explique plus la variation que la solution à deux clusters. Pour la solution à 2 clusters, vous pouvez utiliser Varclus ou les 2 premiers composants principaux, mais j'aime Varclus car tout est expliqué par des variables et non par les composants. Il y a un varclus dans R, mais je ne sais pas s'il fait la même chose.

-Ralph Winters

Ralph Winters
la source