spectral-cluster聚类算法详解

spectral clustering,称之为谱聚类算法,和近邻传播AP算法一样,也是基于图论的算法,都是将样本点两两相连,构成图这一数据结构,不同的是,谱聚类是通过切图的方式来划分不同的cluster, 其思想是使得子cluster内部边的权重之和尽可能高,而不同子cluster之间边的权重之和尽可能低。
要理解该算法,首先要搞清楚以下几个基本概念

1.  邻接矩阵

英文为Adjacency Matrix, 是用来描述图这一结构的最常见方法,示例如下

上图中,如果两个点相连,即存在边,在邻接矩阵中,对应的值为1, 否则为0。

在谱聚类算法中,对边定义了权重,所以就需要在是否相连的基础上引入权重的定量指标,基本思想是在相似度的基础上进一步操作,这里的相似度采用欧式距离来衡量,常见的方法有以下3种

1)

邻近法

定义一个阈值

,欧式距离大于阈值,则权重为0,否则为

,对应的公式如下

2)K近邻法

此方法又细分为两种,第一种对应的公式如下

第二种对应的公式如下

与第一种刚好相反。但是都应用了高斯核函数。

3)全连接法

不论点的距离远近,权重统一定义如下

高斯核函数,也称之为径向基函数,简写RBF, 在scikit-learn中,默认就是采用了基于高斯核函数的全连接法来构建权重矩阵。

2.  度矩阵

英文为Degree Matrix,一个顶点的度表示为与该点新连的边的个数,示例如下

可以看到,对于度矩阵而言,只有对角线有值,其他都为0。

3.  拉普拉斯矩阵

英文为laplacian Matrix, 请定义的方式是L = D -A, D 表示的是度矩阵,A表示的是邻接矩阵,图示如下

上述概念的定义都是为了更方便的理解后续的切图运算,谱聚类算法的本质是通过切图来划分不同的cluster, 图示如下

具体地,有以下两种切图的方法

1. RatioCut 切图

2. Ncut切图

两种方法具体的数学推导比较繁琐,但是共性在于都需要对拉普拉斯矩阵进行PCA降维,挑选最小的K个特征,并标准化得到特征矩阵,最后在特征矩阵的基础上进行传统的聚类,比如k-means聚类。

在scikit-learn中,使用谱聚类的代码如下

>>> from sklearn.cluster import SpectralClustering
>>> import numpy as np
>>> X = np.array([[1, 1], [2, 1], [1, 0],[4, 7], [3, 5], [3, 6]])
>>> clustering = SpectralClustering(n_clusters=2,assign_labels="discretize",random_state=0).fit(X)
>>> clustering
SpectralClustering(assign_labels='discretize', n_clusters=2, random_state=0)
>>> clustering.labels_
array([1, 1, 1, 0, 0, 0], dtype=int32)

对于谱聚类而言,由于只需要样本点的相似度矩阵,所以对于稀疏数据的聚类很有效,同时由于采用了降维技术,对于高维数据的聚类也很有效果,但是同时该算法的结果又对于两个因素非常敏感,权重矩阵的构建方法以及特征矩阵的聚类算法。

·end·
(0)

相关推荐

  • R语言谱聚类、K-MEANS聚类分析非线性环状数据比较

    原文链接:http://tecdat.cn/?p=23276 有些问题是线性的,但有些问题是非线性的.我假设,你过去的知识是从讨论和解决线性问题开始的,这是一个自然的起点.对于非线性问题的解决,往往涉 ...

  • 谱聚类(spectral clustering)原理总结

    谱聚类(spectral clustering)是广泛使用的聚类算法,比起传统的K-Means算法,谱聚类对数据分布的适应性更强,聚类效果也很优秀,同时聚类的计算量也小很多,更加难能可贵的是实现起来也 ...

  • 到底什么是谱聚类算法?

    谱聚类算法是目前最流行的聚类算法之一,其性能及适用场景优于传统的聚类算法如k-均值算法. 本文对谱聚类算法进行了详细总结,内容主要参考以下论文,若对谱聚类算法有不理解的地方,欢迎交流. 论文名称: & ...

  • Affinity Propagation聚类算法详解

    Affinity Propagation简称AP, 称之为近邻传播算法, 是一种基于图论的聚类算法.将所有样本点看做是一个网络中的节点,图示如下 在样本点构成的网络中,每个样本点都是潜在的聚类中心,同 ...

  • OPTICS聚类算法详解

    DBSCAN算法对于邻域半径eps和最小样本数minPoints这两个参数比较敏感,不同的参数取值会产生不同的聚类效果.为了降低参数设置对聚类结果造成的不稳定性,在DBSCAN算法的基础上,提出了OP ...

  • DBSCAN聚类算法详解

    DBSCAN全称如下 Density-Based Spatial Clustering of Applications with Noise 是一种基于密度的聚类算法,所谓密度,就是说样本的紧密程度对 ...

  • BIRCH聚类算法详解

    BIRCH算法全称如下 Balanced Iterative Reducing and Clustering Using Hierarchies 属于树状结构的层次聚类算法的一种,其树状结构的构建是自 ...

  • Kmeans聚类算法详解

    输入:样本集 D = { x 1 , x 2 , x 3 , . . . , x m } D=\left \{ x_{1},x_{2},x_{3},...,x_{m} \right \} D={x1​ ...

  • CTC算法详解

    和其它文章初衷一样,网上解释很多,但是讲的不是很明白,在看完几篇参考博客后特此记录 简介 先拿语音识别任务来说,如果现在有一个包含剪辑语音和对应的文本,我们不知道如何将语音片段与文本进行对应,这样对于 ...

  • 十大排序算法详解,基本思想+动画演示+C语言实现,太肝了!

    下面的99%的代码都是手动敲出来的,参考了诸多资料,已经经过测试,可以放心食用. 1.冒泡排序 基本思想 冒泡排序基本思想是依次比较两个相邻的元素,如果顺序(如从大到小.首字母从Z到A)错误就把他们交 ...

  • 道路识别算法详解

    本文详细描述了当前代码中(git 版本: 16b521b12d2e3bdc00bd996acafe4526f1d1cb9a)道路识别的算法. 如果没有特殊说明,下文中所说的"算法" ...

  • 木工、架子工、材料用量算法详解,干货满满

    建筑工程人 11篇原创内容 公众号 一模板的计算 一.根据混凝土量快速估算模板用量 1.适用情况:一般用于工程开工前期,在已知混凝土用量的情况下估算模板用量,以初步估算工程周转材料成本投入数量,为筹措 ...