目录
2.5.1 SC轮廓系数(Silhouette Coefficient)
1 核心思想
聚类算法的核心思想是将数据集中的样本划分为若干个不相交的子集,即“簇”。每个簇可能对应于一些潜在的概念或类别。聚类算法的目标是让同一簇内的数据样本尽可能相似,而不同簇间的数据样本尽可能不相似。这种相似性通常基于数据样本之间的某种距离度量来定义,如欧氏距离、余弦相似度等。
聚类算法是无监督学习方法的一种,它不需要预先设定数据标签或类别信息,而是通过分析数据样本之间的内在规律和特征来自动划分数据类别。聚类算法的种类繁多,包括基于划分的聚类算法(如K-means)、基于层次的聚类算法、基于密度的聚类算法(如DBSCAN)、基于网格的聚类算法、基于模型的聚类算法等。(本处只介绍K-means算法)
2 K-means算法
2.1 算法概述
K-means算法是一种基于迭代的聚类算法,它试图将数据点划分为K个集群(或称为簇),使得每个数据点都属于离其最近的均值(即聚类中心或质心)所对应的集群。K-means算法的核心是更新质心和分配数据点到最近的质心。
2.2 算法步骤
- 初始化:
- 选择K个点作为初始质心。这可以是随机选择,或者通过一些启发式方法(如K-means++)来选择,以加速收敛和避免糟糕的局部最优解。
- 分配数据点到最近的质心:
- 对于数据集中的每个数据点,计算它与K个质心之间的距离(如欧氏距离)。
- 将数据点分配给距离它最近的质心所对应的集群。
- 更新质心:
- 对于每个集群,计算其内部所有数据点的均值(即新的质心)。
- 将每个集群的质心更新为该均值。
- 迭代优化:
- 重复步骤2和3,直到满足某个停止条件。常见的停止条件包括:
- 质心的位置不再发生显著变化(即收敛)。
- 达到预设的最大迭代次数。
- 准则函数(如SSE)的变化小于某个阈值。
- 重复步骤2和3,直到满足某个停止条件。常见的停止条件包括:
2.3 数学原理
-
距离度量:通常使用欧氏距离来度量数据点与质心之间的距离。但在某些情况下,也可以使用其他距离度量,如曼哈顿距离、余弦相似度等。
-
准则函数(SSE):K-means算法使用均方差(Sum of the Squared Errors, SSE)作为准则函数,也称为损失函数。SSE表示每个数据点到其所属集群的质心的距离的平方和。数学上,SSE可以表示为:
其中,Ci是第i个集群的数据点集合,μi是第i个集群的质心,∣∣x−μi∣∣是数据点x与质心μi之间的距离。
- 收敛性:虽然K-means算法不保证找到全局最优解(即SSE的最小值),但在某些条件下,它可以保证收敛到局部最优解。收敛性通常通过观察质心的变化或SSE的变化来判断。
2.4 ‘肘’方法确定K值
2.4.1 原理
“肘”方法(Elbow Method)是一种常用于确定K-means聚类算法中最佳聚类数(K值)的启发式方法。该方法基于SSE(Sum of the Squared Errors,误差平方和)与聚类数K之间的关系来确定最佳的K值。
2.4.2 步骤
以下是使用“肘”方法确定K值的步骤:
- 计算不同K值的SSE:首先,对于一系列不同的K值(例如从1开始逐渐增加),对给定的数据集进行K-means聚类,并计算每个K值对应的SSE。
- 绘制SSE图:将每个K值及其对应的SSE绘制在一张图表上。通常,横轴表示K值,纵轴表示对应的SSE。
- 寻找“肘点”:在SSE图上,观察SSE随K值变化的趋势。通常,随着K值的增加,SSE会逐渐减小,因为更多的聚类可以更好地拟合数据。但是,当K值增加到某个点后,SSE的减小速度会明显放缓,形成一个类似于“肘部”的弯曲点。这个点就是所谓的“肘点”。
- 选择肘点对应的K值