原创声明:本文为 SIGAI 原创文章,仅供个人学习使用,未经允许,不能用于商业目的。

其它机器学习、深度学习算法的全面系统讲解可以阅读《机器学习-原理、算法与应用》,清华大学出版社,雷明著,由SIGAI公众号作者倾力打造。

  • 书的购买链接
  • 书的勘误,优化,源代码资源

理解谱聚类

聚类是典型的无监督学习问题,其目标是将样本集划分成多个类,保证同一类的样本之间尽量相似,不同类的样本之间尽量不同,这些类称为簇(cluster)。与有监督的分类算法不同,聚类算法没有训练过程,直接完成对一组样本的划分。

聚类是数据分析中最常用的技术之一,应用领域包括统计,计算机科学,生物,社会科学,心理学等。在要处理经验数据的几乎所有科学领域,我们都需要通过鉴别数据中相似的样本所构成的分组来建立对数据的直观映像。这篇文章介绍谱聚类算法,是对《机器学习与应用》,清华大学出版社,雷明著一书中第18章“聚类算法”中谱聚类算法的扩充,将在第二版中出版。

谱聚类算法是聚类算法家族中相对年轻的成员。与传统的聚类算法如k-means算法、层次聚类、DBSCAN算法等相比,谱聚类具有很多优势。谱聚类算法所得到的结果经常优于传统方法,谱聚类实现起来非常简单,可以用标准的线性代数方法高效求解。

图论中的基本概念

图是离散数学和数据结构中的一个概念。一个图由顶点和边构成,任意两个节点之间可能都有边进行连接。边可以带有值信息,称为权重,例如两点之间的距离。下图是一个简单的图

图的边可以是有向的,也可以是无向的,前者称为有向图,后者称为无向图。可以将地图表示成一个图,每个地点是顶点,如果两个地点之间有路连接,则有一条边。如果这条路是单行线,则边是有向的,否则是无向的。

顶点的度定义为该顶点所关联的边的数量,对于有向图它还分为出度和入度,出度是指从一个顶点射出的边的数量,入度是连入一个节点的边的数量。无向图可以用三元组形式化的表示:

其中V是顶点的集合,E是边的集合,w是边的权重函数,它为每条边赋予一个正的权重值。假设i和j为图的顶点,

为边(i, j)的权重,由它构成的矩阵W称为邻接矩阵。显然,无向图的邻接矩阵是一个对称矩阵。

定义顶点i的加权度为与该节点相关的所有边的权重之和,即邻接矩阵每一行元素之和

定义加权度矩阵D为一个对角矩阵,其主对角线元素为每个顶点带权重的度

其中n为图的顶点数。后面将要介绍的拉普拉斯矩阵则通过邻接矩阵,加权度矩阵计算而得到。

将聚类问题看作图切割问题

谱聚类是一种基于图的机器学习算法。基于图的算法把样本数据看作图的顶点,根据数据点之间的距离构造边,形成带权重的图,然后通过对图进行处理来完成算法所需的功能。对于聚类问题,通过图的切割实现聚类,即将图切分成多个子图,这些子图就是对应的簇。这类算法的典型代表是谱聚类算法。

谱聚类算法构造样本集的邻接图(也称为相似度图),得到图的拉普拉斯矩阵。接下来对矩阵进行特征值分解,通过对特征向量进行处理构造出簇。

算法首先根据样本集构造出带权重的图G,聚类算法的目标是将其切割成多个子图,每个子图即为聚类后的一个簇。假设图的顶点集合为V,边的集合为E。聚类算法将顶点集合切分成k个子集,它们的并集是整个顶点集

任意两个子集之间的交集为空

对于任意两个子图,其顶点集合为A和B,它们之间的切图权重定义为连接两个子图节点的所有边(即跨两个子图的边)的权重之和:

其中w是图中两个顶点之间边的权重。

切图权重可以看作两个子图之间的关联程度,如果两个子图之间没有边连接,则该值为0。从另一个角度看,这是对图进行切割时去掉的边的权重之和。

下图为图切割示意图

上图中有7个顶点,被切割成蓝色和黄色两个子图,虚线边为被切割掉的边,因此切图权重为

2+3=5

对图顶点子集

,定义这种分割的代价为

其中

的补集。该值与聚类的目标一致,即每个子图内部的连接很强,而子图之间的连接很弱,换一种语言来表述就是同一个子图内的样本相似,不同子图之间的样本不相似。但直接通过最小化这个值实现聚类还有问题,它没有考虑子图规模对代价函数的影响,使得这个指标最小的切分方案不一定就是最优切割。因此需要对代价函数进行归一化,具体的方法在后面将会介绍。

为样本集构造邻接图

