轮廓图(Silhouette)

轮廓图(Silhouette)是一种用来刻画聚类效果的度量。详细解释见:http://en.wikipedia.org/wiki/Silhouette_(clustering)

定义为:对于一个样本点 i,其 Silhouette 值为:

Latex Eqation:
s(i)=\frac{b(i)-a(i)}{max\{a(i),b(i)\}}

其中 a(i) 为点 i 与当前所属类的差异度(dissimilarity),通常用到达各点的平均欧氏距离度量。b(i) 表示点 i 与其他各类差异度最小值。

由定义可见,s(i) 接近 1 表示点 i 更倾向于属于当前类,s(i) 接近 0 表示点 i 倾向于在两个类之间,s(i) 接近 -1 表示点 i 倾向于属于其他某一个类。

Matlab 提供了针对 Silhouette 的计算和绘图函数,Demo如下:

Matlab Demo:
X = [randn(10,2)+ones(10,2); 
randn(10,2)-ones(10,2)];
cidx = kmeans(X,2,'distance','sqeuclid');
[s,h] = silhouette(X,cidx,'sqeuclid'); grid on;
输出如下:




原文地址:https://www.cnblogs.com/kidoln/p/2313097.html