聚类算法在许多领域都有重要的作用,帮助人们从大规模和复杂的数据中发现模式、提取信息和做出决策。
聚类算法也可以作为分类算法的预处理步骤,帮助对数据进行特征提取和降维,以改善分类的性能。
选择聚类数目:
确定要将数据集分成的聚类数目k。
初始化聚类中心:
随机选择k个数据点作为初始的聚类中心,或使用其他初始化方法。
迭代聚类过程:
进行以下步骤,直到满足终止条件(例如达到最大迭代次数或聚类中心的变化小于某个阈值):
聚类结果:得到最终的聚类结果,每个数据点都被分配到一个聚类中心。
K-means算法对初始聚类中心的选择比较敏感,不同的初始选择可能会导致不同的聚类结果。为了克服这个问题,可以尝试多次运行K-means算法,每次使用不同的初始聚类中心,并选择聚类结果最好的一次。
误差平方和(Sum of Squared Errors,SSE)是一种常用的评估指标,用于衡量聚类算法(如K-means)的聚类质量。它的计算原理如下:
SSE的计算可以表示为以下公式:
S
S
E
=
Σ
(
d
i
s
t
a
n
c
e
(
p
o
i
n
t
,
c
e
n
t
e
r
)
2
)
SSE = Σ (distance(point, center)²)
SSE=Σ(distance(point,center)2)
其中,distance(point, center)表示数据点与所属聚类中心之间的欧氏距离,Σ表示对所有数据点求和。
SSE评估的原理是,当聚类效果较好时,同一聚类中的数据点应该相互靠近,与其他聚类中的数据点相对较远。因此,同一聚类中的数据点与其所属聚类中心的距离应该较小,导致误差平方较小。而不同聚类中的数据点与其所属聚类中心的距离较大,导致误差平方较大。因此,SSE较小表示聚类效果较好,各个聚类紧密且分离明显。
"肘"方法(Elbow method)是一种常用的方法,用于选择K-means聚类算法中最佳的聚类数目K。如上图所示,K=3这个拐点是最佳聚类数目。其评估原理如下:
"肘"方法的目标是找到一个合适的聚类数目K,使得增加K值之后,SSE值的下降趋势发生明显的改变,即出现一个拐点。这个拐点对应的K值即是最佳的聚类数目,可以提供合理的聚类解决方案。
轮廓系数(Silhouette coefficient)是一种常用的聚类算法评估方法,用于衡量聚类结果的质量和紧密度。其评估原理如下:
轮廓系数的取值范围为[-1, 1],其中:
通过计算整个数据集的平均轮廓系数S,可以评估整体聚类结果的质量。较高的平均轮廓系数表示聚类结果较好,各个簇之间紧密且分离明显;较低的平均轮廓系数表示聚类结果较差,各个簇之间重叠程度较高。
聚类算法的优点:
可以考虑每个数据点与其所属簇内其他数据点的相似度以及与其他簇的相异度,提供了对聚类质量的综合评估。
聚类算法的缺点:
然而,它也存在一些限制,如对于不规则形状的聚类结果评估可能不准确,并且对于聚类数目的选择没有明确的指导。
CH系数(Calinski-Harabasz coefficient)是一种聚类算法评估方法,用于衡量聚类结果的紧密度和分离度。其评估原理如下:
对于聚类结果,计算簇内离散度(intra-cluster dispersion)和簇间离散度(inter-cluster dispersion)。
簇内离散度度量了簇内数据点之间的相似程度,可以使用平均欧氏距离、平均余弦相似度等。
簇间离散度度量了不同簇之间的差异程度,可以使用欧氏距离、余弦相似度等。
计算CH系数:
其中,B为簇间离散度的总和,W为簇内离散度的总和,k为聚类数目,n为数据点总数。
CH系数的取值范围为[0, +∞],较大的CH系数表示聚类结果较好,簇内离散度小、簇间离散度大,簇与簇之间分离明显。较小的CH系数表示聚类结果较差,簇内离散度大、簇间离散度小,簇与簇之间重叠程度高。
然而,CH系数对于聚类形状和分布的偏好可能存在一定的偏差,因此在实际应用中,还需要结合其他评估指标和领域知识来进行综合评估和选择最佳的聚类结果。
CH需要达到的目的:
用尽量少的类别聚类尽量多的样本,同时获得较好的聚类效果。