第二节:谱聚类算法之切图聚类算法流程及其实现

Posted 快乐江湖

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第二节:谱聚类算法之切图聚类算法流程及其实现相关的知识,希望对你有一定的参考价值。

本文部分内容源自刘建平博客,在此基础上进行总结拓展

文章目录

一:谱聚类与图划分

无向图切图:谱聚类算法根据数据点之间的相似度将数据点划分到不同簇中,因此将数据点映射到无向图之后,可以转化为图划分的问题。对于无向图 G G G,切图的目标是将图 G ( V , E ) G(V,E) G(V,E)切分成互相无连接 k k k个子图,其中

  • 每个子图点的集合为 A 1 , A 2 , . . . , A k \\A_1,A_2,...,A_k\\ A1,A2,...,Ak,且满足 A i ∩ A j = ∅ A_i\\cap A_j=\\empty AiAj= A 1 ∪ A 2 ∪ . . . ∪ A k = V A_1\\cup A_2\\cup ... \\cup A_k=V A1A2...Ak=V
  • 对于任意两个子图点的集合 A A A B B B我们定义 A A A B B B之间的切图权重为 W ( A , B ) = ∑ i ∈ A , j ∈ B w i j W(A,B)=\\sum\\limits_i\\in A,j \\in B w_ij W(A,B)=iA,jBwij
  • 对于 k k k个子图点的集合 A 1 , A 2 , . . . , A k \\A_1,A_2,...,A_k\\ A1,A2,...,Ak定义切图 c u t ( A 1 , A 2 , . . . , A k ) = 1 2 ∑ i = 1 k W ( A i , A ˉ i ) cut(A_1,A_2,...,A_k)=\\frac12\\sum\\limits_i=1^kW(A_i,\\bar A_i) cut(A1,A2,...,Ak)=21i=1kW(Ai,Aˉi) (其中 A ˉ i \\bar A_i Aˉi A i A_i Ai的补集)

可以看出, c u t cut cut描述了子图之间的相似性, c u t cut cut越小那么子图的差异性就越大。但是 c u t ( A 1 , A 2 , . . . , A k ) = 1 2 ∑ i = 1 k W ( A i , A ˉ i ) cut(A_1,A_2,...,A_k)=\\frac12\\sum\\limits_i=1^kW(A_i,\\bar A_i) cut(A1,A2,...,Ak)=21i=1kW(Ai,Aˉi)在划分子图时并没有考虑每个子图中节点的个数。所以在某些情况下,最小化 c u t ( A 1 , A 2 , . . . , A k ) cut(A_1,A_2,...,A_k) cut(A1,A2,...,Ak)可能会把一个数据点或是很少数据点看做一个子图,导致子图划分结果不平衡

  • 例如下图,选择一个权重最小的边缘的点,比如 C C C H H H之间进行 c u t cut cut,这样可以最小化 c u t ( A 1 , A 2 , . . . , A k ) cut(A_1,A_2,...,A_k) cut(A1,A2,...,Ak)但是却不是最优的切图


为了解决这个问题,会引入一些正则化方法。最常用的两种方法为比例割和规范割