其他
AI综述专栏 | 常用聚类算法综述
聚类的概念
聚类算法的分类
K-Means
随机确定k个初始点u1, u2...uk作为聚类质心 重复以下过程直到收敛: 对于每一个样例,找到离它最近的质心作为label: 对于每一个类j, 更新其质心:
必须提前知道"k", 也就是有多少个簇 容易陷入局部最优 数据必须符合“数据之间的相似度可以使用欧式距离衡量”,这个是什么意思呢,看下图,这种数据的分布,样本点的距离不能简单地用欧式距离来衡量,否则分类效果会非常差。这里的距离衡量应该是“测地距离”,也就是样本沿着曲面到达另一个样本点的距离。如果在这种数据空间想要使用kmeans,必须先进行空间的转化
基于密度的算法-DBSCAN
首先将数据集D中所有的对象标记为未处理状态:
对数据集D中的每个对象p:
if p已经归入了某个簇:
continue
else:
检查对象p的Eps领域 NEps(p)
if NEps(p)包含的对象数小于MinPts:
标记对象p为边界点或者噪声点;
else:
标记对象p为核心点,并建立新簇C,将p领域内的所有点加入C
for (NEPs(p)中所有尚未处理的对象q):
检查对象q的领域NEps(q), 若NEps(q)包含至少MInPts个对象,则将NEps(q)中未归入
任何一个簇的对象加入C
不需要指定簇的数目(不需要 k) 可以发现任意形状的聚类簇 对噪声不敏感
需要设置半径Eps和MinPts, 空间聚类密度不均匀时难以设置参数,所以有一个问题就是,在数据集A上挑好的参数很可能到数据集B上就不能用了 随着数据量的增大,计算量显著增大,反正大规模数据集用DBSCAN很可能会崩的
层次密度聚类 HDBSCAN
使用相互可达距离替换欧氏距离,该距离可以使得密度低的点离密度高的区域更远,减少dbscan对Eps阈值的依赖性 使用最小生成树构建层次聚类模型,引入层次聚类思想 对最小生成树的最小子树做了限制,减少计算量,同时保证生成的类簇不要过小 使用“簇稳定性”的度量方式自动划分类簇,不需要自行设定阈值
假设有 n 个待聚类的样本 (初始化)将每个样本都视为一个簇; 计算各个聚类之间的相似度; 寻找最近的两个聚类,将他们归为一类; 重复步骤二,步骤三;直到所有样本归为一类。
基于Graph的聚类算法--Chinese Whisper
根据输入的相似度的衡量方式对样本建图,根据相似图建立邻接矩阵W 计算出拉普拉斯矩阵L, 其中L=D-W, D为度矩阵 计算L的最小的k个特征向量u1, u2,...,uk(此步相当于降维),将这些向量组成为n*k维的矩阵U 将U中的每一行作为一个样本,共n个样本,使用k-means对这n个样本进行聚类 得到簇划分C(c1,c2,...ck).
最新
基于GNN的聚类
Learning to Cluster Faces on Affinity Graphy(CVPR2019)
第一篇paper就是基于图神经网络(GCN)的聚类算法
算法流程(级联式的算法流程,类似mtcnn):
CDP(ECCV2018)
聚类算法选型
参考文献
https://zhuanlan.zhihu.com/p/20432322
https://pro.arcgis.com/zh-cn/pro-app/tool-reference/spatial-statistics/how-density-based-clustering-works.htm
本文版权归《Slumbers》,转载请自行联系
历史文章推荐
CCAI 2019 | 这是一封来自2019中国人工智能大会的邀约
CVPR2019 |《胶囊网络(Capsule Networks)综述》,附93页PPT下载
AiLearning:一个 GitHub万星的中文机器学习资源
Multi-task Learning(Review)多任务学习概述
医学图像处理与深度学习入门
AI综述专栏 | 多模态机器学习综述
深度学习中不得不学的Graph Embedding方法
学习率和batchsize如何影响模型的性能?
旷视研究院新出8000点人脸关键点,堪比电影级表情捕捉
你正在看吗?👇