聚类算法手册--原理+评估方法

聚类算法

  1. 在无监督学习(unsupervised learning)中,训练样本的标记信息是未知的。

  2. 无监督学习的目标:通过对无标记训练样本的学习来揭露数据的内在性质以及规律。

  3. 一个经典的无监督学习任务:寻找数据的最佳表达(representation)。常见的有:

    • 低维表达:试图将数据(位于高维空间)中的信息尽可能压缩在一个较低维空间中。

    • 稀疏表达:将数据嵌入到大多数项为零的一个表达中。该策略通常需要进行维度扩张。

    • 独立表达:使数据的各个特征相互独立。 

  4. 无监督学习应用最广的是聚类(clustering) 。

  5. 通常用  表示样本 的簇标记cluster label,即 。于是数据集D的聚类结果可以用包含N个元素的簇标记向量来表示。

  6. 聚类的作用:

    • 可以作为一个单独的过程,用于寻找数据内在的分布结构。

    • 也可以作为其他学习任务的前驱过程。如对数据先进行聚类,然后对每个簇单独训练模型。

  7. 聚类问题本身是病态的。即:没有某个标准来衡量聚类的效果。

    但是实际上不知道这个平均距离对应于真实世界的物理意义。

    如:在图片识别中包含的图片有:红色卡车、红色汽车、灰色卡车、灰色汽车。可以聚类成:红色一类、灰色一类;也可以聚类成:卡车一类、汽车一类。

    解决该问题的一个做法是:利用深度学习来进行分布式表达,可以对每个车辆赋予两个属性:一个表示颜色、一个表示型号。

    • 可能很多不同的聚类都很好地对应了现实世界的某些属性,它们都是合理的。

    • 可以简单的度量聚类的性质,如每个聚类的元素到该类中心点的平均距离。

一、性能度量

  1. 聚类的性能度量也称作聚类的有效性指标validity index 。

  2. 直观上看,希望同一簇的样本尽可能彼此相似,不同簇的样本之间尽可能不同。即:簇内相似度intra-cluster similarity高,且簇间相似度inter-cluster similarity低。

  3. 聚类的性能度量分两类:

    • 聚类结果与某个参考模型reference model进行比较,称作外部指标external index 。

    • 直接考察聚类结果而不利用任何参考模型,称作内部指标internal index 。

1.1 外部指标

  1. 对于数据集 ,假定通过聚类给出的簇划分为。参考模型给出的簇划分为 ,其中K和不一定相等 。

    令  分别表示  的簇标记向量。定义:

  2. 下述性能度量的结果都在  之间。这些值越大,说明聚类的性能越好。

1.1.1 Jaccard系数

  1. Jaccard系数Jaccard Coefficient:JC

             

       它刻画了:所有的同类的样本对(要么在C中属于同类,要么在中属于同类)中,同时隶属于的样本对的比例。

1.1.2 FM指数

  1. FM指数Fowlkes and Mallows Index:FMI

1.1.3 Rand指数

  1. Rand指数Rand Index:RI

1.1.4 ARI指数

则根据定义有: ,其中  表示组合数。数字2 是因为需要提取两个样本组成样本对。

  1. 使用RI有个问题:对于随机聚类,RI指数不保证接近0(可能还很大)。

    ARI指数就通过利用随机聚类来解决这个问题。

  2. 定义一致性矩阵为:

    图片

  3. 定义ARI指数Adjusted Rand Index:

1.2 内部指标

  1. 对于数据集 ,假定通过聚类给出的簇划分为。定义:

1.2.1 DB指数

  1. DB指数Davies-Bouldin Index:DBI

    其物理意义为:

    该度量越小越好。

    • 给定一个簇K ,遍历其它的簇,寻找该度量的最大值。

    • 对所有的簇,取其最大度量的均值。

    • 给定两个簇,每个簇样本距离均值之和比上两个簇的中心点之间的距离作为度量。

  2. 显然DBI越小越好。

    • 如果每个簇样本距离均值越小(即簇内样本距离都很近),则DBI越小。

    • 如果簇间中心点的距离越大(即簇间样本距离相互都很远),则DBI越小。

