MATLAB: Does the function silhouette give a value of 1 for singleton clusters

clusterclusteringsilhouetteStatistics and Machine Learning Toolbox

Why does the function "silhouette" give a value of 1 for singleton clusters instead of 0?

Best Answer

The silhouette value for a point is supposed to give a measure of how close the point is to its own cluster versus how close it is to other clusters. For non-singleton clusters a value of 0 for a point would mean that the point is on the border between its own cluster and a neighboring cluster. This interpretation would no longer make sense for a singleton cluster. On the other hand if there is only a single point in a cluster you could consider that that cluster is defined by that single point, so even though you cannot find the distance from that point to other points in the same cluster, it makes sense that it belongs in that cluster more than any other cluster.
Another justification is that silhouette plots are often used for analysis of quality of clustering. Typically you would want the silhouette scores in each cluster to be near the average silhouette score of all points. A silhouette score of 0 will be below the average for any reasonable clustering, so one could conclude that the clustering was bad even if having a singleton cluster is completely reasonable (one point very far away from everything else).
Related Question