聚类评价指标
最近在做聚类的项目,聚类得到结果后我们需要知道聚类的好坏,用哪个算法效果比较好。肯定要选择那个最好评价的算法。今天我们就不谈算法只谈算法结果的评价。
我也从网上看了很多的别人写的东西,总之是五花八门的。那下面我们言归正传。
聚类算法是机器学习算法中的一种无监督算法。那么在生活中我们大多数做项目的话其实数据集都是为标定的。我看到许多人有写到通过有label的样本,计算它的混淆矩阵。这不乏是一种办法,那么今天说的方法其实是一种内部方法,就是说通过聚类后的结果label来计算的一种评价指标。
内部有效性指标呢设计的时候从三个方面来看聚类的有效性:
- 度量各个聚类的分离程度,理论上,类分离程度越大,结果越好。
- 度量每个类内的内在紧致性,紧致性越大,聚类效果越好。
- 度量各个类表示的复杂度,在可行的类表示中选择简单的。
Silhouette
首先,我们先看评价指标的其中一个指标 :轮廓系数。
Silhouette 遵循类紧致性。Silhouette值用来描述一个目标对于目标所在簇与其他簇之间的相似性。其范围是从-1~+1,这个值越大表明目标与自己所在簇之间的匹配关系度越高,与其他簇的匹配关系度越低。如果这个值越高,那么聚类结果越好,如果是很小或是负值,那么可能是分簇太多或是太少造成的。
Silhouette是通过一些距离矩阵来计算的。
Silhouette的定义
假设数据集我们已经通过聚类算法分成了很多类。对于目标iii有i∈Cii\in C_ii∈Ci,得到
a(i)=1∣Ci−1∣∑j∈Ci,i≠jd(i,j)a(i) = \frac{1}{\left | C_i -1 \right|}\sum_{j\in C_i,i\neq j}d(i,j)a(i)=∣Ci−1∣1j∈Ci,i=j∑d(i,j)表示i与同簇之间其他目标的平均距离。
这里的d(i,j)d(i,j)d(i,j)是目标i和j在簇CiC_i