1.2.2 Dunn指数

  1. Dunn指数Dunn Index:DI

    其物理意义为:任意两个簇之间最近的距离的最小值,除以任意一个簇内距离最远的两个点的距离的最大值。

  2. 显然DI越大越好。

    • 如果任意两个簇之间最近的距离的最小值越大(即簇间样本距离相互都很远),则DI越大。

    • 如果任意一个簇内距离最远的两个点的距离的最大值越小(即簇内样本距离都很近),则DI越大。

1.3 距离度量

  1. 距离函数distance(.,.)常用的有以下距离:

     

  1. VDM距离Value Difference Metric

  2. 当样本的属性为数值属性与非数值属性混合时,可以将闵可夫斯基距离与 VDM 距离混合使用。

  3. 当样本空间中不同属性的重要性不同时,可以采用加权距离。

    以加权闵可夫斯基距离为例:

  4. 这里的距离函数都是事先定义好的。在有些实际任务中,有必要基于数据样本来确定合适的距离函数。这可以通过距离度量学习distance metric learning来实现。

  5. 这里的距离度量满足三角不等式:

  6. 在某些任务中,根据数据的特点可能需要放松这一性质。如:美人鱼距离很近,美人鱼距离很近,但是的距离很远。这样的距离称作非度量距离non-metric distance

二、原型聚类

  1. 原型聚类prototype-based clustering假设聚类结构能通过一组原型刻画。

    常用的原型聚类有:

    • k均值算法k-means 。

    • 学习向量量化算法Learning Vector Quantization:LVQ 。

    • 高斯混合聚类Mixture-of-Gaussian 。

2.1 k-means 算法

2.1.1 k-means

  1. 给定样本集, 假设一个划分为 

    定义该划分的平方误差为:

  2. k-means 的优化目标需要考察 D的所有可能的划分,这是一个NP难的问题。实际上k-means 采用贪心策略,通过迭代优化来近似求解。

    • 首先假设一组均值向量。

    • 然后根据假设的均值向量给出了D的一个划分。

    • 再根据这个划分来计算真实的均值向量:

      (1) 如果真实的均值向量等于假设的均值向量,则说明假设正确。根据假设均值向量给出的D的一个划分确实是原问题的解。

      (2) 如果真实的均值向量不等于假设的均值向量,则可以将真实的均值向量作为新的假设均值向量,继续迭代求解。

  3. 这里的一个关键就是:给定一组假设的均值向量,如何计算出D的一个簇划分?

    k均值算法的策略是:样本离哪个簇的均值向量最近,则该样本就划归到那个簇。

  4. k-means 算法:

  5. k-means 优点:

  6. k-means 缺点:

    通常进行多次k-means,然后选择最优的那次作为最终聚类结果。

    • 结果不一定是全局最优的,只能保证局部最优。

    • 对噪声敏感。因为簇的中心是取平均,因此聚类簇很远地方的噪音会导致簇的中心点偏移。

    • 无法解决不规则形状的聚类。

    • 无法处理离散特征,如:国籍、性别 等。

    • 需要首先确定聚类的数量 K。

    • 分类结果严重依赖于分类中心的初始化。

  1. k-means 性质:

    • k-means 实际上假设数据是呈现球形分布,实际任务中很少有这种情况。与之相比,GMM 使用更加一般的数据表示,即高斯分布。

    • k-means 假设各个簇的先验概率相同,但是各个簇的数据量可能不均匀。

    • k-means 使用欧式距离来衡量样本与各个簇的相似度。这种距离实际上假设数据的各个维度对于相似度的作用是相同的。

    • k-means 中,各个样本点只属于与其相似度最高的那个簇,这实际上是 分簇。

    • k-means 算法的迭代过程实际上等价于EM 算法。具体参考EM 算法章节。

2.1.2 k-means++

  1. k-means++ 属于 k-means 的变种,它主要解决 k-means 严重依赖于分类中心初始化的问题。

  2. k-means++ 选择初始均值向量时,尽量安排这些初始均值向量之间的距离尽可能的远。

  3. k-means++ 算法:

