第一节:谱聚类算法概述及拉普拉斯矩阵

Posted 快乐江湖

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第一节:谱聚类算法概述及拉普拉斯矩阵相关的知识,希望对你有一定的参考价值。

文章目录

一:谱聚类算法概述

谱聚类算法:它是一种基于谱聚理论的聚类算法。对于给定数据集 x i i = 1 n , x i ∈ R d \\x_i\\_i=1^n,x_i\\in R^d xii=1n,xiRd,谱聚类算法会把这些数据点映射至无向图 G = ( V , E ) G=(V,E) G=(V,E)

  • x i x_i xi对应图 G G G的一个节点 v i v_i vi
  • E E E是图中边的集合

接着可以用一个非负的相似矩阵 W W W表示整个无向图,此时元素 w i j w_ij wij表示无向图中的两个节点 v i v_i vi v j v_j vj之间的权重,且有 w i j w_ij wij= w j i w_ji wji

如下图所示,谱聚类的目标是:将无向图划分为两个或多个子图,使子图内部节点相似而子图间节点相异

二:拉普拉斯矩阵

拉普拉斯矩阵在谱聚类中有着非常重要的作用,而谱聚类算法正是依托于拉普拉斯矩阵的相关性质得出结果的

(1)标准拉普拉斯矩阵

标准拉普拉斯矩阵:其定义如下所示

L = D − W L=D-W L=DW

  • D D D:对角矩阵,且对角元素 d i = ∑ j = 1 n w i j d_i=\\sum\\limits_j=1^nw_ij di=j=1nwij
  • W W W:邻接矩阵,存储的是无向图

标准拉普拉斯矩阵 L L L有如下性质

  • 对于任意向量 f = ( f 1 , . . . , f n ) T ∈ R n f=(f_1,...,f_n)^T \\in R^n f=(f1,...,fn)TRn,有 f T L f = 1 2 ∑ i , j = 1 n w i j ( f i − f j ) 2 f^TLf=\\frac12\\sum\\limits_i,j=1^nw_ij(f_i-f_j)^2 fTLf=21i,j=1nwij(fifj)2
  • L L L是对称的半正定矩阵
  • L L L是最小特征值为0,且对应特征向量为1
  • L L L n n n个非负的实特征值,且0= λ 1 ≤ λ 2 ≤ . . . ≤ λ n \\lambda_1 \\leq \\lambda_2 \\leq... \\leq \\lambda_n λ1λ2...λn

此外,标准拉普拉斯矩阵 L L L的特征值与无向图中连通子图的个数也密切相关。令 G G G是一个权重非负的无向图,图中有 k k k个连通子图: A 1 , A 2 , . . . , A k A_1, A_2,...,A_k A1,A2,...,Ak,这些连通子图的拉普拉斯矩阵为 L i i = 1 k \\L_i\\_i=1^k Lii=1k,则有—— L L L的特征值0的重数和图中连通子图 A 1 , A 2 , . . . , A k A_1, A_2,...,A_k A1,A2,...,Ak的个数相同,并且对应的特征向量为 1 A 1 , 1 A 2 , . . . , 1 A k 1_A_1,1_A_2,...,1_A_k 1A1,1A2,...,1Ak,划分为 k k k个特征空间

各元素的取值为
L i j = D i j , ( i = j ) − 1 , ( i , j ∈ e d g e s e e t ) 0 , ( o t h e r s ) L_ij=\\begincases D_ij,(i=j) \\\\ -1,(i,j \\in edgeseet) \\\\ 0,(others) \\\\ \\endcases Lij= Dij(i=j)1(i,jedgeseet)0(others)

  • 拉普拉斯矩阵的对角线上取值为节点的度
  • 如果节点和节点相邻,则取值为-1
  • 其余位置为0,因为拉普拉斯矩阵是对称矩阵

(2)归一化拉普拉斯矩阵

  • 在模型中我们常常见到的是归一化的拉普拉斯矩阵,所以需要对标准拉普拉斯矩阵进行归一化

归一化拉普拉斯矩阵:通常有两种归一化拉普拉斯矩阵,分别为对称归一化拉普拉斯矩阵 L s y m L_sym Lsym随机游走归一化拉普拉斯矩阵 L r m L_rm Lrm

L s y m = D − 1 2 L D − 1 2 = I − D − 1 2 W D − 1 2 L_sym=D^-\\frac12LD^-\\frac12=I-D^-\\frac12WD^-\\frac12 L以上是关于第一节:谱聚类算法概述及拉普拉斯矩阵的主要内容,如果未能解决你的问题,请参考以下文章

Spectral clustering(谱聚类)算法的实现

Spectral clustering(谱聚类)算法的实现

谱聚类算法及其代码(Spectral Clustering)

谱聚类(Spectral clustering)(python实现)

白话啥是谱聚类算法

谱聚类