网络性质 | 属性、标签 | 权重 | 方向 | 方法 | 任务 |
---|---|---|---|---|---|
同质 | 有 | 有权 | 有向 | matrix factorization | node classification |
异质 | 无 | 无权 | 无向 | random walk | link prediction |
/ | / | / | 有向&无向 | deep learning | clustering (community detection) |
/ | / | / | / | transition matrix | visualization |
复杂度,一阶、二阶,用到哪些信息。输入 输出
同样是一阶相似度、二阶相似度,文中说了一个,Modularized Nonnegative Matrix Factorization (M-NMF) 的方法,就是平时在 community detection 中,人关于标签的矩阵,因为这儿不好解释,所以用了 bias matrix 的说法。
一阶相似性: S ( 1 ) = [ S i , j ( 1 ) ] S^{(1)} = [S^{(1)}_{i,j}] S(1)=[Si,j(1)] 就是邻接矩阵的变种吧,有边就有一个大于0 的值,没有边就还是等于0,
二阶相似性: S ( 2 ) = [ S i , j ( 2 ) ] = S i ( 1 ) S j ( 1 ) ∥ S i ( 1 ) ∥ ∥ S j ( 1 ) ∥ S^{(2)} = [S^{(2)}_{i,j}] = \frac{S^{(1)}_iS^{(1)}_j}{\|S^{(1)}_i\| \|S^{(1)}_j\|} S(2)=[Si,j(2)]=∥Si(1)∥∥Sj(1)∥Si(1)Sj(1)也就是高中 cosine 值的算法
总体来说 S = S ( 1 ) + η S ( 2 ) S = S^{(1)} + \eta S^{(2)} S=S(1)+ηS(2) ,并且 S , S ( 1 ) , S ( 2 ) ∈ R n × n S , S^{(1)} , S^{(2)} \in \mathbb R^{n \times n} S,S(1),S(2)∈Rn×n
好的,到这儿呢,肯定会出现一个 embedding 的矩阵,叫做 U ∈ R n × m , m U \in \mathbb R ^{n \times m}, m U∈Rn×m,m 是 embedding 的维数。这时候,就出现了一个 $ M \in \mathbb R ^{n \times m} $矩阵,叫做 bias 矩阵,大概是没什么可解释性了吧。如此一来,eq(1)也就顺理成章:
min ∥ S − M U T ∥ F 2 \min \|S-MU^T\|^2_F min∥S−MUT∥F2
但是呢,这篇文章重点是 community preserve,所以,肯定还会有和 community 相关的东西的。
沿用上面的套路,还是一个 ∥ A − B C T ∥ \| A-BC^T\| ∥A−BCT∥ 的模式,其中, U U U是要得到的东西,毕竟辛苦千千万,只为得到他。前面运用了 graph 的结构信息来训练他,之后要用 community 的信息来训练。
于是出现了一个和 community 相关的 embedding C ∈ R k × m C \in \mathbb R ^{k \times m} C∈Rk×m,每一行代表一个 community 的 embedding。根据维度关系,肯定是 U C T ∈ R n × k UC^T \in \mathbb R^{n \times k} UCT∈Rn×k的结合,所以,还有个一个属于 R n × k \mathbb R^{n \times k} Rn×k的矩阵。
这个矩阵,在论文最开始说的,这个矩阵是 H ∈ R n × k H \in \mathbb R^{n \times k} H∈Rn×k, 是一个community membership indicator,属于社区成员指示矩阵。一般来说, H H H到这儿也就完了,最小化$ | H- UCT|2_F$ ,再加个正则项,但是这儿有所区别,用于约束 H H H, 或者说,充当正则项。
Q = t r ( H T B H ) s . t . t r ( H T H ) = n B i , j = A i , j − k i k j 2 e \begin{array}{c} Q=tr(H^TBH)\quad s.t. \quad tr(H^TH) =n \\ B_{i,j} = A_{i,j} - \frac{k_ik_j}{2e} \end{array} Q=tr(HTBH)s.t.tr(HTH)=nBi,j=Ai,j−2ekikj
很奇怪, B i , j = A i , j − k i k j 2 e B_{i,j} = A_{i,j} - \frac{k_ik_j}{2e} Bi,j=Ai,j−2ekikj是怎么来的,这篇论文引用了某篇图二分类的文章, Q = 1 4 e ∑ i j ( A − k i k j 2 e ) h i h j Q = \frac1{4e} \sum_{ij}(A - \frac{k_ik_j}{2e})h_ih_j Q=4e1∑ij(A−2ekikj)hihj,eq(2)是省略了常数项。所以,这篇文章的特别之处就是引用了其他文章的东西,作为一个正则化项。综上:
L = ∥ S − M U T ∥ F 2 + α ∥ H − U C T ∥ F 2 − β t r ( H T B H ) s . t . M ≥ 0 , H ≥ 0 , C ≥ 0 , t r ( H T H ) = n \mathcal L =\|S-MU^T\|^2_F+ \alpha \| H- UC^T\|^2_F-\beta tr(H^TBH)\\ s.t. \quad M\geq0, H\geq 0,C\geq0, tr(H^TH)=n L=∥S−MUT∥F2+α∥H−UCT∥F2−βtr(HTBH)s.t.M≥0,H≥0,C≥0,tr(HTH)=n
关于 h i h_i hi属于正类则为1,否则-1, k i k_i ki是节点的度数(由此判断无向吗,没有出度入度)。由此推广到多分类,用了一个$H\in \mathbb R^{n \times k} $ 每一列是一个 community 的0,1指示向量。
思考了一下,为什么二分类里,是用1,-1来指示,而多分类用0,1。二分类里用0,1行不行?
- 如果单纯是用数字来表示的话,是不行的。
- 使用1,-1分类:
- i , j i,j i,j同属于正类: h i h j = 1 h_ih_j = 1 hihj=1
- i , j i,j i,j同属于负类: h i h j = 1 h_ih_j = 1 hihj=1
- i , j i,j i,j不同属于一类: h i h j = − 1 h_ih_j = -1 hihj=−1
- 使用0,1分类:
- i , j i,j i,j同属于正类: h i h j = 1 h_ih_j = 1 hihj=1
- i , j i,j i,j同属于负类: h i h j = 0 h_ih_j = 0 hihj=0
- i , j i,j i,j不同属于一类: h i h j = 0 h_ih_j = 0 hihj=0
由此可见,在使用实数的时候,用0,1并不能区别他们是不是属于一个类。
- 用向量来表示,也就是多分类的指示方法,是 OK的:
- H = 1 ∗ 2 ∗ i 1 0 j 1 0 H = \begin{array}{} &1^* &2^* \\ i &1&0 \\ j&1&0 \end{array} H=ij1∗112∗00 假设两个节点都属于同一个类, H H T = 1 1 1 1 HH^T =\begin{array}{} 1&1 \\ 1&1 \end{array} HHT=1111 ,可以看到在除了对角线外,其他的 entry 是1,代表这两个节点在同一个类。同理,要是不在一个类,对应的 entry 是0。这就指示了两者是否在一个社区的问题。
所以问题的重点在于使用向量来表示,还是要果奶实数来表示。
关于 Q = 1 4 e ∑ i j ( A − k i k j 2 e ) h i h j Q = \frac1{4e} \sum_{ij}(A - \frac{k_ik_j}{2e})h_ih_j Q=4e1∑ij(A−2ekikj)hihj是怎么来的,为什么要用这个 Q Q Q,不甚了解,传送门 Finding community structure in networks using the eigenvectors of matrices