2.1.3 k-modes

  1. k-modes 属于 k-means 的变种,它主要解决 k-means 无法处理离散特征的问题。

  2. k-modes 与 k-means 有两个不同点(假设所有特征都是离散特征):

    • 簇中心的更新规则不同。在k-modes 算法中,簇中心每个属性的取值为:簇内该属性出现频率最大的那个值。

    • 距离函数不同。在k-modes 算法中,距离函数为:

                                           

  1. 其中为示性函数。

    上式的意义为:样本之间的距离等于它们之间不同属性值的个数。

         

        其中v的取值空间为所有样本在第d个属性上的取值。

 

2.1.4 k-medoids

  1. k-medoids 属于 k-means 的变种,它主要解决k-means 对噪声敏感的问题。

  2. k-medoids 算法:

  3. k-medoids 算法在计算新的簇心时,不再通过簇内样本的均值来实现,而是挑选簇内距离其它所有点都最近的样本来实现。这就减少了孤立噪声带来的影响。

  4. k-medoids 算法复杂度较高,为。其中计算代价最高的是计算每个簇内每对样本之间的距离。

    通常会在算法开始时计算一次,然后将结果缓存起来,以便后续重复使用。

2.1.5 mini-batch k-means

  1. mini-batch k-means 属于 k-means 的变种,它主要用于减少k-means 的计算时间。

  2. mini-batch k-means 算法每次训练时随机抽取小批量的数据,然后用这个小批量数据训练。这种做法减少了k-means 的收敛时间,其效果略差于标准算法。

  3. mini-batch k-means 算法:

2.2 学习向量量化

  1. 与一般聚类算法不同,学习向量量化Learning Vector Quantization:LVQ假设数据样本带有类别标记,学习过程需要利用样本的这些监督信息来辅助聚类。

  2. 给定样本集LVQ的目标是从特征空间中挑选一组样本作为原型向量

    • 每个原型向量代表一个聚类簇,簇标记 。即:簇标记从类别标记中选取。

    • 原型向量从特征空间中取得,它们不一定就是D中的某个样本。

  3. LVQ的想法是:通过从样本中挑选一组样本作为原型向量,可以实现对样本空间X的簇划分。

  4. 问题是如何从样本中挑选一组样本作为原型向量?LVQ的思想是:

  5. LVQ算法:

  6. 在原型向量的更新过程中:

  7. 这里有一个隐含假设:即计算得到的样本 (该样本可能不在样本集中) 的标记就是更新之前的标记。

    即:更新操作只改变原型向量的样本值,但是不改变该原型向量的标记。

2.3 高斯混合聚类

  1. 高斯混合聚类采用概率模型来表达聚类原型。

  2. 对于n维样本空间X中的随机向量,若服从高斯分布,则其概率密度函数为 :

  3. 定义高斯混合分布: 。该分布由 K个混合成分组成,每个混合成分对应一个高斯分布。其中:

  4. 假设训练集的生成过程是由高斯混合分布给出。

    令随机变量表示生成样本的高斯混合成分序号,Z的先验概率

    生成样本的过程分为两步:

  5. 根据贝叶斯定理, 若已知输出为,则的后验分布为:

    其物理意义为:所有导致输出为的情况中, 发生的概率。

  6. 当高斯混合分布已知时,高斯混合聚类将样本集D划分成K个簇

  7. 现在的问题是,如何学习高斯混合分布的参数。由于涉及到隐变量Z,可以采用EM算法求解。

三、密度聚类

  1. 密度聚类density-based clustering假设聚类结构能够通过样本分布的紧密程度确定。

  2. 密度聚类算法从样本的密度的角度来考察样本之间的可连接性,并基于可连接样本的不断扩张聚类簇,从而获得最终的聚类结果。

