Muszę grupować jednostki w klastrów, aby zminimalizować sumę kwadratów wewnątrz grupy (WSS), ale muszę upewnić się, że każda z klastrów zawiera co najmniej jednostek. Masz pojęcie, czy którakolwiek z funkcji klastrowania R pozwala na grupowanie w klastrów z zastrzeżeniem ograniczenia minimalnego rozmiaru klastra? Kmeans () nie wydaje się oferować opcji ograniczenia rozmiaru.
źródło
Ten problem rozwiązano w tym dokumencie:
Bradley, PS, KP Bennett i Ayhan Demiriz. „Ograniczone k-oznacza grupowanie”. Microsoft Research, Redmond (2000) : 1-8.
Mam implementację algorytmu w Pythonie.
źródło
rPython
pakietu w R do stworzenia interfejsu do tej implementacji, do którego uzyskałem dostęp ze skryptu R.Myślę, że byłoby to po prostu kwestią uruchomienia k środków jako części pętli if z testem dla wielkości klastra, tj. Liczyć n w klastrze k - pamiętaj również, że k oznacza da inne wyniki dla każdego uruchomienia na tych samych danych, więc i tak powinieneś uruchomić go jako część pętli, aby wyodrębnić „najlepszy” wynik
źródło
Jak duży jest twój zestaw danych? Być może możesz spróbować uruchomić hierarchiczne klastrowanie, a następnie zdecydować, które klastry zachowają na podstawie twojego dendrogramu.
Jeśli Twój zestaw danych jest ogromny, możesz także połączyć obie metody klastrowania: początkową niehierarchiczną, a następnie hierarchiczną, korzystając z grup z analizy niehierarchicznej. Przykład takiego podejścia można znaleźć w Martínez-Pastor i in. (2005)
źródło
Można to osiągnąć, modyfikując krok przypisania klastra (E w EM) przez sformułowanie go jako problemu optymalizacji sieci liniowej o minimalnym przepływie kosztów (MCF).
Napisałem pakiet Pythona, który korzysta z SimpleMinCostFlow narzędzia Google Operations Research, które jest szybką implementacją C ++. Ma standardowy interfejs API scikit-lean.
źródło