Wenn ich einen bestimmten Datensatz habe, wie intelligent wäre es dann, Cluster-Zentren mithilfe von Zufallsstichproben dieses Datensatzes zu initialisieren?
Angenommen, ich möchte 5 clusters
. Ich nehme 5 random samples
von sagen wir, size=20%
des ursprünglichen Datensatzes. Könnte ich dann den Mittelwert jeder dieser 5 Zufallsstichproben als meine 5 anfänglichen Cluster-Zentren verwenden? Ich weiß nicht, wo ich das lese, aber ich wollte wissen, was ihr über die Idee denkt.
UPDATE: Bitte lesen Sie diesen Thread Initialisierung von K-means Clustering: Welche Methoden gibt es? für die allgemeine Diskussion über die verschiedenen Initialisierungsmethoden.
clustering
k-means
unsupervised-learning
JEquihua
quelle
quelle
Antworten:
Wenn Sie die Stichprobe zufällig in 5 Teilstichproben aufteilen, stimmen Ihre 5 Mittelwerte fast überein. Was bedeutet es, solche engen Punkte zu den anfänglichen Clusterzentren zu machen?
In vielen K-means-Implementierungen basiert die Standardauswahl der anfänglichen Clusterzentren auf der entgegengesetzten Idee: Finden der 5 Punkte, die am weitesten voneinander entfernt sind, und Festlegen der anfänglichen Zentren. Sie fragen sich vielleicht, wie Sie diese weit auseinander liegenden Punkte finden können? Hier ist, was SPSS 'K-means dafür tut:
Nehmen Sie alle k Fälle (Punkte) des Datensatzes als Anfangszentren. In allen übrigen Fällen wird geprüft, ob sie durch die folgenden Bedingungen als Ausgangszentren ersetzt werden können:
Wenn die Bedingung (a) nicht erfüllt ist, wird die Bedingung (b) geprüft; Ist dies nicht der Fall, wird der Fall auch nicht zum Zentrum. Als Ergebnis einer solchen Lauf durch Fällen erhalten wir k äußerste Fälle in der Wolke , die die ersten Zentren werden. Das Ergebnis dieses Algorithmus ist zwar robust genug, jedoch nicht völlig unempfindlich gegenüber der Startauswahl von "any k cases" und der Sortierreihenfolge der Fälle im Datensatz. es sind also immer noch mehrere zufällige Startversuche erwünscht, wie es bei K-means immer der Fall ist.
Siehe meine Antwort mit einer Liste der gängigen Initialisierungsmethoden für k-means. Die Methode der Aufteilung in zufällige Unterproben (hier von mir und anderen kritisiert) sowie die von SPSS verwendete beschriebene Methode - stehen ebenfalls auf der Liste.
quelle
Die Mittel werden viel zu ähnlich sein. Sie können auch den Datensatzmittelwert finden und dann die Anfangsschwerpunkte in einem kleinen Kreis / einer kleinen Kugel um diesen Mittelwert platzieren.
Wenn Sie mehr Sound-Initialisierungsschema für k-means sehen möchten, schauen Sie sich k-means ++ an. Sie haben eine ziemlich clevere Methode entwickelt, um k-means zu säen.
k-means ++: die Vorteile einer sorgfältigen Aussaat ".
Vorträge des achtzehnten jährlichen ACM-SIAM-Symposiums über diskrete Algorithmen
Folien des Autors: http://www.ima.umn.edu/~iwen/REU/BATS-Means.pdf
quelle
Wenn Sie die Mittel der Zufallsstichproben verwenden, erhalten Sie das Gegenteil von dem, was Sie benötigen, wie ttnphns in seinem Kommentar ausgeführt hat. Was wir brauchen, ist eine Möglichkeit, Datenpunkte zu finden, die ziemlich weit voneinander entfernt sind.
Im Idealfall können Sie alle Punkte durchlaufen, die Abstände zwischen ihnen ermitteln und bestimmen, wo die Abstände am größten sind ...
Die Absicht des OP nicht zu umgehen, aber ich denke, die "Lösung" ist in den k-means-Algorithmus eingebaut. Wir führen mehrere Iterationen durch und berechnen Cluster-Zentroide basierend auf den vorherigen Iterationen neu. Normalerweise führen wir den kmeans-Algorithmus auch mehrmals aus (mit zufälligen Anfangswerten) und vergleichen die Ergebnisse.
Wenn man über A-priori- Kenntnisse und Domänenkenntnisse verfügt, kann dies zu einer überlegenen Methode führen, um festzustellen, wo sich anfängliche Cluster-Zentren befinden sollten. Andernfalls müssen wahrscheinlich zufällige Datenpunkte als Anfangswerte ausgewählt und dann mehrere Läufe und mehrere Iterationen pro Lauf verwendet werden.
quelle
Die vorgeschlagenen Antworten sind alle effektiv, jedoch viel schwieriger zu operationalisieren als Ihr ursprünglicher Vorschlag. Eine sehr einfache Methode zum Initialisieren ist takek zufällige Beobachtungen als die ursprünglichen Punkte. Die Wahrscheinlichkeit, dass zwei Anfangspunkte nahe beieinander liegen, ist recht gering, und der Algorithmus wird für alle Fälle, mit Ausnahme der extremsten, schnell ausgeführt.
quelle