3.1 DBSCAN 算法

  1. DBSCAN是一种著名的密度聚类算法,它基于一组邻域参数  来刻画样本分布的紧密程度。

  2. 给定数据集 , 定义:

  3. DBSCAN算法的簇定义:给定邻域参数, 一个簇是满足下列性质的非空样本子集:

    即一个簇是由密度可达关系导出的最大的密度相连样本集合。

  4. DBSCAN算法的思想:若为核心对象,则密度可达的所有样本组成的集合记作。可以证明 :X就是满足连接性与最大性的簇。

    于是 DBSCAN 算法首先任选数据集中的一个核心对象作为种子seed,再由此出发确定相应的聚类簇。

  5. DBSCAN算法:

  6. 注意:

    • 若在核心对象的寻找密度可达的样本的过程中,发现核心对象是由密度可达的,且尚未被访问,则将  加入所属的簇,并且标记为已访问。

    • 对于D中的样本点,它只可能属于某一个聚类簇。因此在核心对象的寻找密度可达的样本的过程中,它只能在标记为未访问的样本中寻找 (标记为已访问的样本已经属于某个聚类簇了)。

  7. DBSCAN 算法的优点:

    • 簇的数量由算法自动确定,无需人工指定。

    • 基于密度定义,能够对抗噪音。

    • 可以处理任意形状和大小的簇。

  8. DBSCAN 算法的缺点:

    • 若样本集的密度不均匀,聚类间距差相差很大时,聚类质量较差。因为此时参数和 MinPts 的选择比较困难。

    • 无法应用于密度不断变化的数据集中。

3.2 Mean-Shift 算法

图片

  1. Mean-Shift 是基于核密度估计的爬山算法,可以用于聚类、图像分割、跟踪等领域。

  2. 给定n维空间的 N个样本组成的数据集,给定一个中心为、半径为h的球形区域 S(称作兴趣域),定义其mean shift 向量为: 。

  3. Mean-Shift 算法的基本思路是:

    移动过程中,兴趣域范围内的所有样本都标记为同一个簇。

    因此Mean-Shift 会向着密度最大的区域移动。

    下图中:蓝色为当前的兴趣域,红色为当前的中心点;紫色向量为mean shift 向量,灰色为移动之后的兴趣域 。

    • 如果mean shift 向量为0,则停止移动,说明兴趣域 已到达数据点最密集的区域。

    • 首先任选一个点作为聚类的中心来构造兴趣域

    • 然后计算当前的mean shift 向量,兴趣域的中心移动为: 。

               

  1. 在计算mean shift 向量的过程中假设每个样本的作用都是相等的。实际上随着样本与中心点的距离不同,样本对于mean shift 向量的贡献不同。

  2. Mean_Shift 算法:

    迭代,直到所有的样本都被访问过。迭代过程为(设已有的簇为 1,2,\cdots,L-1 ):

    (1) 在未访问过的样本中随机选择一个点作为中心点 ,找出距它半径为h的兴趣域,记做 S。将 S中的样本的簇标记设置为L(一个新的簇)。

    (2) 计算当前的mean shift 向量,兴趣域中心的移动为:

  •  

          

    在移动过程中,兴趣域内的所有点标记为访问过,并且将它们的簇标记设置为L。

     

  • 合并时,当前簇中的样本的簇标记重新修改为l。

    当所有的样本都被访问过时,重新分配样本的簇标记(因为可能有的样本被多个簇标记过):若样本被多个簇标记过,则选择最大的那个簇作为该样本的簇标记。即:尽可能保留大的簇。

四、层次聚类

  1. 层次聚类hierarchical clustering 试图在不同层次上对数据集进行划分,从而形成树形的聚类结构。

4.1 AGNES 算法

  1. AGglomerative NESting:AGNES是一种常用的采用自底向上聚合策略的层次聚类算法。

  2. AGNES首先将数据集中的每个样本看作一个初始的聚类簇,然后在算法运行的每一步中,找出距离最近的两个聚类簇进行合并。

    合并过程不断重复,直到达到预设的聚类簇的个数。

  3. 这里的关键在于:如何计算聚类簇之间的距离?

    由于每个簇就是一个集合,因此只需要采用关于集合的某个距离即可。给定聚类簇 , 有三种距离:

    最小距离由两个簇的最近样本决定。

    最大距离由两个簇的最远样本决定。

    平均距离由两个簇的所有样本决定。

  4. AGNES 算法可以采取上述任意一种距离:

    • AGNES算法的聚类簇距离采用时,称作单链接single-linkage算法。

    • AGNES算法的聚类簇距离采用时,称作全链接complete-linkage算法。

    • AGNES算法的聚类簇距离采用时,称作均链接average-linkage算法 。

  5. AGNES算法:

    • 每进行一次迭代,聚类簇的数量就减少一些。

  6. AGNES 算法的优点:

    • 距离容易定义,使用限制较少。

    • 可以发现聚类的层次关系。

  7. AGNES 算法的缺点:

    • 计算复杂度较高。

    • 算法容易聚成链状。