对于如何从一组数据点

计算出两点间的相似度
或距离
从而构造出一个图,有几种不同的典型方案。如果是构造相似度图,则其目标是对样本点之间的局部邻接关系进行建模。
邻居图。计算任意两点之间的距离,如果距离小于阈值
,则将这两个数据点设置为联通的。由于所有相连的数据点之间的距离大致上有相同的尺度,即各个边的权重没有区分度,最大为
,因此为边加权重不会为从数据构造出的图包含更多的信息。因此,
邻居图通常被认为是无权重的图。

k近邻图。如果顶点

的k个最近的邻居里,则将
设置为联通的。但是,这种定义导致的结果是有向图,因为邻居关系不是对称的,即如果
的k个最近的邻居里,不能推出
的k个最近的邻居里。将图变为无向的方式有两种。第一种方法是忽略边的方向,即如果
的k个最近的邻居里,或者
的k个最近的邻居里,则认为这两点之间是联通的。这种方法生成的图称为k近邻图。第二种是如果
的k个最近的邻居里,并且
的k个最近的邻居里,则认为这两点之间是联通的。这种方法生成的图称为互k近邻图。无论是哪种方式,当建立两个点的连接之后,边的权重设置为两个点之间的相似度。

全连接图。简单的为所有的节点对之间建立起边,边的权重为

。因为图要表达数据的邻接关系,因此要保证相似度函数本身能够对局部邻居关系进行建模,才能构造出有用的图。典型的相似度函数是高斯相似度函数

其中

控制邻域的宽度,是人工设置的参数。这个参数所起的作用类似于
邻居图中的
参数。

图的拉普拉斯矩阵

谱聚类算法基于图的拉普拉斯矩阵,这是图的一种矩阵表示。没有归一化的图拉普拉斯矩阵定义为

其中W为邻接矩阵,D为加权度矩阵,它们的定义在在前面已经给出。下面介绍拉普拉斯矩阵的一些重要性质。

1.对任意的向量

2.拉普拉斯矩阵是对称半正定矩阵。

3.这个矩阵的最小特征值为0,其对应的特征向量为常向量1,即所有分量为1。

4.矩阵L有n个非负实数特征值,并且满足

下面给出证明。根据

的定义,有

因此结论1成立。根据结论1,显然这个矩阵是半正定的,而根据定义,矩阵是对称的的,因此结论2成立。由于

由于D是W经过各列元素累加得到的,因此行列式为0,故0是其特征值。如果

,则有

因此1是对应的特征向量。根据结论1-3可以得到结论4。

需要注意的是,根据定义,这种未归一化的拉普拉斯矩阵不依赖于邻接矩阵W的主对角线元素。除了主对角线元素之外,其他位置的元素都相等的各种不同的矩阵W都有相同的拉普拉斯矩阵。特别是,图中的自边不影响图的拉普拉斯矩阵。

未归一化的图拉普拉斯矩阵以及它的特征值,特征向量可以描述图的多种重要的性质。假设G是一个有非负权重的无向图,其拉普拉斯矩阵L的特征值0的重数k等于图的联通分量的个数

,...,
。特征值0的特征空间由这些联通分量所对应的向量
所张成。

证明如下。先考虑k=1的情况,即图是联通的。假设f是特征值0的一个特征向量,根据特征值的定义有

这是因为

。因为图是联通的,因此所有的
,要让上面的值为0,必定有
。这意味着向量
的任意元素都相等,因此结论成立。

接下来考虑有k个联通分量的情况。不失一般性,我们假设顶点按照其所属的联通分量排序,这种情况下,邻接矩阵是分块矩阵,同样的,拉普拉斯矩阵也是这样的分块矩阵

显然每个子矩阵

自身也是一个拉普拉斯矩阵,对应于这个联通分量。对于这些子矩阵,上面的结论也是成立的,因此L的谱由L_{i}的谱相并构成,L对应的特征向量是
的特征向量,其余位置填充0。由于每个
都是一个联通分量的拉普拉斯矩阵,因此其特征向量的重数为1,对应于特征值0。而L中与之对应的特征向量在第i个联通分量处的值为常数,其他地方为0。因此矩阵L的0特征值对应的特征向量的重数与联通分量的个数相等,并且特征向量是这些联通分量的指示向量。

有两种形式的归一化拉普拉斯矩阵,它们之间密切相关,分别定义为

在这里

是对该矩阵主对角线上的所有元素计算根号值所得到的矩阵。第一种矩阵为对称矩阵,第二种矩阵与随机漫步有密切的联系。接下来介绍这两种矩阵的重要性质。

1.对任意的向量

2.

是矩阵
的特征值,
是特征向量,当且仅当
是阵
的特征值,并且其特征向量为

