聚类算法原理

工具文档

August 7, 2024
2024 技术

1. K-means(EM 算法)

1. 概念
存储用于定义聚类的 K 个质心。点离哪个质心最近,就被认为属于哪个类;
K-means 通过交替进行以下两步找到质心:
1) 根据当前质心划分数据点;
2) 根据当前数据点计算聚类的质心;

2. 算法详解
1) 初始化质心,通常会随机选择 K 个数据点
2) 将每个点归类,离哪个质心最近,就属于哪一类
3) 计算当前簇类的平均值,找到新的质心
4) 重复 2、3 步

3. WCSS(Within-Cluster-Sum-Of-Squares)
每一个数据点到其所属质心的距离的平方和,就是 WCSS。

4. Elbow Curve
x 轴就是 K 值,y 轴就是 WCSS, 画出曲线。将其中下降剧烈的点称为肘点,肘点对应的 K 值就是最佳 K 值。

5. 优点
1) 适合高斯分布数据集
2) 适合同质数据
3) 适合聚类之间界限清晰,不重叠的情况
4) 适合中等大小的数据集

6. 缺点
1) 不适合复杂分布的数据集
2) 需要提前预设 K 值,最优解查找不佳
3) 不适合大数据集,计算成本高昂
4) 对初始中心敏感,容易受到数据中的噪声和异常值的影响
5) 对噪声和异常值敏感

7. 应用场景
图像压缩(比如原先是 1000W 像素,通过重新聚类成 100W 类,使用一个新的像素均值代替)

2. AGNES(Agglomerative Nesting Clustering)

1. 概念
凝聚层次聚类算法,相似度高的被聚类为一簇。
层次聚类算法通常有两种实现思路:
1) Agglomerative(凝聚)
2) Divisive(分裂)

2. 算法详解
1) 每一个数据点都初始化为一个簇
2) 找到距离最近的两个簇,合并为一个簇 A
度量簇与簇之间的距离(欧式距离、曼哈顿距离):
+ 单链接:最近点之间的距离
+ 全链接:最远点之间的距离
+ centroid method:质心距离
+ ward method:最小化聚类的方差
3) 反复执行 2,直到最后剩下一个簇。
4) 希望簇间距离越大越好,簇内距离越小越好,来判断类别; 或查看聚类每个后续阶段方差的百分比增加的趋势,找到方差减少比较急剧的点。

3. 优点
1) 具有明显的层次结构的数据;
2) 密度变化的数据;
3) 非球形分布的数据;
4) 数据点较少的数据;
5) 数据尺度差异较大的数据;

4. 缺点
1) 数据不平衡,可能会合并较大的聚类,而忽略较小的聚类
2) 不适合复杂分布的数据
3) 不适合高维数据,在高维空间中,欧式距离可能不再有效
4) 不适合大规模数据集,计算成本高昂

3. DIANA(Divisive clustering)

1. 概念
层次序列的一种,自顶向下的思想。

2. 算法详解
1) 将所有的数据点看成一个簇
2) 计算每一个点到其它点的距离之和的平均值
3)