4.2 BIRCH 算法

  1. BIRCH:Balanced Iterative Reducing and Clustering Using Hierarchies 算法通过聚类特征树CF Tree:Clustering Feature True来执行层次聚类,适合于样本量较大、聚类类别数较大的场景。

4.2.1 聚类特征

  1. 聚类特征CF:每个CF 都是刻画一个簇的特征的三元组: 。其中:

  2. 根据CF 的定义可知:如果CF1 和 CF2 分别表示两个不相交的簇的特征,如果将这两个簇合并成一个大簇,则大簇的特征为:

    即:CF 满足可加性。

  3. 给定聚类特征CF,则可以统计出簇的一些统计量:

  4. 给定两个不相交的簇,其特征分别为

4.2.2 CF 树

     图片

  1. CF树的结构类似于平衡B+树 。树由三种结点构成:根结点、中间结点、叶结点。

    • 根结点、中间结点:由若干个聚类特征CF ,以及这些CF 指向子结点的指针组成。叶结点:由若干个聚类特征CF 组成。

    • (1) 叶结点没有子结点,因此CF 没有指向子结点的指针。

      (2) 所有的叶结点通过双向链表连接起来。

      (3) 在BIRCH 算法结束时,叶结点的每个CF 对应的样本集就对应了一个簇。

  2. CF 树有三个关键参数:

  3. 由于 CF 的可加性,所以 CF 树中,每个父结点的 CF 等于它所有子结点的所有 CF 之和。

  4. CF 树的生成算法:

         

4.2.3 BIRCH 算法

  1. BIRCH 算法的主要步骤是建立 CF 树,除此之外还涉及到 CF 树的瘦身、离群点的处理。

  2. BIRCH 需要对CF 树瘦身,有两个原因:

    • 将数据点插入到CF 树的过程中,用于存储CF 树结点及其相关信息的内存有限,导致部分数据点生长形成的CF 树占满了内存。因此需要对CF 树瘦身,从而使得剩下的数据点也能插入到CF 树中。

    • CF 树生长完毕后,如果叶结点中的CF 对应的簇太小,则会影响后续聚类的速度和质量。

  3. BIRCH 瘦身是在将增加的过程。算法会在内存中同时存放旧树T和新树,初始时刻为空。

  4. BIRCH 离群点的处理:

    稀疏子簇:簇内数据点的数量远远少于所有子簇的平均数据点的那些子簇。

    将稀疏子簇放入待定区时,需要同步更新CF 树上相关路径及结点。

    如果数据点无法插入到CF 树中,则可以确定为真正的离群点。

    • 当D中所有数据点都被插入之后,扫描待定区中的所有数据点(这些数据点就是候选的离群点),并尝试将其插入到CF 树中。

    • 在对CF 瘦身之后,搜索所有叶结点中的所有子簇,寻找那些稀疏子簇,并将稀疏子簇放入待定区。

  5. BIRCH 算法:

    •  

  6. BIRCH 算法优点:

    • 节省内存。所有样本都存放在磁盘上,内存中仅仅存放CF 结构。

    • 计算速度快。只需要扫描一遍就可以建立CF 树。

    • 可以识别噪声点。

  7. BIRCH 算法缺点:

    • 结果依赖于数据点的插入顺序。原本属于同一个簇的两个点可能由于插入顺序相差很远,从而导致分配到不同的簇中。甚至同一个点在不同时刻插入,也会被分配到不同的簇中。

    • 对非球状的簇聚类效果不好。这是因为簇直径  和簇间距离的计算方法导致。

    • 每个结点只能包含规定数目的子结点,最后聚类的簇可能和真实的簇差距很大。

  8. BIRCH 可以不用指定聚类的类别数 K。

    • 如果不指定K,则最终叶结点中CF 的数量就是K。

    • 如果指定K,则需要将叶结点按照距离远近进行合并,直到叶结点中CF 数量等于K。

