K-means ist eine weit verbreitete Methode in der Clusteranalyse. Nach meinem Verständnis erfordert diese Methode KEINE Annahmen, dh, Sie geben mir einen Datensatz und eine vorgegebene Anzahl von Clustern, k, und ich wende nur diesen Algorithmus an, der die Summe der Fehlerquadrate (SSE) im Quadrat des Clusters minimiert Error.
K-means ist also im Wesentlichen ein Optimierungsproblem.
Ich habe Material über die Nachteile von k-means gelesen. Die meisten von ihnen sagen, dass:
- k-means nimmt an, dass die Varianz der Verteilung jedes Attributs (jeder Variablen) sphärisch ist;
- Alle Variablen haben die gleiche Varianz.
- die vorherige Wahrscheinlichkeit ist für alle k Cluster gleich, dh jeder Cluster hat ungefähr die gleiche Anzahl von Beobachtungen;
Wenn eine dieser drei Annahmen verletzt wird, schlägt k-means fehl.
Ich konnte die Logik hinter dieser Aussage nicht verstehen. Ich denke, dass die k-means-Methode im Wesentlichen keine Annahmen macht, sondern nur die SSE minimiert, sodass ich den Zusammenhang zwischen der Minimierung der SSE und diesen 3 "Annahmen" nicht erkennen kann.
quelle
Antworten:
Während ich die Antwort von David Robinson hier sehr mag , hier eine zusätzliche Kritik an k-means.
Clustering von nicht geclusterten Daten
Wenn Sie k-means mit einheitlichen Daten ausführen, erhalten Sie dennoch Cluster! Es sagt Ihnen nicht, wann die Daten nicht gruppiert werden, und kann Ihre Forschung auf diese Weise in eine Sackgasse führen.
Empfindlich im Maßstab
Dies ist wahrscheinlich das, was Sie als "alle Variablen haben die gleiche Varianz" bezeichnet haben. Abgesehen davon würden Sie im Idealfall auch eine nichtlineare Skalierung in Betracht ziehen.
Beachten Sie auch, dass es nur heuristisch ist, jede Achse so zu skalieren, dass sie eine Einheitsvarianz aufweist . Dies stellt nicht sicher, dass k-means funktioniert. Die Skalierung hängt von der Bedeutung Ihres Datensatzes ab. Und wenn Sie mehr als einen Cluster haben, möchten Sie, dass jeder Cluster (unabhängig) auch in jeder Variablen die gleiche Varianz aufweist.
Hier ist ein klassisches Gegenbeispiel von Datensätzen, die k-means nicht gruppieren kann. Beide Achsen befinden sich in jedem Cluster, es wäre also ausreichend, dies in einer Dimension zu tun. Die Cluster haben jedoch unterschiedliche Varianzen, und k-means teilt sie daher falsch auf.
Ich denke nicht, dass dieses Gegenbeispiel für k-means durch Ihre Punkte abgedeckt wird:
K-means fällt immer noch schlecht aus (und es wird schlimmer, wenn ich die Varianz für den größeren Cluster auf über 0,5 erhöhe). Aber: Es ist nicht der Algorithmus, der fehlgeschlagen ist. Es sind die Annahmen, die nicht stimmen . K-means funktioniert perfekt, es optimiert nur das falsche Kriterium.
Selbst bei perfekten Datensätzen kann es in einem lokalen Minimum stecken bleiben
Nachfolgend finden Sie die besten 10 Läufe von k-means für den klassischen A3-Datensatz. Dies ist ein synthetischer Datensatz, der für k-means entwickelt wurde . 50 Cluster, jeder in Gaußscher Form, ziemlich gut voneinander getrennt. Allerdings habe ich nur mit k-means ++ und 100 Iterationen das erwartete Ergebnis erhalten ... (unten sind zur Veranschaulichung 10 Iterationen mit regulären k-means angegeben).
Sie werden schnell viele Cluster in diesem Datensatz finden, bei denen k-means nicht die richtige Struktur gefunden hat. Beispielsweise wurde rechts unten ein Cluster in drei Teile aufgeteilt. Aber es gibt keine Möglichkeit, k-means wird einen dieser Schwerpunkte an einen völlig anderen Ort des Datensatzes verschieben - er ist in einem lokalen Minimum gefangen (und dies war bereits der beste von 10 Läufen!).
Und es gibt viele solcher lokalen Minima in diesem Datensatz. Sehr oft, wenn Sie zwei Samples von demselben Cluster erhalten, bleibt dieser mindestens dort hängen, wo dieser Cluster aufgeteilt bleibt, und stattdessen werden zwei andere Cluster zusammengeführt. Nicht immer, aber sehr oft. Sie brauchen also viele Iterationen, um eine glückliche Wahl zu treffen. Mit 100 Iterationen von k-means zählte ich immer noch 6 Fehler und mit 1000 Iterationen brachte ich dies auf 4 Fehler. K-means ++ funktioniert durch die Art und Weise, wie die Zufallsstichproben gewichtet werden, viel besser mit diesem Datensatz.
Mittel sind ununterbrochen
Während Sie k-means für binäre Daten (oder One-Hot-codierte kategoriale Daten) ausführen können, sind die Ergebnisse nicht mehr binär. Sie erhalten zwar ein Ergebnis, können es jedoch möglicherweise nicht interpretieren, da es einen anderen Datentyp als Ihre ursprünglichen Daten hat.
Versteckte Annahme: SSE ist es wert, minimiert zu werden
Dies ist im Wesentlichen bereits in der obigen Antwort vorhanden, die mit linearer Regression gut demonstriert wird. Es gibt einige Anwendungsfälle, in denen k-means absolut sinnvoll ist. Als Lloyd PCM-Signale dekodieren musste, kannte er die Anzahl der verschiedenen Töne, und Fehler im kleinsten Fehlerquadrat minimieren die Wahrscheinlichkeit von Dekodierungsfehlern. Und bei der Farbquantisierung von Bildern minimieren Sie Farbfehler, wenn Sie die Palette verkleinern. Aber ist die Summe der quadratischen Abweichungen in Ihren Daten ein aussagekräftiges Kriterium zur Minimierung?
Im obigen Gegenbeispiel lohnt es sich nicht , die Varianz zu minimieren, da sie vom Cluster abhängt. Stattdessen sollte ein Gaußsches Mischungsmodell an die Daten angepasst werden, wie in der folgenden Abbildung dargestellt:
(Dies ist jedoch auch nicht die ultimative Methode. Es ist genauso einfach, Daten zu konstruieren, die nicht den Annahmen einer "Mischung aus k-Gauß-Verteilungen" entsprechen, z. B. durch Hinzufügen einer Menge Hintergrundrauschen.)
Zu einfach, schlecht zu benutzen
Alles in allem ist es zu einfach, k-means auf Ihre Daten zu werfen und trotzdem ein Ergebnis zu erzielen (das ist ziemlich zufällig, aber Sie werden es nicht bemerken). Ich denke, es wäre besser, eine Methode zu haben, die scheitern kann, wenn Sie Ihre Daten nicht verstanden haben ...
K-bedeutet als Quantisierung
Wenn Sie ein theoretisches Modell dessen wollen, was k-means bewirkt, betrachten Sie es als Quantisierungsansatz , nicht als Clustering-Algorithmus.
Das Ziel von k-means - die Minimierung des quadratischen Fehlers - ist eine vernünftige Wahl, wenn Sie jedes Objekt durch seinen nächsten Schwerpunkt ersetzen. (Es ist viel weniger sinnvoll, wenn Sie die ursprünglichen Daten der Gruppe IMHO überprüfen.)
Diese Quantisierung ähnelt wahrscheinlich dem Beispiel der linearen Regression. Die lineare Regression findet das beste lineare Modell . Und k-means findet (manchmal) die beste Reduktion auf k-Werte eines mehrdimensionalen Datensatzes. Wobei "am besten" der Fehler im kleinsten Quadrat ist.
IMHO, k-means ist ein guter Quantisierungsalgorithmus (siehe das erste Bild in diesem Beitrag - wenn Sie den Datensatz auf zwei Punkte approximieren möchten, ist dies eine vernünftige Wahl!). Wenn Sie eine Clusteranalyse wie in der Discovery-Struktur durchführen möchten, ist k-means meiner Meinung nach nicht die beste Wahl. Es neigt dazu, Cluster zu bilden, wenn es keine Cluster gibt, und es kann verschiedene Strukturen nicht erkennen, die Sie häufig in Daten sehen.
Kleingedrucktes: Alle Bilder wurden mit ELKI erstellt . Daten wurden im
.xml
Datengenerierungsformat generiert, sind jedoch so einfach, dass es sich nicht lohnt, sie weiterzugeben.quelle
Was für eine großartige Frage - es ist eine Chance zu zeigen, wie man die Nachteile und Annahmen jeder statistischen Methode untersuchen würde. Nämlich: Machen Sie einige Daten und probieren Sie den Algorithmus aus!
Wir werden zwei Ihrer Annahmen berücksichtigen und sehen, was mit dem k-means-Algorithmus passiert, wenn diese Annahmen verletzt werden. Wir werden uns an zweidimensionale Daten halten, da diese einfach zu visualisieren sind. (Aufgrund des Fluchs der Dimensionalität werden diese Probleme durch Hinzufügen zusätzlicher Dimensionen wahrscheinlich größer und nicht kleiner). Wir werden mit der statistischen Programmiersprache R arbeiten: Den vollständigen Code finden Sie hier (und den Beitrag in Blog-Form hier ).
Abwechslung: Anscombes Quartett
Erstens eine Analogie. Stellen Sie sich vor, jemand argumentiert Folgendes:
Nun ja, die lineare Regression minimiert die Summe der quadratischen Residuen. Dies allein ist jedoch nicht das Ziel einer Regression: Wir versuchen , eine Linie zu ziehen, die als zuverlässiger, unvoreingenommener Prädiktor für y auf der Basis von x dient . Das Gauß-Markov-Theorem sagt uns, dass die Minimierung der SSE dieses Ziel erreicht - aber dass das Theorem auf einigen sehr spezifischen Annahmen beruht. Wenn diese Annahmen nicht zutreffen, können Sie die SSE trotzdem minimieren, dies ist jedoch möglicherweise nicht der Falletwas. Stellen Sie sich vor, Sie fahren ein Auto, indem Sie auf das Pedal treten: Fahren ist im Wesentlichen ein Vorgang, bei dem Sie auf das Pedal treten. Das Pedal kann gedrückt werden, egal wie viel Benzin sich im Tank befindet. Selbst wenn der Tank leer ist, können Sie trotzdem das Pedal drücken und das Auto fahren. "
Aber reden ist billig. Schauen wir uns die kalten, harten Daten an. Oder eigentlich erfundene Daten.
Man könnte sagen " In diesen Fällen funktioniert die lineare Regression immer noch , weil sie die Summe der Quadrate der Residuen minimiert." Aber was für ein Pyrrhussieg ! Lineare Regression zieht immer eine Linie, aber wenn es eine bedeutungslose Linie ist, wen interessiert das dann?
Jetzt sehen wir, dass eine Optimierung noch lange nicht das Erreichen unseres Ziels bedeutet. Und wir sehen, dass das Erstellen und Visualisieren von Daten eine gute Möglichkeit ist, die Annahmen eines Modells zu überprüfen. Haltet an dieser Intuition fest, wir werden sie in einer Minute brauchen.
Unterbrochene Annahme: Nicht kugelförmige Daten
Sie argumentieren, dass der k-means-Algorithmus bei nicht-sphärischen Clustern gut funktioniert. Nicht-sphärische Cluster wie ... diese?
Vielleicht haben Sie das nicht erwartet - aber es ist eine vernünftige Methode, Cluster zu konstruieren. Wenn wir dieses Bild betrachten, erkennen wir Menschen sofort zwei natürliche Gruppen von Punkten - wir können sie nicht verwechseln. Schauen wir uns also an, wie sich k-means verhält: Zuweisungen werden in Farbe angezeigt, unterstellte Zentren werden als X angezeigt.
Nun, das ist nicht richtig. K-means versuchte, einen quadratischen Stift in ein rundes Loch zu stecken - und versuchte, schöne Zentren mit sauberen Kugeln zu finden - und es schlug fehl. Ja, es wird immer noch die Summe der Quadrate innerhalb des Clusters minimiert - aber genau wie im obigen Anscombe-Quartett ist es ein Pyrrhussieg!
Sie könnten sagen: "Das ist kein faires Beispiel. Keine Cluster-Methode kann so seltsame Cluster korrekt finden." Nicht wahr! Versuchen Sie es mit einem einzelnen Linkage Hierachical Clustering :
Geschafft! Dies liegt daran, dass bei hierarchischem Clustering mit einfacher Verknüpfung die richtigen Annahmen für dieses Dataset getroffen werden. (Es gibt eine ganze andere Klasse von Situationen, in denen es versagt).
Sie könnten sagen "Das ist ein einziger, extremer, pathologischer Fall." Aber es ist nicht! Beispielsweise können Sie die äußere Gruppe zu einem Halbkreis anstatt zu einem Kreis machen, und Sie werden sehen, dass k-means immer noch furchtbar funktioniert (und hierarchisches Clustering immer noch gut funktioniert). Ich könnte mir leicht andere problematische Situationen einfallen lassen, und das nur in zwei Dimensionen. Beim Clustering von 16-dimensionalen Daten können alle möglichen Pathologien auftreten.
Zum Schluss sollte ich noch erwähnen, dass k-means immer noch rentabel ist! Wenn Sie Ihre Daten zunächst in Polarkoordinaten umwandeln , funktioniert das Clustering jetzt wie folgt:
Aus diesem Grund ist es wichtig, die einer Methode zugrunde liegenden Annahmen zu verstehen: Sie erfahren nicht nur, wann eine Methode Nachteile aufweist, sondern auch, wie Sie diese beheben können.
Unterbrochene Annahme: Cluster mit ungleicher Größe
Was ist, wenn die Cluster eine ungerade Anzahl von Punkten aufweisen - bedeutet dies auch, dass k-Cluster zerstört werden? Betrachten Sie diese Gruppe von Clustern mit den Größen 20, 100 und 500. Ich habe jeden aus einem multivariaten Gaußschen Wert generiert:
Das sieht so aus, als ob k-means diese Cluster wahrscheinlich finden könnte, oder? Alles scheint in ordentlichen Gruppen zusammenzufassen. Versuchen wir also k-means:
Autsch. Was hier passiert ist, ist etwas subtiler. Bei der Suche nach einer Minimierung der Quadratsumme innerhalb eines Clusters verleiht der k-means-Algorithmus größeren Clustern mehr "Gewicht". In der Praxis bedeutet dies, dass es glücklich ist, zuzulassen, dass dieser kleine Cluster weit von einem Zentrum entfernt ist, während er diese Zentren verwendet, um einen viel größeren Cluster zu "teilen".
Wenn Sie ein wenig mit diesen Beispielen spielen ( R-Code hier! ), Werden Sie sehen, dass Sie viel mehr Szenarien konstruieren können, in denen k-means es peinlich falsch macht.
Fazit: Kein kostenloses Mittagessen
Es gibt eine bezaubernde Konstruktion in der mathematischen Folklore, die von Wolpert und Macready formalisiert wurde und als "Theorem ohne freies Mittagessen" bezeichnet wird. Es ist wahrscheinlich mein Lieblingssatz in Maschinelles Lernen Philosophie, und ich genießen eine Chance , es zu bringen (habe ich erwähnt , dass ich diese Frage lieben?) Die Grundidee ist angegeben (nicht rigoros) wie folgt aus : „Wenn in allen möglichen Situationen gemittelt, Jeder Algorithmus funktioniert gleich gut. "
Hört sich das nicht intuitiv an? Bedenken Sie, dass ich für jeden Fall, in dem ein Algorithmus funktioniert, eine Situation konstruieren könnte, in der er fürchterlich ausfällt. Bei der linearen Regression wird davon ausgegangen, dass Ihre Daten entlang einer Linie fallen - aber was ist, wenn sie einer Sinuswelle folgen? Bei einem T-Test wird davon ausgegangen, dass jede Probe aus einer Normalverteilung stammt: Was passiert, wenn Sie einen Ausreißer einwerfen? Jeder Algorithmus für den Gradientenanstieg kann in lokalen Maxima gefangen werden, und jede überwachte Klassifizierung kann zur Überanpassung verleitet werden.
Was bedeutet das? Es bedeutet, dass Annahmen sind, wo Ihre Macht herkommt! Wenn Netflix Ihnen Filme empfiehlt, wird davon ausgegangen, dass Sie ähnliche Filme mögen, wenn Sie einen mögen (und umgekehrt). Stellen Sie sich eine Welt vor, in der das nicht stimmt und Ihre Vorlieben vollkommen zufällig auf Genres, Schauspieler und Regisseure verteilt sind. Ihr Empfehlungsalgorithmus würde schrecklich scheitern. Würde es Sinn machen zu sagen "Nun, es minimiert immer noch einen erwarteten quadratischen Fehler, so dass der Algorithmus immer noch funktioniert"? Sie können keinen Empfehlungsalgorithmus erstellen, ohne einige Annahmen über den Geschmack der Benutzer zu treffen - genau wie Sie keinen Cluster-Algorithmus erstellen können, ohne einige Annahmen über die Art dieser Cluster zu treffen.
Akzeptieren Sie also nicht nur diese Nachteile. Kennen Sie sie, damit sie Ihre Wahl der Algorithmen informieren können. Verstehen Sie sie, damit Sie Ihren Algorithmus optimieren und Ihre Daten transformieren können, um sie zu lösen. Und liebe sie, denn wenn dein Modell niemals falsch sein könnte, bedeutet das, dass es niemals richtig sein wird.
quelle
Ich möchte nur zu @ DavidRobinsons Antwort hinzufügen, dass das Clustering auf minimale Gesamtvarianz des Clusters tatsächlich ein kombinatorisches Optimierungsproblem ist, von dem k-Means nur eine Technik ist - und wenn man dessen "one shot", lokale "steilste Abfahrt" -Natur zugrunde legt , auch eine ziemlich schlechte . Es ist von Anfang an zum Scheitern verurteilt, zu versuchen, die "nackten Knochen" k-Means durch eine (aber schnelle) Ermittlung der Position der Cluster-Samen wesentlich zu verbessern: Da die Samen die endgültigen Cluster (drastisch!) Beeinflussen, beträgt sie zu "wissen", was das Optimum ist ... bevor es tatsächlich berechnet wird.
Wie die meisten Optimierungsprobleme kann es jedoch zu ernsthaften Optimierungstechniken kommen . Einer von ihnen passt sehr gut zur Struktur des Problems (wie es die NFL verlangt!) Und zeigt sich zweifellos in ihren Ergebnissen. Ich möchte hier keine Werbung machen (das wäre - und das zu Recht - gegen die Etikette). Wenn Sie also interessiert sind, lesen Sie es einfach hier und machen Sie Ihr eigenes Urteil.
Aber sagen, dass ich stimme @ttnphns dass k-Means sicherlich nicht nicht ein Gaussian Mixture identifizieren - die Kostenfunktionen der beiden Probleme sind völlig verschieden. Es stellt sich heraus, dass das Finden der (in Bezug auf die Wahrscheinlichkeit des Modells bei gegebenen Daten) am besten passenden Gaußschen Mischung auch ein kombinatorisches Optimierungsproblem ist - und für das es auch eine ernsthafte Optimierungstechnik gibt. Wieder einmal, keine Werbung: können Sie Ihre eigenen Abschluss erreichen hier - ich will nur sagen , dass der Algorithmus diskutiert kann es zwar richtig Cluster identifizieren , wie das letzte Bild in @ David Maurice Robinson den Pfosten . Es löst sogar richtig (dh auf mathematisch gut definierte Weise) das Mehrjahresproblem von Ausreißerndh Datenpunkte, die keinem der Cluster angehören , weil sie nur völlig zufällig sind (notorischerweise entgleisen sie beispielsweise k-Means vollständig ). Dies geschieht , indem eine zusätzliche, eine gleichmäßige Verteilung im Wettbewerb mit dem Gaussians ... und dem herrlichen Ergebnis ist , dass auf gleichmäßig verteilen Daten, es in der Tat berichtet , gibt es nichts drin (ich habe nie irgendwo anders gesehen).
Nun, laut NFL und wie Sie zu Recht bemerkt haben, beruhen selbst global optimale Gauß-Gemische mit Ausreißeridentifikation auf einer vorherigen Annahme - nämlich, dass die Daten tatsächlich normal verteilt sind. Glücklicherweise stimmen dank des Gesetzes der großen Zahlen zahlreiche Naturphänomene mit dieser Annahme überein.
HAFTUNGSAUSSCHLUSS: Mit meiner tiefsten Entschuldigung habe ich sowohl die oben genannten Artikel als auch die darin diskutierten Algorithmen geschrieben.
PS Ich habe Macready einmal auf einer Konferenz getroffen - ein extrem kluger und netter Kerl!
quelle
Die Nachteile von K-means sind logischerweise:
Aber K-means ist besser als wir normalerweise denken. Ich bin ziemlich begeistert davon geworden, nachdem ich es mit anderen Clustering-Methoden (Spektral, Dichte ...) und LDA in der realen Textklassifizierung von einer Million Texten getestet habe: K-means hatte eine weitaus bessere Genauigkeit als LDA zum Beispiel (88% vs 59%). Einige andere Clustering-Methoden waren gut, aber K-means war in der Nähe der Spitze ... und in Bezug auf die Komplexität erschwinglicher.
Ich habe noch nie über eine Clustering-Methode gelesen, die bei einer Vielzahl von Problemen allgemein besser ist. Nicht zu sagen, dass K-means universell besser ist, nur, dass es meines Wissens keinen universellen Clustering-Superhelden gibt. Viele Artikel, viele Methoden, keine echte Revolution (nach meiner persönlichen begrenzten Erfahrung beim Testen einiger von ihnen).
Der Hauptgrund, warum die logischen Nachteile von K-means oft nur offensichtlich sind, ist, dass Sie beim maschinellen Lernen selten Clustering-Punkte in einer 2D-Ebene machen. Viele Dinge aus der geometrischen Intuition, die in 2D, 3D ... wahr sind, sind in relativ hochdimensionalen oder abstrakten Vektorräumen (wie Wortkiste, Vektor von Variablen ...) irrelevant.
Lineare Trennbarkeit: In realen Daten müssen Sie sich selten mit kreisförmigen Clustern befassen. Es ist sogar besser anzunehmen, dass sie in diesen Fällen nicht existieren. Wenn Sie Ihrem Algorithmus erlauben, nach ihnen zu suchen, kann er ungerade kreisförmige Cluster im Rauschen finden. Die lineare Annahme in K-Mitteln macht es oft robuster.
Anzahl der Cluster: Es gibt oft keine ideale Anzahl von Clustern, die Sie sehen möchten. Zum Beispiel kann es für die Textklassifizierung 100 Kategorien geben, 105, 110 ... das ist alles eher subjektiv. Die Angabe der Anzahl der Cluster entspricht der Angabe einer globalen Granularität. Alle Clustering-Methoden benötigen ohnehin eine Granularitätsangabe.
Alle Clustering-Algorithmen weisen jedoch solche Einschränkungen auf. Zum Beispiel in Spectral Clustering: Sie können die wahren Eigenvektoren nicht finden, nur Näherungen.
Für die gleiche Rechenzeit hat eine ziemlich optimierte LDA-Bibliothek weniger gut getan als unsere hausgemachten (nicht perfekt optimierten) K-Mittel. Seitdem denke ich ein bisschen anders.
quelle
Um die Nachteile von K-means zu verstehen, denke ich gerne darüber nach, welches Modell dahinter steckt.
Was sagt uns das über die Nachteile von K-means?
K-means ist eigentlich ein ziemlich restriktiver Algorithmus. Der Vorteil ist, dass Sie mit den oben genannten Annahmen den Algorithmus ziemlich schnell ausführen können. Wenn jedoch die Clusterleistung Ihr Hauptanliegen ist, ist K-means in realen Situationen in der Regel viel zu restriktiv.
quelle
It can be shown that
. Durch ausreichende Dehnung kann alles als Verwandtschaft über den Verstand hinaus "gezeigt" werden.