目录
sklearn提供了其他很多聚类算法
一、Agglomerative clustering
1.1 凝聚聚类算法简介
- cluster的层次结构是自下而上构建的。想象许多微小的气泡漂浮在水上并逐渐彼此附着,直到只有一个大的气泡为止。
- 在每次迭代中,凝聚聚类连接最近的一对聚类(从单个样本开始)。
- 如果为合并的每对clusters绘制一棵带有分支的树,则会得到一个二叉树,其中leaves是各个样本实例。
- 这种方法可以很好地扩展到大量实例或集群,它可以捕获各种形状的cluster,它生成灵活且信息丰富的cluster树,而不是强迫您选择特定的cluster规模,并且可以与任何成对的距离一起使用
- 如果提供连接矩阵(connectivity matrix),它可以很好地扩展到大量样本。
- connectivity matrix 是一个稀疏的m×m矩阵,指出哪些样本对(pairs of instances)是邻居,通过
sklearn.neighbors.kneighbors_graph()
获得 - 没有连接矩阵,该算法就无法很好地扩展到大型数据集。
二、Birch 聚类算法
2.1 简介
这个算法专门为大型数据集设计的,它可以比KMeans还快,且结果差不多。
但要注意的是属性数量不能太大( features < 20)
它在训练过程中构建了一个树结构,其中仅包含足够的信息来把每个新样本快速分配给cluster,而不必将所有样本存储在树中:这允许它使用有限的内存,同时处理庞大的数据集。
三、Mean-shift 算法
3.1简介
- 该算法首先在每个实例上放置一个圆心,然后为每个圆计算其中所有实例的均值,然后移动圆,使其以均值为中心。
- 接下来,迭代此均值平移(mean-shift)步骤,直到所有圆都停止移动为止。(即,直到每个圆都以其包含的样本的均值为中心)
- 该算法将圆向更高密度的方向移动,直到每个圆都找到了局部最大密度。
- 最后,那些样本的圆落在同一位置(或足够近)的,都分配给同一cluster。Finally, all the instances whose circles have settled in the same place (or close enough) are assigned to the same cluster.
这个算法和DBSCAN很像,它也能找出任何数量任何形状的clusters,且只有一个超参数–就是圆的半径
叫做bandwidth
,并且基于局部密度估计。
然而这个算法,当簇具有内部密度变化时,倾向于将簇切成碎片。并且它的计算复杂度是O(m^2),所以不适合大规模数据
四、Affinity propagation
4.1 简介
这个算法使用一种投票系统(voting system)。在该系统中,样本对相似的样本进行投票以作为其代表,一旦算法收敛,每个代表及其选民将组成一个集群。
该算法可以检测任意数量的大小不同的簇,然而计算复杂度是O(m^2),所以不适合大规模数据
五、Spectral clustering
5.1简介
- 本算法采用的样本之间的相似性矩阵,并从中产生一个低维嵌入this algorithm takes a similarity matrix between the instances and creates a low-dimensional embedding from it. 这个算法能降低维度
- 然后在这个低维空间中使用其他聚类算法(sklearn中使用KMeans)
- spectral clustering可以捕获复杂的聚类结构,也可以用于剪切图片cut graphs(例如,识别社交网络上的朋友聚类),但是它无法很好地扩展到大量实例,并且在各个clusters的大小差异很大时表现不好。