3.

是矩阵
的特征值,
是特征向量,当且仅当
是下面广义特征值问题的解

4.0是矩阵

的特征值,其对应的特征向量为常向量1,即所有分量为1。0是矩阵
的特征值,其对应的特征向量为

5.矩阵

是半正定矩阵,有n个非负实数特征值,并且满足

和未归一化的拉普拉斯矩阵类似,有下面的重要结论:

假设G是一个有非负权重的无向图,其归一化拉普拉斯矩阵

的特征值0的重数k等于图的联通分量的个数
。对于矩阵
,特征值0的特征空间由这些联通分量所对应的向量
所张成。对于矩阵
,特征值0的特征空间由这些联通分量所对应的向量
所张成。

RatioCut与NCut

前面说过,需要对图切割的代价函数进行归一化。第一种方法是用图的顶点数进行归一化,由此得到优化的目标为:

其中

为子集的元素数,称为RatioCut。另外一种归一化方案为

其中vol是图中所有顶点的加权度之和

称为NCut。这两种情况都可以转化成求解归一化后的拉普拉斯矩阵的特征值问题。假设L为图的拉普拉斯矩阵,W为邻接矩阵,D为加权度矩阵。定义归一化后的拉普拉斯矩阵为

对于RatioCut,求解的是如下特征值问题

其中n为样本数,

为单位矩阵,
为矩阵的迹,下面给出证明。首先考虑最简单的情况,将图切分成两个子图
,此时要求解的最优化问题为

为方便表述,给定一个子集

,构造指示向量
,表示每个样本所属的簇即子图,其元素的取值为

根据该向量的定义有

即给定任意子图A,上面这个二次型与RatioCut的目标函数一致。另外根据f的定义有

即向量f与全1向量1正交。另外

因此向量

需要满足等式约束。求解的切图问题等价于如下带约束的最优化问题

其中

表示向量正交。向量f所有分量的取值必须为定义的两种情况,此问题是一个离散优化问题,为NP难问题,不易求解。对问题进行放松,变成连续优化问题

这个问题的解是L的第二小的特征值所对应的特征向量。因为该矩阵最小的特征值是0,对应的特征向量是1。因此,第二小的特征值对应的特征向量近似是RatioCut的最优解。但是,切图所对应的结果应该是离散的,而这里得到的解是连续的,需要转换成离散的。一种解决方案是

类似于sgn函数。对于超过两个簇的情况,这种简单的阈值化不合适,此时可以将

当做点的坐标,用聚类算法将其聚成两类。然后按照如下的规则得到聚类结果

推广到多个子图的情况,通过构造指示向量可以得到类似的优化目标。对于NCut最后求解的是如下广义特征值问题

在完成特征值分解之后,保留k个最小的特征值和它们对应的特征向量,构成一个

的矩阵,矩阵的每一行为降维后的样本数据。最后用其他聚类算法如k均值算法对降维之后的数据进行聚类。

算法流程

根据前面得到推导可以得到具体的谱聚类算法,这里有两个版。算法1:

输入:相似度矩阵

,需要生成的簇数k

构造相似度图,可以采用之前介绍的三种方式。假设W为带权重的邻解矩阵

计算归一化的拉普拉斯矩阵L

计算下面广义特征值问题的前k个特征向量

假设矩阵

为这些特征向量按照列构成的矩阵

对于i=1,...,n,假设

为矩阵U的第i个行向量

对这些行向量用k均值算法进行聚类,得到簇

输出:

,其中

算法2:

输入:相似度矩阵

,需要生成的簇数k

构造相似度图,可以采用之前介绍的三种方式。假设w为带权重的邻解矩阵

计算归一化的拉普拉斯矩阵

计算矩阵

的前k个特征向量

假设矩阵

为这些特征向量按照列构成的矩阵

对于i=1,...,n,假设

为矩阵U的第i个行向量

对这些行向量用k均值算法进行聚类,得到簇

输出:

,其中

参考文献

[1] Andrew Y Ng, Michael I Jordan, Yair Weiss. On Spectral Clustering: Analysis and an algorithm. neural information processing systems, 2002.

[2] Ulrike Von Luxburg. A tutorial on spectral clustering. Statistics and Computing, 2007.

[3] Shi, J. and Malik, J. Normalized cuts and image segmentation. IEEE Transactions on Pattern Analysis and Machine Intelligence, 22 (8), 888-905. 2000.

