Nehmen wir an, mat_pages [] enthält Seiten in den Spalten (die Sie zu Clustern zusammenfassen möchten) und Einzelpersonen in den Zeilen. Mit dem folgenden Befehl können Sie Seiten basierend auf einzelnen Daten in Rby gruppieren:
pc <- prcomp(x=mat_pages,center=TRUE,scale=TRUE)
Die Ladematrix ist die Matrix der Eigenvektoren der SVD-Zerlegung der Daten. Sie geben das relative Gewicht jeder SEITE bei der Berechnung der Punktzahlen an. Belastungen mit größeren absoluten Werten haben einen größeren Einfluss auf die Bestimmung der Bewertung der entsprechenden Hauptkomponente.
Ich möchte jedoch auch auf das kurze Problem hinweisen, das mit der Verwendung von PCA zum Clustering von Seiten verbunden ist. Der Grund dafür ist, dass Ladungen den SEITEN mit höheren Abweichungen ein größeres Gewicht verleihen, unabhängig davon, ob diese Abweichung tatsächlich auf den SEITEN-Inhalt oder auf einen anderen Grund zurückzuführen ist (es kann sich um technische oder individuelle Abweichungen handeln). Die Ladungen spiegeln nicht unbedingt die wahren Unterschiede zwischen den Gruppen wider, die (vielleicht) Ihr Hauptinteresse sind. ABER diese Gruppierung spiegelt wirklich die Unterschiede in der Gruppe unter der Annahme wider, dass alle Seiten die gleiche Varianz aufweisen (ich weiß nicht, ob dies eine gültige Annahme ist).
Wenn Sie über leistungsstarke Rechenfunktionen verfügen (was aufgrund Ihrer Datengröße möglich sein kann), ist die Verwendung hierarchischer Modelle möglicherweise eine gute Idee. In R kann dies mit dem Paket lme4 erfolgen.
Was tun, nachdem Sie die Punktzahlen haben?
Dies ist ein grober Vorschlag, und die Analyse hängt stark davon ab, wie die Daten aussehen. Außerdem würde ich vermuten, dass dieser Prozess höchst unmöglich ist, um die Daten der Größenordnung, die Sie haben, zu gruppieren.
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()
Hoffentlich können Sie auf diese Weise ein Bild davon erhalten, wie die Daten gruppiert sind.
Achtung: Dies ist nicht das, was ich empfehlen würde.
Meine Empfehlung:
Probleme wie diese treten häufig in der Genomik auf. Ihre Fallseiten entsprechen Genen und Individuen entsprechen Patienten (im Grunde genommen hat Individuen dieselbe Bedeutung wie in der Genomik).
Sie möchten die Seiten basierend auf Daten gruppieren.
Sie können in R viele Clustering-Pakete verwenden, auf die in anderen Antworten verwiesen wurde. Ein grundlegendes Problem bei Paketen ist wie bei hclust, wie die Anzahl der Cluster bestimmt wird. Einige meiner Favoriten sind:
- pvclust (Gibt Ihnen Cluster und gibt auch einen p-Wert für jeden Cluster an. Mit dem p-Wert können Sie die statistisch signifikanten Cluster bestimmen. Problem : Benötigt viel Rechenleistung und ich bin nicht sicher, ob es mit Ihren Daten funktioniert Größe)
- hopach (Gibt die geschätzte Anzahl der Cluster und der Cluster an.)
- In Bioconductor sind weitere Pakete verfügbar. Überprüfen Sie diese in der Task-Ansicht.
Sie können auch Clustering-Algorithmen wie k-means usw. verwenden. Ich bin sicher, dass ich in diesem Forum einen Thread zum Thema Clustering gesehen habe. Die Antworten waren sehr detailliert. Es wurde von Tal Galili gefragt, ob ich mich richtig erinnere.
Es ist sicherlich ein Clustering-Problem. Schauen Sie sich das Rs-
cluster
Paket an, um einen Überblick über die Algorithmusoptionen zu erhalten (pam
undagnes
starten Sie am besten mit diesen Optionen; sie stellen zwei Hauptströme in Clustering dar - Centroids und Hierarchical ).Das Hauptproblem bei der Verwendung von Clustering für Ihre Daten besteht darin, ein gutes Ähnlichkeitsmaß zwischen den Seiten zu definieren. Einfach ist es, die Entfernung nach Manhattan zu nutzen. Etwas komplexer ist es, die Anzahl der gängigen Betrachter zu zählen und sie mit dem Mittelwert der Anzahl der Betrachter der ersten und zweiten Seite zu normalisieren - dies sollte die Popularitätseffekte zum Schweigen bringen.
quelle
Die Dimensionsreduzierung wendet im Wesentlichen einen Clustering-Algorithmus auf die Attribute (Spalten) an. Aufgrund der relativ großen Dimensionalität Ihres Datensatzes können Sie versuchen, mithilfe von SOM (selbstorganisierende Karte / Kohonennetz) eine Karte für Einzelpersonen oder Seiten zu erstellen. Sie können dann sehen, ob es sich um sinnvolle (interpretierbare) Muster handelt.
quelle
Wenn Sie PCA durchführen, würde ich raten, kurz andere Komponenten als nur die ersten beiden zu überprüfen. Sobald Sie das
prcomp
Objekt habenpc
(siehe Beitrag von suncoolsu), könnenplot(pc)
Sie den Betrag der Varianz anzeigen, der den verschiedenen Hauptkomponenten zugeordnet ist. Sie können auch mehrere ( in der Regel drei oder vier) von ihnen leicht visualisieren mitpairs(pc$x[,1:3])
oder verwendenlattice
,splom(pc$x[,1:3])
.quelle