当我们在做Kmeans聚类的准备工作时,通常会用到手肘法(elbow method)或者轮廓系数(silhouette score)去找到最佳簇类个数。
对于轮廓系数寻找法,理论上来说,轮廓系数会随着聚类个数的增加而增加,再而减少,直到我们找到最大的轮廓系数对应的簇类个数。如下图。

但实际在某些情况下,会出先减少后增加再减少的“过山车”or“凸点”情况,这其中是由于数据的特性和聚类算法的性质所导致的。

参考轮廓系数的公式
S(i)=bi−aimax(ai,bi)
S(i)=\frac{b_i-a_i}{max(a_i,b_i)}
S(i)=max(ai,bi)bi−ai
- aia_iai:即样本点i到所属簇类点的平均距离,表示为凝聚度
- bib_ibi:即样本点i到非所属簇类点的平均距离,表示为分离度
当出现轮廓系数在初始阶段比较大情况时,有可能此时bib_ibi远远大于aia_iai,分离度较高,导致aia_iai在增加过程中远不及bib_ibi分离度带来的影响大,而当簇类个数增加时,会使得bib_ibi逐渐减小,此时轮廓系数会变小。当簇类之间的距离区域稳定后,才会慢慢的呈现轮廓系数先升高后降低的趋势。此时的轮廓系数最高点对应的簇类个数可能才作为我们的最佳聚类个数。
话说回来,“过山车”情况是由于数据的特性和聚类算法的性质所导致的,所以我们的在找最佳聚类个数时,可以通过改变Kmeans算法的种子数seed,使得初始化不同簇类中心点的位置不会离得这么远,这样才能做到轮廓系数先增加后减少的趋势。
在Kmeans聚类中,通常使用手肘法和轮廓系数来确定最佳簇类数量。轮廓系数初期可能因高分离度而增大,但随着簇类增加,当簇间距离稳定后,系数会下降。‘过山车’现象可能是数据特性和算法初始化导致的。为找到更准确的最佳聚类数,可以尝试调整Kmeans的种子数以改变簇中心的初始位置。
10万+

被折叠的 条评论
为什么被折叠?



