Effiziente k-means-Auswertung mit silhouette score in sklearn
Ich bin mit k-means-clustering auf ~1 Mio Artikel (jeweils dargestellt als ~100-feature-Vektor). Ich habe das clustering für verschiedene k, und möchten nun eine Bewertung der unterschiedlichen Ergebnisse, die mit der silhouette Partitur umgesetzt sklearn. Versuch es mit keine Stichprobe scheint undurchführbar und nimmt eine unverhältnismäßig lange Zeit, also ich nehme an, ich muss an die Probenahme, d.h.:
metrics.silhouette_score(feature_matrix, cluster_labels, metric='euclidean',sample_size=???)
Ich nicht haben ein gutes Gespür dafür, was eine angemessene sampling-Ansatz ist jedoch. Gibt es eine Faustregel, welche Größe Probe zu verwenden, angesichts der Größe meiner matrix? Ist es besser, nehmen Sie die größte Probe, meine Analyse-Maschine verarbeiten kann, oder den Durchschnitt von mehr kleinere Proben?
Bitte ich, im großen Teil, weil meine erste Prüfung (mit sample_size=10000) hat einige wirklich sehr unintuitive Ergebnisse.
Ich bin auch offen für alternative, skalierbare Auswertung von Metriken.
Bearbeiten, zu visualisieren das Problem: Der plot zeigt für unterschiedliche Stichprobengrößen, die silhouette der Partitur als eine Funktion der Anzahl der Cluster
Was nicht komisch ist, dass die Erhöhung der Stichprobengröße scheint, um Lärm zu reduzieren. Was seltsam ist, da ich 1 Millionen, sehr heterogenen Vektoren, in denen 2 oder 3 ist der "beste" Anzahl der Cluster. In anderen Worten, was unintuitiv ist, dass ich finden würde eine mehr oder weniger monotone Abnahmen in der silhouette Partitur, wie erhöhe ich die Anzahl der Cluster.
- Definieren unintuitive Ergebnisse, und versuchen Sie es erneut ausführen, der test mehrmals mit verschiedenen sample-Größen.
- Ausführen von code zu generieren, eine Klärung der plot. Bearbeiten und posten so schnell wie möglich.
- Diese silhouette erzielt werden, ziemlich gering ist. Daten mit einer starken cluster-Struktur geben Sie der silhouette erreicht souverän über 0,7 oder so. Haben Sie versucht, mit Hilfe der Gap-Statistik die Schätzung der richtigen Anzahl von Clustern? Eine andere Möglichkeit ist, dass einige der 100 features sind das hinzufügen von Rauschen und verstecken Clustern. Sie könnten versuchen, die PCA, um loszuwerden, einige der Lärm.
- Ich habe auch ähnliches problem gestoßen. Wenn ich erhöhte die Anzahl der cluster, die silhouette score berechnet, indem
sklearn.metrics.silhouette_score
sank monoton, und ich will nicht herausfinden, warum das passiert ist - haben Sie jemals herauszufinden, was Los war mit sklearn.Metriken.silhouette_score? Ich habe das gleiche problem, der monoton abnehmenden Werten mit größeren k.
- noch nicht, aber ich lese ein Papier diskutiert die wichtigsten internen Validierung von Kennzahlen finden Sie unter Verständnis der Internen Clustering-Überprüfung-Maßnahmen und ersetzt
silhouette score
mitSDbw
, die gezeigt wurde, um die am meisten robuste index in diesem Papier - Alle Dinge gleich sind, die silhouette der Gäste wird abnehmen, wenn Sie erhöhen die Anzahl der Cluster, oder erhöhen Sie die Anzahl der Merkmale, die als Anker für das Modell. Eine andere Sache, zum im Verstand zu halten ist, genau wie die Korrelation erzielt, vom realen Leben Anwendung Sicht, was darauf hindeutet, dass 0,7 und oben sind die besten erzielt, ist nicht realistisch.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Anderen Metriken
Ellenbogen-Methode: Berechnung der % Varianz erklärt, für jedes K, und wählen Sie das K, wo die Handlung beginnt, off-Ebene. (eine gute Beschreibung ist hier https://en.wikipedia.org/wiki/Determining_the_number_of_clusters_in_a_data_set). Natürlich, wenn man k == Anzahl der Daten-Punkte, die Sie erklären können 100% der Varianz auf. Die Frage ist, wo kommen die Verbesserungen in der erklärten Varianz start einpendeln.
Information Theorie: Wenn Sie die Berechnung einer Wahrscheinlichkeit für ein bestimmtes K ist, dann können Sie die AIC, AICc oder BIC (oder andere Informationen-theoretische-Ansatz). E. g. für den AICc, nur es gleicht die Zunahme der Wahrscheinlichkeit, wie Sie erhöhen K mit der Zunahme in der Anzahl der Parameter, die Sie benötigen. In der Praxis alles, was Sie tun, ist wählen Sie die K, die minimiert die AICc.
Können Sie in der Lage, um ein Gefühl für eine ungefähr entsprechende K durch ausführen von alternativen Methoden, die Ihnen wieder eine Schätzung der Anzahl von Clustern, wie DBSCAN. Allerdings habe ich nicht gesehen, dass dieser Ansatz zur Schätzung von K, und es ist wahrscheinlich nicht ratsam, auf Sie verlassen, wie diese. Allerdings, wenn DBSCAN auch Gaben Sie einer kleinen Anzahl von Clustern hier, dann gibt es wahrscheinlich etwas über Ihre Daten, die Sie vielleicht nicht schätzen (also nicht, wie viele Cluster Sie erwarten sind).
, Wie viel zum Beispiel
Sieht es aus wie Sie haben, beantwortet diese aus Ihrem Garten: egal, was Ihre Probenahme erhalten Sie das gleiche Muster in silhouette-score. Also, das Muster scheint sehr robust zu sampling Annahmen.
kmeans zusammen, um lokale minima. Ausgangslage spielt eine entscheidende Rolle bei der optimalen Anzahl der Cluster. Es wäre eine gute Idee, oft um den Lärm zu reduzieren und die Abmessungen mit PCA oder andere Techniken der dimensionsreduktion um fortzufahren mit kmeans.
Nur der Vollständigkeit halber. Es wäre eine gute Idee, um die optimale Anzahl von Clustern mit "partition around medoids". Es entspricht der Verwendung silhouette-Methode.
Grund für die seltsame Beobachtungen unterschiedlicher könnten die Ausgangspositionen für die unterschiedlich großen Proben.
Nachdem alles gesagt oben, es ist wichtig zu beurteilen, clusterability des Datensatzes in der hand. Gut zu führen bedeutet, ist Worst Pair-Verhältnis als die hier diskutierten Clusterability.