J'ai un grand ensemble de données et je veux effectuer une réduction de dimensionnalité.
Maintenant, partout où je lis, je peux utiliser PCA pour cela. Cependant, je ne semble toujours pas savoir quoi faire après le calcul / l'exécution de l'ACP. Dans R, cela se fait facilement avec la commande princomp
.
Mais que faire après avoir calculé l'APC? Si j'ai décidé d'utiliser les premiers composants principaux, comment réduire exactement mon jeu de données?
Réponses:
Je crois que ce que vous voulez dire dans votre question concerne la troncature des données en utilisant un plus petit nombre de composants principaux (PC). Pour de telles opérations, je pense que la fonction
prcomp
est plus illustrative en ce sens qu'il est plus facile de visualiser la multiplication matricielle utilisée en reconstruction.Tout d'abord, donnez un ensemble de données synthétiques
Xt
, vous effectuez l'ACP (en général, vous centrez les échantillons afin de décrire les PC liés à une matrice de covariance:Dans les résultats ou
prcomp
, vous pouvez voir les PC (res$x
), les valeurs propres (res$sdev
) donnant des informations sur la magnitude de chaque PC et les chargements (res$rotation
).En quadrillant les valeurs propres, vous obtenez la variance expliquée par chaque PC:
Enfin, vous pouvez créer une version tronquée de vos données en utilisant uniquement les principaux PC (importants):
Vous pouvez voir que le résultat est une matrice de données légèrement plus lisse, avec des fonctionnalités à petite échelle filtrées:
Et voici une approche très basique que vous pouvez faire en dehors de la fonction prcomp:
Maintenant, décider quels PC conserver est une question distincte - une question qui m'intéressait il y a quelque temps . J'espère que ça t'as aidé.
la source
prcomp
fait cela pour vous. Jetez un oeil àres$center
etres$scale
. À mon humble avis, il est moins sujet aux erreurs de les utiliser (pas de différence accidentelle sur le centrage ou non / mise à l'échelle ou non entre l'appel explicite àscale
et l'prcomp
appel).what to do after calculating the PCA
ouhow do I reduce my dataset exactly
? Étant donné que le PO a effectué une ACP sur son échantillon, sa question est de savoir quoi en faire et ce qui se passe réellement avec ce sous-échantillon; pas comment faire PCA. Nous pourrions aussi bien proposer de faireE <- eigen(cov(Sample)); A<- scale(scale=F, Sample) %*% E$vectors
pour obtenir une autre façon d'obtenir les scores également (ce qui est en fait ce que fait princompstats:::princomp.default
).Ces autres réponses sont très bonnes et détaillées, mais je me demande si vous posez réellement une question beaucoup plus fondamentale: que faites-vous une fois que vous avez vos PC?
Chaque PC devient simplement une nouvelle variable. Supposons que PC1 représente 60% de la variation totale et PC2 représente 30%. Comme cela représente 90% de la variation totale prise en compte, vous pouvez simplement prendre ces deux nouvelles variables (PC) comme une version simplifiée de vos variables d'origine. Cela signifie les adapter aux modèles, si c'est ce qui vous intéresse. Lorsque vient le temps d'interpréter vos résultats, vous le faites dans le contexte des variables d'origine qui sont corrélées avec chaque PC.
Désolé si j'ai sous-estimé la portée de la question!
la source
Je crois que votre question initiale découle du fait que vous ne savez pas exactement ce que fait l'APC. L'analyse en composantes principales vous permet d'identifier le principal mode de variation de votre échantillon. Ces modes sont calculés empériquement comme les vecteurs propres de la matrice de covariance de votre échantillon (les «chargements»). Par la suite, ces vecteurs servent de nouveau "système de coordonnées" de votre échantillon lorsque vous projetez votre échantillon d'origine dans l'espace qu'ils définissent (les "scores"). La proportion de variation associée au ème vecteur propre / mode de variation / chargement / composant principal est égale à où est la dimensionnalité d'origine de votre échantillon (λ ii pp=784λλiΣpk=1λk p p=784 dans ton cas). [N'oubliez pas que votre matrice de covariance n'est pas négative. Vous n'aurez pas de valeurs propres négatives .] Maintenant, par définition, les vecteurs propres sont orthogonaux entre eux. Cela signifie que leurs projections respectives sont également orthogonales et où, à l'origine, vous disposiez d'un grand échantillon de variables potentiellement corrélées, vous disposez maintenant d'un échantillon (espérons-le significativement) plus petit et linéairement indépendant (les «scores»). λ
Pratiquement avec PCA, vous utilisez les projections des PC (les «scores») comme données de substitution pour votre échantillon d'origine. Vous faites toute votre analyse sur les partitions, puis vous reconstruisez votre échantillon d'origine à l'aide des PC pour découvrir ce qui s'est passé sur votre espace d'origine (c'est essentiellement la régression du composant principal ). De toute évidence, si vous êtes capable d'interpréter de manière significative vos vecteurs propres ("chargements"), vous êtes alors dans une position encore meilleure: vous pouvez décrire ce qui arrive à votre échantillon dans le mode de variation présenté par ce chargement en faisant une inférence sur ce chargement directement et ne se soucie pas du tout de la reconstruction. :)
En général, qu'est-ce que vous "après avoir calculé l'APC" dépend de la cible de votre analyse. PCA vous donne juste un sous-échantillon linéairement indépendant de vos données qui est optimal selon un critère de reconstruction RSS. Vous pouvez l'utiliser pour la classification, la régression, ou les deux, ou comme je l'ai mentionné, vous souhaiterez peut-être reconnaître des modes de variations orthogonaux significatifs dans votre échantillon.
Un commentaire : Je pense que la meilleure façon naïve de décider du nombre de composants à retenir est de baser votre estimation sur un certain seuil de variation d'échantillon que vous souhaitez conserver dans votre échantillon de dimensionnalité réduite plutôt que sur un certain nombre arbitraire par exemple. 3, 100, 200. Comme l'explique l'utilisateur4959, vous pouvez vérifier cette variation cumulative en vérifiant le champ correspondant de la liste sous le
$loadings
champ dans l'objet de liste produit parprincomp
.la source
pls
paquet d'ailleursprincomp {stats}
). Il y a un net avantage à utiliser% de sperme. variance sur un seul nombre arbitraire: vous connaissez la qualité de votre reconstruction. Si vous voulez juste faire du dim. réduction aux dimensions ( < , étant la dimensionnalité de votre échantillon d'origine) c'est bien aussi mais vous ne connaissez pas vraiment la qualité de votre réduction de dimensionnalité. K D DAprès avoir fait l'ACP, vous pouvez sélectionner les deux premiers composants et tracer .. Vous pouvez voir la variation des composants en utilisant un tracé d'éboulis en R. En utilisant également la fonction récapitulative avec les chargements = T, vous pouvez ailerons la variation des caractéristiques avec les composants.
Vous pouvez également consulter ce http://www.statmethods.net/advstats/factor.html et http://statmath.wu.ac.at/~hornik/QFS1/principal_component-vignette.pdf
Essayez de penser à ce que vous voulez. Vous pouvez interpréter beaucoup de choses à partir de l'analyse PCA.
Meilleur Abhik
la source