聚类算法 距离矩阵_理解谱聚类相关推荐

  1. 聚类算法 距离矩阵_谱聚类

    比起传统的K-means算法,谱聚类对数据分布的适应性更强,计算量也要小很多. 1. 谱聚类概述 谱聚类是从图论中演化出来,主要思想是吧所有的数据看作空间中的点,这些点之间可以用边连接起来.距离较远的 ...

  2. 聚类算法 距离矩阵_模糊聚类算法

    模糊聚类算法 1.如何理解模糊聚类 事物间的界线,有些是明确的,有些则是模糊的.当聚类涉及到事物之间的模糊界线时,需要运用模糊聚类分析方法. 如何理解模糊聚类的"模糊"呢:假设有两 ...

  3. 聚类算法(六)——谱聚类 (含代码)

    聚类算法相关: 聚类算法(一)--DBSCAN 聚类算法(二)-- 优缺点对比 聚类算法(三)-- 评测方法1 聚类算法(三)-- 评测方法2 聚类算法(三)-- 评测方法3(代码) 聚类算法(四)- ...

  4. 聚类算法 距离矩阵_论文阅读9——AP聚类算法

    Affinity Learning for Mixed Data Clustering 论文提出了基于混合对数据进行聚类的学习框架,具体研究内容包括:1)如何处理具有混合类型属性的数据.2)如何学习数 ...

  5. 聚类算法 距离矩阵_机器学习基础-层次聚类

    层次聚类(Hierarchical clustering) 何时使用? 当我们希望进一步挖掘观测数据的潜在关系,可以使用层次聚类算法. 工作方式 首先我们会计算距离矩阵(distance matrix ...

  6. 聚类算法 距离矩阵_快速且不需要超参的无监督聚类方法

    论文: Efficient Parameter-free Clustering Using First Neighbor Relations Efficient Parameter-free Clust ...

  7. 聚类算法(五)——层次聚类 linkage (含代码)

    聚类算法相关: 聚类算法(一)--DBSCAN 聚类算法(二)-- 优缺点对比 聚类算法(三)-- 评测方法1 聚类算法(三)-- 评测方法2 聚类算法(三)-- 评测方法3(代码) 聚类算法(四)- ...

  8. 聚类算法:Hierarchical Clustering层次聚类

    1. 层次聚类 1.1 层次聚类的原理及分类 1)层次法(Hierarchicalmethods):先计算样本之间的距离.每次将距离最近的点合并到同一个类.然后,再计算类与类之间的距离,将距离最近的类 ...

  9. 聚类算法(4)--Hierarchical clustering层次聚类

    目录 一.层次聚类 1.层次聚类的原理及分类 2.层次聚类的流程 3.层次聚类的优缺点 二.python实现 1.sklearn实现 2.scipy实现 树状图分类判断 一.层次聚类 1.层次聚类的原 ...

最新文章

  1. Linux下清理内存和Cache方法
  2. 手机休眠监测wifi
  3. sql server 交叉表查询实例-成绩统计
  4. 7-4 jmu-Java-03面向对象基础-04-形状-继承 (15 分)
  5. 《妥协的完美主义—优秀产品经理的实践指南(卷一)》一2.4 分工常见的错误...
  6. 【牛客 - 331J】炫酷数学(打表猜结论,按位枚举证明)
  7. Zdal分库分表中间件介绍
  8. RS错误RSV-VAL-0032之项目未在布局中引用的3种解决办法
  9. html5字体转换,图片转字符画html5版
  10. 测试工作笔记001---web测试_工作经验_注意点_随时更新
  11. Mac 使用命令行工具解压和压缩 rar 文件
  12. 在 Mac 上如何将 Better Zip 设置为自动更新?
  13. erdas几何校正_erdas图像几何校正操作步骤指南
  14. Catfish任意代码执行漏洞 0day
  15. Rasa课程、Rasa培训、Rasa面试系列之:Rasa 3.x rasa run actions等运行命令学习
  16. 《JAVA: 学习导图》
  17. 为何苹果电脑虚拟机如此受欢迎
  18. nginx启动、停止、重启命令
  19. 图书管理系统的c实现用于图书信息的管理。
  20. 1.centos7 安装murmur

热门文章

  1. JAXB 遇到的问题
  2. 有关Activity的Launch mode 以及Intent的setFlags(转载)
  3. mouseChildren= false
  4. 调整SAP系统中物料账和财务账的期间
  5. python 格式化工具_Google的Python代码格式化工具YAPF详解
  6. 高炉计算机控制,一高炉计算机控制系统升级.pdf
  7. 路由包含#号导致的nginx_分布式实战:Nginx缓存之OpenResty部署
  8. js点击按钮改变字体大小并给他颜色_如何在Elementor中修改文本的字体、大小、颜色、样式...
  9. liunx创建php环境变量,linux添加环境变量的方法总结
  10. 一人网站所有的 ip地址_咸宁网站建设-网站的主要特征