Nice work. I wonder if there is a way to build the cheat sheet in a collaborative fashion kinda like a wiki. On thing I noticed, I am no expert in ML, but recently I was reading about K-means algorithm that enables you to quickly find the number of clusters with unknown number of clusters. This seems to be missing in your example where the clustering branch end with "tough luck".
I would set one up, but my experience of doing this in the past, even when it was specifically requested by several people, is that no one contributes.
No one.
More, people not only don't contribute, they don't even adhere to the guidelines that they themselves proposed. As a result I am more than just sceptical about such collaborative efforts, I'm now utterly cynical.
Note: I submitted the link, but I'm not the author.
Plot k against prediction accuracy (averaged over a number of runs). Look for a step, that is the correct setting of k. I don't believe there exists an algorithm for detecting that step as good as I can.
It's "tough luck" because the algorithms determining the number of clusters aren't magical. As with all machine learning, the results reflect the assumptions built into the algorithm.
I was thinking DBSCAN or OPTICS could also be used when the number of categories is unknown, although I am no expert when it comes to understanding what sample size is necessary.
Scikit-learn already has a number of techniques implemented to do this, though they don't scale to large numbers of data points: Affinity Propogation and Mean Shift (mentioned in the cheat sheet). As far as I remember, DBSCAN also does this, but I'm not completely sure.
Yes but the current implementation of DBSCAN in sklearn is not very scalable. I think some contributors want to fix this but I am not sure what the current status is.
Comments
Nice work. I wonder if there is a way to build the cheat sheet in a collaborative fashion kinda like a wiki. On thing I noticed, I am no expert in ML, but recently I was reading about K-means algorithm that enables you to quickly find the number of clusters with unknown number of clusters. This seems to be missing in your example where the clustering branch end with "tough luck".
I would set one up, but my experience of doing this in the past, even when it was specifically requested by several people, is that no one contributes.
No one.
More, people not only don't contribute, they don't even adhere to the guidelines that they themselves proposed. As a result I am more than just sceptical about such collaborative efforts, I'm now utterly cynical.
Note: I submitted the link, but I'm not the author.
" find the number of clusters"
Plot k against prediction accuracy (averaged over a number of runs). Look for a step, that is the correct setting of k. I don't believe there exists an algorithm for detecting that step as good as I can.
Prediction accuracy cannot be computed in a purely unsupervised setting: you don't have labels for the samples.
You can compare the cluster found by k-means run several times against what you get with a randomized version of your dataset though: http://blog.echen.me/2011/03/19/counting-clusters/
I think its called x-means algo. Here is the paper http://www.cs.cmu.edu/~dpelleg/download/xmeans.pdf
http://en.wikipedia.org/wiki/Determining_the_number_of_clust...
It's "tough luck" because the algorithms determining the number of clusters aren't magical. As with all machine learning, the results reflect the assumptions built into the algorithm.
I was thinking DBSCAN or OPTICS could also be used when the number of categories is unknown, although I am no expert when it comes to understanding what sample size is necessary.
Scikit-learn already has a number of techniques implemented to do this, though they don't scale to large numbers of data points: Affinity Propogation and Mean Shift (mentioned in the cheat sheet). As far as I remember, DBSCAN also does this, but I'm not completely sure.
Yes but the current implementation of DBSCAN in sklearn is not very scalable. I think some contributors want to fix this but I am not sure what the current status is.