Ich muss Einheiten in Cluster gruppieren, um die Summe der Quadrate innerhalb der Gruppe (WSS) zu minimieren, aber ich muss sicherstellen, dass die Cluster jeweils mindestens m Einheiten enthalten. Gibt es eine Idee, ob eine der Clustering-Funktionen von R das Clustering in k Cluster unter Einhaltung einer Mindestbeschränkung für die Clustergröße ermöglicht? kmeans () scheint keine Option für Größenbeschränkungen zu bieten.
quelle
Dieses Problem wird in diesem Artikel angesprochen:
Bradley, PS, KP Bennett und Ayhan Demiriz. "Eingeschränktes k bedeutet Clustering." Microsoft Research, Redmond (2000) : 1-8.
Ich habe eine Implementierung des Algorithmus in Python.
quelle
rPython
Paket in R verwendet, um eine Schnittstelle zu dieser Implementierung zu erstellen, auf die ich über mein R-Skript zugegriffen habe.Ich denke, es wäre nur eine Frage der Ausführung der k-Mittelwerte als Teil einer if-Schleife mit einem Test für Clustergrößen, d. H. Anzahl n in Cluster k. Denken Sie auch daran, dass k-Mittelwerte für jeden Lauf mit denselben Daten unterschiedliche Ergebnisse liefern Sie sollten es wahrscheinlich sowieso als Teil einer Schleife ausführen, um das "beste" Ergebnis zu extrahieren
quelle
Wie groß ist Ihr Datensatz? Vielleicht könnten Sie versuchen, ein hierarchisches Clustering durchzuführen und dann anhand Ihres Dendrogramms zu entscheiden, welche Cluster erhalten bleiben.
Wenn Ihre Datenmenge sehr groß ist, können Sie auch beide Clustering-Methoden kombinieren: ein anfängliches nicht hierarchisches Clustering und dann ein hierarchisches Clustering unter Verwendung der Gruppen aus der nicht hierarchischen Analyse. Ein Beispiel für diesen Ansatz finden Sie in Martínez-Pastor et al. (2005).
quelle
Dies kann erreicht werden, indem der Clusterzuweisungsschritt (E in EM) geändert wird, indem er als ein lineares Netzwerkoptimierungsproblem mit minimalem Kostenfluss (MCF) formuliert wird.
Ich habe ein Python-Paket geschrieben, das SimpleMinCostFlow der Operations Research-Tools von Google verwendet, eine schnelle C ++ - Implementierung. Es verfügt über eine Standard-Scikit-Lean-API.
quelle