Müssen wir einen Trainingssatz und einen Testsatz für das Clustering festlegen?

10

Wenn wir Klassifizierungen und Regressionen durchführen, legen wir normalerweise Test- und Trainingssätze fest, um Modelle zu erstellen und zu verbessern.

Müssen wir beim Clustering jedoch auch Test- und Trainingssätze festlegen? Warum?

rz.He
quelle
Ja - aus ähnlichen Gründen wie Klassifizierung / Regression. Sie möchten sicherstellen, dass das von Ihnen erstellte Modell (z. B. Ihr Ellbogenplot zeigt an, dass k = 3 in einem k-Mittelwert-Clustering ist) auch für unsichtbare Daten geeignet ist.
Ilanman
Vielen Dank ilanman;) Haben Sie auch Empfehlungen, wie Sie die tatsächliche Anzahl von Clustern bestimmen können, wenn wir Clustering wie kmeans durchführen?
rz.He

Antworten:

6

Ja, da Clustering auch unter Überanpassungsproblemen leiden kann. Beispielsweise erhöht eine zunehmende Anzahl von Clustern immer die Leistung.

Hier ist eine Demo mit K-Means-Clustering:

Die Zielfunktion von K-means ist (Notationsdetails finden Sie hier )

J.=ich=1kj=1nxich(j)- -cj2

Mit einem solchen Ziel bedeutet das niedrigere "besseres" Modell.J.

Angenommen, wir haben folgende Daten (Irisdaten). Wenn Sie die Anzahl der Cluster als auswählen, ist dies immer "besser" als wenn Sie die Anzahl der Cluster als auswählen . Dann ist die Auswahl von Clustern besser als die Auswahl von Clustern. Wir können diesen Weg fortsetzen und am Ende Kosten haben: Stellen Sie einfach die Nummer des Clusters gleich der Anzahl der Datenpunkte und platzieren Sie das gesamte Clusterzentrum auf den entsprechenden Punkten.4354J.=0

d=iris[,c(3,4)]

res4=kmeans(d, 4,nstart=20)
res3=kmeans(d, 3,nstart=20)


par(mfrow=c(1,2))
plot(d,col=factor(res4$cluster),
		 main=paste("4 clusters J=",round(res4$tot.withinss,4)))
plot(d,col=factor(res3$cluster),
		 main=paste("3 clusters J=",round(res3$tot.withinss,4)))

Geben Sie hier die Bildbeschreibung ein

Wenn wir Daten zum Testen zurückhalten, wird eine Überanpassung verhindert. Nehmen wir im selben Beispiel an, wir wählen Cluster mit großer Anzahl aus und platzieren jedes Clusterzentrum in den Trainingsdatenpunkten. Der Testfehler ist groß, da sich die Testdatenpunkte nicht mit den Trainingsdaten überschneiden.

Haitao Du
quelle
Hallo hxd1011, danke für deine schnelle Antwort. Eine andere Frage: Haben Sie Empfehlungen, wie Sie die tatsächliche Anzahl von Clustern bestimmen können, wenn wir Clustering wie kmeans durchführen?
rz.He
@ rz.He ja, überprüfen Sie diese Antwort stats.stackexchange.com/questions/261537/…
Haitao Du
2
+1, weil es eine konstruktive Antwort ist, aber um Devil's Advocate zu spielen, wissen Sie, dass es sich um 3 Cluster handelt. Wenn jemand diese Daten ohne Kontext anzeigen würde, würde eine 2-Cluster-Lösung auch wunderbar funktionieren. Vielleicht haben Sie sogar einige der Punkte ganz oben rechts als Ausreißer, um auch "Ausreißer mit echten Daten" zu spielen. Es wäre viel konstruktiver (und strenger), die Kohärenz zwischen Bootstrap- / Jitter- / Subsetted-Clustering-Läufen unter Verwendung einer Statistik (z. B. kophenetische Korrelation, angepasster Rand-Index usw.) zu untersuchen.
usεr11852
Und wenn Sie keine k-Mittel verwenden? Angenommen, durchschnittliches Linkage-Clustering? Ich fürchte, Ihre Antwort passt zu k-means .
Hat aufgehört - Anony-Mousse
@ Anony-Mousse: Die Antwort bezieht sich speziell auf k-means als Beispiel, aber es wäre qualitativ dieselbe, wenn DBSCAN oder spektrales Clustering oder was auch immer es sonst verwendet würde. Es zeigt nur, dass eine bestimmte Metrik überangepasst werden kann.
usεr11852
5

