Supposons que mat_pages [] contient des pages dans les colonnes (que vous souhaitez regrouper) et des individus dans les lignes. Vous pouvez regrouper des pages en fonction de données individuelles dans Rby à l'aide de la commande suivante:
pc <- prcomp(x=mat_pages,center=TRUE,scale=TRUE)
La matrice des chargements est la matrice des vecteurs propres de la décomposition SVD des données. Ils donnent le poids relatif de chaque PAGE dans le calcul des scores. Les charges avec des valeurs absolues plus grandes ont plus d'influence dans la détermination du score de la composante principale correspondante.
Cependant, je dois également souligner la courte venue de l'utilisation de PCA pour regrouper les pages. La raison en est que les chargements donnent des poids plus importants aux PAGES avec une variation plus élevée, indépendamment du fait que cette variation soit en fait à cause du contenu de la PAGE ou d'une autre raison (peut être une variation technique ou individuelle). Les chargements ne reflètent pas nécessairement les vraies différences entre les groupes, ce qui (peut-être) votre principal intérêt. MAIS, ce regroupement reflète vraiment les différences dans le groupe sous l'hypothèse que toutes les pages ont la même variance (je ne sais pas si c'est une hypothèse valide).
Si vous disposez d'une puissante infrastructure informatique (ce qui peut être possible compte tenu de la taille de vos données), l'utilisation de modèles hiérarchiques peut être une bonne idée. Dans R, cela peut être fait en utilisant le package lme4.
Que faire après avoir obtenu les scores?
Il s'agit d'une suggestion grossière et l'analyse dépend grandement de l'apparence des données. En outre, je suppose que ce processus serait hautement irréalisable pour regrouper les données de magnitude dont vous disposez.
pc.col <- paste("page", 1:27000, sep=".")
pdf("principle-components.pdf")
plot(pc$x[,1:2]) ## Just look at the 1st two loadings (as you can see the groupings in a plane)
dev.off()
J'espère que cela peut vous donner une image de la façon dont les données sont regroupées.
Attention: ce n'est pas ce que je recommanderais.
Ma recommandation:
Des problèmes comme ceux-ci surviennent fréquemment en génomique. Dans votre cas, les pages correspondent aux gènes et les individus aux patients (fondamentalement, les individus ont la même signification qu'en génomique)
Vous souhaitez regrouper les pages en fonction des données.
Vous pouvez utiliser un grand nombre de packages de clustering dans R et ont été indiqués dans d'autres réponses. Un problème fondamental avec les packages est comme hclust est de savoir comment déterminer le nombre de clusters. Certains de mes préférés sont:
- pvclust (vous donne des clusters et donne également une valeur p pour chaque cluster. En utilisant la valeur p, vous pouvez déterminer les clusters statistiquement significatifs. Problème : nécessite beaucoup de puissance de calcul et je ne suis pas sûr si cela fonctionnera avec les données de votre Taille)
- hopach (vous donne le nombre estimé de clusters et les clusters)
- il existe d'autres packages disponibles dans Bioconductor, veuillez les consulter dans la vue des tâches.
Vous pouvez également utiliser des algos de clustering comme k-means etc. Je suis sûr d'avoir vu un fil dans ce forum sur le clustering. Les réponses étaient très détaillées. Tal Galili m'a demandé si je me souviens bien.
C'est certainement un problème de clustering. Consultez le
cluster
package Rs pour obtenir un aperçu des options d'algorithme (pam
et ceagnes
sont les meilleures options pour commencer; elles représentent deux flux principaux dans le clustering - centroïdes et hiérarchiques ).Le principal problème pour utiliser le clustering sur vos données est de définir une bonne mesure de similitude entre les pages; la plus simple consiste à utiliser la distance de Manhattan; un peu plus complexe pour compter le nombre de téléspectateurs communs et le normaliser avec, disons, la moyenne du nombre de téléspectateurs de la première et de la deuxième page - cela devrait réduire les effets de popularité.
EDIT: Ok, maintenant j'ai vu la taille des données ... cela fera probablement exploser R, car il a besoin d'un triangle de matrice pour stocker les distances. Consultez ce rapport pour des solutions possibles.( nombre de pages ) × ( nombre de pages )
la source
La réduction de dimensionnalité consiste essentiellement à appliquer un algorithme de clustering aux attributs (colonnes). En raison de la assez grande dimensionnalité de votre ensemble de données, vous pouvez essayer d'utiliser SOM (carte auto-organisée / filet Kohonen) pour créer une carte pour des individus ou des pages. Vous pouvez alors voir si les motifs sont significatifs (interprétables).
la source
Si vous faites de l'ACP, mon conseil serait de sélectionner brièvement d'autres composants que les deux premiers. Une fois que vous avez l'
prcomp
objetpc
(voir l'article de suncoolsu), vous pouvezplot(pc)
voir la quantité de variance attribuée aux différents composants principaux. Vous pouvez également visualiser facilement plusieurs ( en général trois ou quatre) d'entre eux avecpairs(pc$x[,1:3])
ou, en utilisantlattice
,splom(pc$x[,1:3])
.la source