聚类是无监督学习:将数据对象划分为多个组 (簇),使得:
- 簇内相似度高 (Intra-class similarity is high)
- 簇间相似度低 (Inter-class similarity is low)
主要方法
- 划分法:K-Means,K-Medoids
- 层次法:Agglomerative (凝聚),Divisive (分裂)
- 基于密度:DBSCAN (能发现任意形状簇)
距离度量
- 欧氏距离
Euclidean最常用。 - 对于二元变量,可用
Jaccard系数。
# K-Means 算法
输入: K (簇的数量)
步骤:
- 初始化:随机选择 K 个点作为初始质心 (Centroids)。
- 分配:计算每个点到 K 个质心的距离,将其分配给最近的质心。
- 更新:重新计算每个簇的平均值,作为新质心。
- 迭代:重复 2-3 步,直到质心不再变化或达到最大迭代次数。
缺点:
- 需预设 K;
- 对初始值敏感;
- 对离群点敏感;
- 只能发现球状簇。
# 聚类评估
肘部法则 (Elbow Method):
绘制 SSE (簇内误差平方和) 随 K 变化的曲线。选择下降幅度骤减的转折点。
# 层次聚类 (凝聚型)
策略:自底向上。开始每个点是簇,每次合并最近的两个。
簇间距离定义:
- 单链接 (Min): 最近点距离 (易链状)
- 全链接 (Max): 最远点距离 (抗噪)
- 平均链接 (Avg): 所有点对平均