五、谱聚类

  1. 谱聚类spectral clustering 是一种基于图论的聚类方法。

  2. 谱聚类的主要思想是:基于数据集来构建图 ,其中:

  • 顶点V:由数据集中的数据点组成:

  • 边E:任意一对顶点之间存在边。

    距离越近的一对顶点,边的权重越高;距离越远的一对顶点,边的权重越低。

     通过对图进行切割,之间的边的权重尽可能的低、各子图内的边的权重尽可能的高。这样就完成了聚类。

     

图片

5.1 邻接矩阵

  1. 在图  中,定义权重  为顶点  和  之间的权重,其中  。

    定义  为邻接矩阵:

图片

     由于  为无向图,因此  。即: 。

  • 对图中顶点  ,定义它的度  为:所有与顶点  相连的边的权重之和: 。

        定义度矩阵  为一个对角矩阵,其中对角线分别为各顶点的度:

     图片

  • 对于顶点集合  的一个子集 ,定义为子集中点的个数;定义,为子集 中所有点的度之和。

2. 事实上在谱聚类中,通常只给定数据集 ,因此需要计算        出邻接矩阵。

图片

(1) 通常相似度采用高斯核: 。此时有 。即: 。

(2) 也可以选择不同的核函数,如:多项式核函数、高斯核函数、sigmoid 核函数。

    • 基本思想是:距离较近的一对点(即相似都较高),边的权重较高;距离较远的一对点(即相似度较低),边的权重较低。

    • 基本方法是:首先构建相似度矩阵 ,然后使用近邻法、K 近邻法、或者全连接法。      

3. ϵ-近邻法:设置一个距离阈值 ,定义邻接矩阵为:

 

图片

    即:一对相似度小于  的点,边的权重为 ;否则边的权重为。

    ϵ-近邻法得到的权重要么是  ,要么是 ,权重度量很不精确,因此实际应        用较少。

4. K 近邻法:利用 KNN 算法选择每个样本最近的  个点作为近邻,其它点与      当前点之间的边的权重为  。

    这种做法会导致邻接矩阵  非对称,因为当  是  的  近邻时,  不      一定是 的 K 近邻。

    为了解决对称性问题,有两种做法:

  • 只有两个点互为对方的  近邻中,则认为是近邻。即:取交集。

    图片

  • 只要一个点在另一个点的  近邻中,则认为是近邻。即:取并集。

    图片

 

5. 全连接法:所有点之间的权重都大于 : 。

5.2 拉普拉斯矩阵

  1. 定义拉普拉斯矩阵  ,其中  为度矩阵、  为邻接矩阵。

  2. 拉普拉斯矩阵  的性质:

    设其  个实特征值从小到大为  ,即: 。

    •  是对称矩阵,即  。这是因为 ,  都是对称矩阵。

    • 因为  是实对称矩阵,因此它的特征值都是实数。

    • 对任意向量 ,有: 。

    •  是半正定的,且对应的  个特征值都大于等于0,且最小的特征值为 。

5.3 谱聚类算法

  1. 给定无向图 ,设子图的点的集合和子图的点的集合都是的子集,且。

    定义  和  之间的切图权重为: 。

    即:所有连接  和  之间的边的权重。

  2. 对于无向图  ,假设将它切分为  个子图:每个子图的点的集合为 ,满足  且  。

    定义切图cut 为: ,其中  为  的补集。

5.3.1 最小切图

  1. 引入指示向量 ,定义:

图片

      则有:

    因此  。其中     , 为矩阵的迹。

    考虑到顶点  有且仅位于一个子图中,则有约束条件:

图片

2. 最小切图算法: 最小的切分。即求解:

图片

