聚类算法
聚类算法
质量不错的聚类算法讲解视频:https://www.bilibili.com/video/BV1ST411w7De?t=1.4
相关概念
K-MEANS
需要指定簇的个数K,也就是分成几类
质心:也就是向量各个维度取平均
距离的度量:常用欧几里得距离和余弦相似度
优化的目标如下,其中C为质心,dist为距离的度量
- 随机初始化K个点,然后根据这些点进行聚类
- 重新计算质心,然后重新进行一轮的计算
- 直到所有的点不再发生变化
优点:简单快速,适合常规数据集
缺点:
- K值难以确定
- 复杂度和样本呈线性关系
- 很难发现任意形状的簇,比如一个圆形和圆心
一个很有趣的K-MEANS在线实验(可以可视化):https://www.naftaliharris.com/blog/visualizing-k-means-clustering/
值得注意的是,K-MEANS若初始值选的不好,结果可能差异非常大
DBSCAN
快速了解DBSCAN的流程:https://www.bilibili.com/video/BV17L4y147W2?t=1.7
核心点:若某点P的密度达到算法设定的阈值则P为核心点
直接密度可达:若某点p在点q的r邻域内,且q是核心点则p-q直接密度可达
密度可达:若有一个点的序列比如q0,q1,q2,任意两个相邻的p都是直接密度可达的, 则q0到q2密度可达,说白了就是直接密度可达的"传播"
噪声点:不属于任何一个簇
参数的选择:
一般来说,在数据集中任选一个点p,计算p到其它点的距离,然后进行排序,寻找突变点,据此选择半径。阈值在距离中选择,一般取的比较小。
优点:
- 不需要指定簇的个数
- 可以发现任意形状的簇
- 擅长找到离群点
- 只需要两个参数
缺点:
- 高纬度数据优点困难
- 参数对结果影响非常大,难以选择
- 效率低
DBSCAB在线的实验(数据可视化): https://www.naftaliharris.com/blog/visualizing-dbscan-clustering/
聚类算法评估指标
准确率accuracy
https://blog.csdn.net/qq_43498345/article/details/120271604
accuracy=
同质性Homogeneity
https://zhuanlan.zhihu.com/p/145989213
同质性用来衡量聚类结果中每个集群是否只包含一个类别的样本,也就是所有的簇中分类完全正确的比例,取值在0到1之间,0最差,1最好
完整性completeness
https://zhuanlan.zhihu.com/p/145989213
完整性用来衡量聚类结果中每个真实类别
是否都分配到同一个集群中,取值在也0到1之间,0最差,1最好