Davies–Bouldin index

From Wikipedia, the free encyclopedia
Jump to: navigation, search

The Davies–Bouldin index (DBI) (introduced by David L. Davies and Donald W. Bouldin in 1979) is a metric for evaluating clustering algorithms.[1] This is an internal evaluation scheme, where the validation of how well the clustering has been done is made using quantities and features inherent to the dataset. This has a drawback that a good value reported by this method does not imply the best information retrieval.


Let Ci be a cluster of vectors. Let Xj be an n dimensional feature vector assigned to cluster Ci.

 S_i =  \frac{1}{T_i} \sum_{j=1}^{T_i} {\left|\left| X_j-A_i\right|\right|_p}

Here A_i is the centroid of Ci and Ti is the size of the cluster i. Si is a measure of scatter within the cluster. Usually the value of p is 2, which makes this a Euclidean distance function between the centroid of the cluster, and the individual feature vectors. Many other distance metrics can be used, in the case of manifolds and higher dimensional data, where the euclidean distance may not be the best measure for determining the clusters. It is important to note that this distance metric has to match with the metric used in the clustering scheme itself for meaningful results.

 M_{i,j} = \left|\left|A_i-A_j\right|\right|_p = \Bigl(\displaystyle\sum_{k=1}^{n}\left|a_{k,i}-a_{k,j}\right|^p\Bigr)^{\frac 1 p}
 M_{i,j} is a measure of separation between cluster C_i and cluster C_j.
 a_{k,i} is the kth element of A_i, and there are n such elements in A for it is an n dimensional centroid.

Here k indexes the features of the data, and this is essentially the Euclidean distance between the centers of clusters i and j when p equals 2.


Let Ri,j be a measure of how good the clustering scheme is. This measure, by definition has to account for Mi,j the separation between the ith and the jth cluster, which ideally has to be as large as possible, and Si, the within cluster scatter for cluster i, which has to be as low as possible. Hence the Davies–Bouldin index is defined as the ratio of Si and Mi,j such that these properties are conserved:

  1.  R_{i,j} \geqslant 0 .
  2.  R_{i,j} = R_{j,i} .
  3. When  S_j \geqslant S_k and  M_{i,j} = M_{i,k} then  R_{i,j} > R_{i,k} .
  4. When  S_j = S_k and  M_{i,j} \leqslant M_{i,k} then  R_{i,j} > R_{i,k} .

With this formulation, the lower the value, the better the separation of the clusters and the 'tightness' inside the clusters.

A solution that satisfies these properties is:

 R_{i,j} = \frac{S_i + S_j}{M_{i,j}}

This is used to define Di:

 D_i \equiv \max_{j \neq i} R_{i,j}

If N is the number of clusters:

 \mathit{DB} \equiv \frac{1}{N}\displaystyle\sum_{i=1}^N D_i

DB is called the Davies–Bouldin index. This is dependent both on the data as well as the algorithm. Di chooses the worst-case scenario, and this value is equal to Ri,j for the most similar cluster to cluster i. There could be many variations to this formulation, like choosing the average of the cluster similarity, weighted average and so on.


These conditions constrain the index so defined to be symmetric and non-negative. Due to the way it is defined, as a function of the ratio of the within cluster scatter, to the between cluster separation, a lower value will mean that the clustering is better. It happens to be the average similarity between each cluster and its most similar one, averaged over all the clusters, where the similarity is defined as Si above. This affirms the idea that no cluster has to be similar to another, and hence the best clustering scheme essentially minimizes the Davies–Bouldin index. This index thus defined is an average over all the i clusters, and hence a good measure of deciding how many clusters actually exists in the data is to plot it against the number of clusters it is calculated over. The number i for which this value is the lowest is a good measure of the number of clusters the data could be ideally classified into. This has applications in deciding the value of k in the kmeans algorithm, where the value of k is not known apriori. The SOM toolbox contains a MATLAB implementation.[2] A MATLAB implementation is also available via the MATLAB Statistics and Machine Learning Toolbox, using the "evalclusters" command.[3]

External links[edit]

Notes and references[edit]

  1. ^ Davies, David L.; Bouldin, Donald W. (1979). "A Cluster Separation Measure". IEEE Transactions on Pattern Analysis and Machine Intelligence. PAMI-1 (2): 224–227. doi:10.1109/TPAMI.1979.4766909.  edit
  2. ^ "Matlab implementation". Retrieved 12 November 2011. 
  3. ^ http://www.mathworks.com/help/stats/evalclusters.html