I've just performed unsupervised clustering (using DBSCAN) on a dataset for which I have no expert knowledge on.

I'm interested in working out which features had the greatest impact on my clustering.

For instance, I'd like to know if there is a trend in the points labelled as noise.

Any good tips? (Im using Pandas+Numpy for analysis)

If it helps, my distance metric is Cosine.

  • $\begingroup$ I've been reading about the Silhouette coefficient which seems useful $\endgroup$
    – oliw
    Nov 24, 2014 at 21:46
  • $\begingroup$ The "biggest impact" features are those which differentiate the clusters most strongly. So, perform a series of ANOVA or such, and look at t-values or p-values (without interpreting it as "significance"). $\endgroup$
    – ttnphns
    Nov 25, 2014 at 8:05
  • $\begingroup$ @oliw Silhouette only makes sense for k-means and thelike, because it assumes clusters to be convex and to have approximately the same size. It will fail on recognizing good DBSCAN results. $\endgroup$ Nov 28, 2014 at 9:39

1 Answer 1


Consider an indirect evaluation of your features.

  1. Train a (feature-selecting!) classificator like random forests on your cluster labels
  2. Validate that the classificator works well for this data set, otherwise try other classificators, parameters etc.
  3. Inspect the classificator for the most important features.

DBSCAN doesn't select features, and there is no obvious way to identify the features which have the most impact. However, random forests and decision trees can be used for this. So by training a classifier on the clusters, you can identify which features are most relevant for transferring the cluster structure to new objects.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.