Nein, dies ist normalerweise nicht möglich.

Es gibt sehr wenige Clusterungen , dass Sie könnte wie ein Klassifikator verwenden. Nur mit k-means, PAM usw. konnte man die "Generalisierung" bewerten, aber das Clustering ist seitdem viel vielfältiger (und interessanter) geworden. Tatsächlich lässt sich selbst das alte hierarchische Clustering nicht gut auf "neue" Daten verallgemeinern. Clustering ist keine Klassifizierung. Viele Methoden aus der Klassifizierung lassen sich nicht gut auf Clustering übertragen. einschließlich Hyperparameteroptimierung.

Wenn Sie Daten nur teilweise beschriftet haben, können Sie diese Beschriftungen verwenden, um Parameter zu optimieren. Das allgemeine Szenario für das Clustering besteht jedoch darin, dass Sie mehr über Ihren Datensatz erfahren möchten. Sie führen Clustering also mehrmals durch, untersuchen die interessanten Cluster (da einige Cluster normalerweise eindeutig zu klein oder zu groß sind, um interessant zu sein!) und notieren einige der Erkenntnisse, die Sie erhalten haben. Clustering ist ein Werkzeug, mit dem der Mensch einen Datensatz erkunden kann , nicht automatisch. Sie werden jedoch kein Clustering "bereitstellen". Sie sind zu unzuverlässig, und ein einziges Clustering wird niemals "die ganze Geschichte erzählen".

Hat aufgehört - Anony-Mousse
quelle
1
Clustering spiegelt eine globale Eigenschaft der Daten wider und hat üblicherweise keine "Grundwahrheit". Angesichts dessen glaube ich nicht, dass irgendjemand die Verwendung eines Clusters als Klassifikator in erster Instanz befürwortet; Wenn wir jedoch eine interessante Häufung finden, ist es dumm, nicht zu versuchen, die Ergebnisse zu nutzen, indem wir sie in einen Entscheidungsprozess einbeziehen. (Warum haben wir sonst die Daten zunächst
geclustert
Um Clustering ausführen zu können, benötigen wir noch ein Ziel zur Optimierung. Wenn es sich um ein Optimierungsproblem handelt, kann es zu einer Überanpassung an ein Datenelement führen. Zusätzlich zu kmeans benötigen viele andere Methoden noch eine Anzahl von Clustern.
Haitao Du
1
Nicht jeder Clustering-Algorithmus ist ein Optimierungsproblem.
Hat aufgehört - Anony-Mousse
1
Und was die Verwendung des Ergebnisses betrifft: Sie möchten die Erkenntnisse verwenden, nicht das Rohergebnis. Interpretieren Sie den Cluster und arbeiten Sie mit der Interpretation , da es viele schlecht zugewiesene Punkte gibt.
Hat aufgehört - Anony-Mousse
Ich unterstütze diese Antwort: Wenn ein neuer Datenpunkt kommt, lernen Sie die Darstellung und gruppieren sich dann, sodass der Test nicht erforderlich ist. Selbst wenn Sie es aufteilen, verlieren Sie die Dateninformationen.
Aaditya Ura
1

Nein. Sie verwenden Training und Tests nicht für unbeaufsichtigtes Lernen. Es gibt keine objektive Funktion beim unbeaufsichtigten Lernen, um die Leistung des Algorithmus zu testen.

S_Dhungel
quelle
3
Ohne weitere Details trägt dies nicht wirklich zur Diskussion und den beiden vorhandenen Antworten bei. Können Sie es erweitern?
Mdewey