Clustering of large, heavy-tailed dataset I have a dataset of 130k internet users characterized by 4 variables describing users' number of sessions, locations visited, avg data download and session time aggregated from four months of activity.
Dataset is very heavy-tailed. For example third of users logged only once during four months, whereas six users had more than 1000 sessions.
I wanted to come up with a simple classification of users, preferably with indication of the most appropriate number of clusters.
Is there anything you could recommend as a solution?
 A: You could of for a supervised self-organizing map (e.g. with kohonen package for R), and use the login frequency as dependent variable. That way, the clustering will focus on separating the frequent visitors from the rare visitors. By plotting the number of users on each map unit, you may get an idea in clusters present in your data.
Because SOMs are non-linear mapping methods, this approach is particularly interesting for tailed data.
A: This is problem with clustering, you can't tell what is considered a cluster. I would see what is the reason behind clustering users, specify my threshold value, and use hierarchical clustering.
In my experience, one has to set either the number of cluster needed, or the threshold value (the distance value that binds two data point together). 
A: K-Means clustering should work well for this type of problem.  However, it does require that you specify the number of clusters in advance.
Given the nature of this data, however, you may be able to work with a hierarchical clustering algorithm instead.  Since all 4 variables are most likely fairly highly correlated, you can most likely break out clusters, and stop when you reach a small enough distance between clusters.  This may be a much simpler approach in this specific case, and allows you to determine "how many clusters" by just stopping as soon as you've broken your set into fine enough clusters.
A: You might consider transforming (perhaps a log) the positively skewed variables.
If after exploring various clustering algorithms you find that the four variables simply reflect varying intensity levels of usage, you might think about a theoretically based classification. Presumably this classification is going to be used for a purpose and that purpose could drive meaningful cut points on one or more of the variables.
