Cluster Big Data in R und ist Stichproben relevant?


13

Ich bin neu in der Datenwissenschaft und habe ein Problem beim Finden von Clustern in einem Datensatz mit 200.000 Zeilen und 50 Spalten in R.

Da die Daten sowohl numerische als auch nominale Variablen enthalten, erscheinen Methoden wie K-means, die das euklidische Distanzmaß verwenden, nicht als geeignete Wahl. Ich wende mich also PAM, Agnes und Hclust zu, die eine Distanzmatrix als Eingabe akzeptieren.

Die Daisy-Methode kann mit gemischten Daten arbeiten, aber die Distanzmatrix ist einfach zu groß: 200.000 mal 200.000 ist viel größer als 2 ^ 31-1 (die Vektorlängenbegrenzung vor R 3.0.0.)

Das gestern veröffentlichte neue R 3.0.0 unterstützt lange Vektoren mit einer Länge von mehr als 2 ^ 31-1. Für eine Doppelmatrix von 200.000 mal 200.000 ist jedoch ein kontinuierlicher Arbeitsspeicher von mehr als 16 GB erforderlich, der auf meinem Computer nicht möglich ist.

Ich lese über Parallel-Computing und Big-Memory-Pakete und bin nicht sicher, ob sie helfen werden: Wenn ich Daisy verwende, wird eine große Matrix generiert, die sowieso nicht in den Speicher passt.

Ich habe auch über den Beitrag über Sampling gelesen: Ist Sampling in der Zeit von 'Big Data' relevant?

Ist es in meinem Fall relevant, Stichproben für den Datensatz zu verwenden, die Stichprobe zu einem Cluster zusammenzufassen und dann auf die Struktur des gesamten Datensatzes zu schließen?

Können Sie mir bitte einen Vorschlag machen? Vielen Dank!

Über meine Maschine:

R Version 3.0.0 (2013-04-03)

Plattform: x86_64-w64-mingw32 / x64 (64-Bit)

Betriebssystem: Windows 7 64bit

RAM: 16,0 GB


Die einzige mir bekannte Cluster-Methode für Big Data (z. B. Millionen von Fällen), die neben numerischen Variablen auch nominelle Variablen akzeptieren kann, ist der in SPSS enthaltene TwoStep-Cluster.
TTNPHNS

Antworten:


4

Wie Sie bemerkt haben, funktioniert keine Methode, die eine Matrix über die gesamte Distanz erfordert. Der Speicher ist eine Sache, aber die andere ist die Laufzeit. Die typischen Implementierungen von hierarchischem Clustering sind in (ich weiß, dass ELKI SLINK hat, ein O ( n 2 ) -Algorithmus für Single-Link-Clustering). Dies ist für große Datenmengen einfach nicht skalierbar.O(n3)O(n2)

PAM selbst sollte keine vollständige Distanzmatrix erfordern, aber der Algorithmus ist dafür bekannt, dass er schlecht skaliert, da er dann alle paarweisen Abstände in jedem Cluster bei jeder Iteration (neu) berechnen muss, um die zentralsten Elemente zu finden. Dies ist viel weniger, wenn Sie eine große Anzahl von Clustern haben, aber dennoch ziemlich teuer!

O(nlogn)

Bei den meisten dieser Algorithmen müssen Sie jedoch zuerst sicherstellen, dass Ihre Distanzfunktion wirklich gut ist. Dann müssen Sie überlegen, wie Sie Abfragen mithilfe geeigneter Indizes beschleunigen können.

Beachten Sie auch, dass Sie in vielen Fällen - und dies kann für PAM durchaus zutreffen - den Algorithmus zuerst für ein Beispiel ausführen und dann nur für den gesamten Datensatz verfeinern können. Wenn Ihre Stichprobe repräsentativ ist, sollten Algorithmen wie k-means und PAM im Wesentlichen das gleiche Ergebnis liefern wie der gesamte Datensatz.


Wird dem OP hier nicht helfen, aber für den Fall, dass jemand anderes mit "mittleren" Probennummern vorbeikommt: Es gibt auch einen Fastcluster für R (siehe math.stanford.edu/~muellner/fastcluster.html ).
cbeleites unterstützt Monica am

Hallo Anony-Mousse, könnten Sie mich bitte auf einige der Algorithmen hinweisen, die die Indexstrukturbeschleunigung verwenden? Danke vielmals!

Beispielsweise kann DBSCAN mit Indizes, die Epsilon-Bereichsabfragen unterstützen, gut beschleunigt werden. Vermutlich bedeutet das auch Shift Clustering. OPTIK, die auch auf diese Weise beschleunigt werden kann, kann als eine erweiterte Version der Verknüpfung Clustering zu sehen (Sie es „hierarchische Dichte Verknüpfung Clustering“ nennen könnte)
Hat VERL - Anony-Mousse

2

Probieren Sie die CLARA-Funktion aus dem Cluster-Paket in R aus. Sie implementiert einen pam-ähnlichen Algorithmus durch Unterabtastung Ihrer Daten. Es funktioniert besonders gut, wenn die Medioden in Ihren Daten durch eine kleine Stichprobe der Gesamtdaten dargestellt werden können (dh - der Datensatz enthält relativ weniger Cluster). Auf diese Weise können Sie mit einer kleinen Zufallsstichprobe effizient Cluster erstellen und der vorberechneten Clusterlösung Punkte hinzufügen.

http://en.wikibooks.org/wiki/Data_Mining_Algorithms_In_R/Clustering/CLARA


hi zzk, danke für die antwort. Ich habe vorher über Clara gelesen, aber es scheint, dass es nur euklidische und Manhattan-Metriken liefert. Das Hauptproblem ist, dass mein Datensatz sowohl numerische als auch nominale Variablen enthält. Daher ist es nicht angebracht, keine der beiden Metriken für die Entfernungsmessung zu verwenden.

ach ja, das ist momentan auch eine begrenzung für mich. Ich glaube, dass die Methode tatsächlich auf jeder beliebigen Distanz durchgeführt werden kann, aber ich habe mich noch nicht die Mühe gemacht, den Quellcode zu durchsuchen, um zu sehen, ob er geändert werden kann.
zzk

0

Sie können auch eine Mehrfachkorrespondenzanalyse auf Ihre qualitativen Variablen anwenden und Transformationen in eine numerische Variable durchführen.


2
Dies scheint eine gute Idee zu sein, aber es kann ein wenig spärlich sein. Können Sie dies etwas konkretisieren, um zu erklären, was es ist und warum das helfen würde?
gung - Wiedereinsetzung von Monica
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.