I have a so so sized data set - 30 000 observations. I would like to run K-means on them but to restrict the center(mean) of the data. This is, I would like to push the clusters away from this mean. As I have noticed that independantly of the # of clusters, one ends up landing right on top of the mean of all the variables, like a smaller version of the whole data set. Is there a way to restrict K-means to not behave this way? By the way I have two different ways to initialize cluster centers, random starting points and means of random samples of the data. I run each 500 times and the solution seems stable enough but maybe k-means++ would have a different outcome? I wouldnt think so... thank you in advanced reader.
I can't see any way to do what you want with the basic k-means routines in R.
The best trick I can think of is to use one of the c-means routines and then at the end take all points that have their largest membership in your Forbidden Center Cluster and reassign each one to the cluster with its second-largest membership.
You could also look at
flexclust and its
kcca, or really dig deep into the
fps packages and roll your own.
Or you might abandon k-means clustering and use something else. R has a whole boatload of other methods, but I'll point out that
cclust has a Neural Gas clustering option. I have always liked Neural Gas, if only because it's a cool name. No guarantee that a different clustering algorithm will work better then k-means, but it's worth a try.