3. 最小切图切分使得不同子图之间的边的权重尽可能的低,但是容易产生分割      出只包含几个顶点的较小子图的歪斜分割现象。

 

5.3.2 RatioCut 算法

  1. RatioCut 切图不仅考虑最小化 ,它还考虑最大化每个子图的点的个数。即:

    • 最小化 :使得不同子图之间的边的权重尽可能的低。

    • 最大化每个子图的点的个数:使得各子图尽可能的大。

  2. 引入指示向量 ,定义:

    图片

      则有:

      因此  。其中                       , 为矩阵的迹。

      考虑到顶点  有且仅位于一个子图中,则有约束条件:

图片

3. RatioCut算法: 最小的切分。即求解:

图片

     因此只需要求解  最小的  个特征值,求得对应的  个特征向量组成  。

     通常在求解得到  之后,还需要对行进行标准化:

4. 事实上这样解得的  不能完全满足指示向量的定义。因此在得到  之后,      还需要对每一行进行一次传统的聚类(如:k-means 聚类)。

5.RatioCut 算法:

    • 输入:

      (1) 数据集

      (2) 降维的维度

      (3) 二次聚类算法

      (4) 二次聚类的维度

    • 输出:聚类簇

    • 算法步骤:

      (1) 根据  构建相似度矩阵  。

      (2) 根据相似度矩阵构建邻接矩阵 、度矩阵,计算拉普拉斯矩阵。

      (3) 计算  最小的  个特征值,以及对应的特征向量 ,构建矩阵 。

      (4) 对  按照行进行标准化: ,得到  。

      (5) 将  中每一行作为一个  维的样本,一共  个样本,利用二次聚类算法来聚类,二次聚类的维度为  。

      最终得到簇划分  。

5.3.3 Ncut 算法

  1. Ncut 切图不仅考虑最小化 ,它还考虑最大化每个子图的边的权重。即:

    • 最小化 :使得不同子图之间的边的权重尽可能的低。

    • 最大化每个子图的边的权重:使得各子图内的边的权重尽可能的高。

  2. 引入指示向量 ,定义:

    图片

    则有:

    因此  。其中  ,为矩阵的迹。

    考虑到顶点  有且仅位于一个子图中,则有约束条件:

图片

3. Ncut算法: 最小的切分。即求解

图片

4. 令  ,则有:

图片

    令  ,则最优化目标变成:

图片

    因此只需要求解  最小的  个特征值,求得对应的  个特征向量组成           。 然后对行进行标准化:。

    与RatioCut 类似,Ncut 也需要对 的每一行进行一次传统的聚类(如:k-means 聚类)。

5. 事实上  相当于对拉普拉斯矩阵  进行了一次标准化:                  。

6.Ncut 算法:

   (5) 对  按照行进行标准化: ,得到  。

   (6) 将  中每一行作为一个  维的样本,一共  个样本,利用二次            聚类算法来聚类,二次聚类的维度为  。

        最终得到簇划分  。

    • 输入:

      (1) 数据集

      (2) 降维的维度

      (3) 二次聚类算法

      (4) 二次聚类的维度

    • 输出:聚类簇

    • 算法步骤:

      (1) 根据  构建相似度矩阵  。

      (2) 根据相似度矩阵构建邻接矩阵 、度矩阵,计算拉普拉斯矩阵。

      (3) 构建标准化之后的拉普拉斯矩阵  。

      (4) 计算  最小的  个特征值,以及对应的特征向量 ,构建矩阵 。

5.4 性质

  1. 谱聚类算法优点:

  • 只需要数据之间的相似度矩阵,因此处理稀疏数据时很有效。

  • 由于使用了降维,因此在处理高维数据聚类时效果较好。

  2. 谱聚类算法缺点:

  •  如果最终聚类的维度非常高,则由于降维的幅度不够,则谱聚类的运行速度和最后聚类的效果均不好。

  •  聚类效果依赖于相似度矩阵,不同相似度矩阵得到的最终聚类效果可能不同。

参考

【1】算法工程师必备的机器学习--聚类(上)

【2】算法工程师必备的机器学习--聚类(下)

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值