Die Lückenstatistik ist eine großartige Möglichkeit, dies zu tun. Tibshirani, Hastie & Walther (2001).
http://stat.ethz.ch/R-manual/R-devel/library/cluster/html/clusGap.html - Das relevante R-Paket.
Die Idee ist, dass es einen sequentiellen Hypothesentest zum Clustering Ihrer Daten für K = 1,2,3, ... gegen eine Nullhypothese des zufälligen Rauschens durchführt, die einem Cluster entspricht. Seine besondere Stärke ist, dass es Ihnen einen zuverlässigen Hinweis darauf gibt, ob K = 1 ist, dh ob es keine Cluster gibt.
Hier ist ein Beispiel: Ich habe vor einigen Tagen einige Astronomiedaten untersucht, und zwar aus einer Exoplaneten-Umfrage. Ich wollte wissen, welche Beweise es für (konvexe) Cluster gibt. Meine Daten sind "Transit"
library(cluster)
cgap <- clusGap(transit, FUN=kmeans, K.max=kmax, B=100)
for(k in 1:(kmax-1)) {
if(cgap$Tab[k,3]>cgap$Tab[(k+1),3]-cgap$Tab[(k+1),4]) {print(k)};
break;
}
Mit der Lückenstatistik suchen Sie nach dem ersten Wert von K, bei dem der Test "fehlschlägt", dh die Lückenstatistik sinkt erheblich. Die obige Schleife gibt eine solche ak aus. Wenn Sie jedoch cgap einfach zeichnen, erhalten Sie die folgende Abbildung:
Sehen Sie, wie die Lücke von k = 1 auf k = 2 signifikant abfällt , was bedeutet, dass tatsächlich keine Cluster vorhanden sind (dh 1 Cluster).