Node Classification
那么对于网络之中的各个节点进行分类也是一个非常重要的任务,在之前的模型之中不管是Rolx还是BigCLAM都仅仅是对于网络之中的纯粹网络的特征进行Classification,并没有考虑其他的Information,但是在这里的话我们会有其他的Information一起帮助进行Classification。
那么既然是图之中的节点的分类,自然是和普通的节点的分类不同,我们要好好的利用网络之中的图这种结构,那么在网络的图这种结构之中可能会存在着三种不同的Behavior
第一种是个体的特征影响网络,比如说一粒老鼠屎坏了一锅汤;第二种是网络的特征对于个体造成影响;还有第三种的情况也是对于个体之间产生影响,但是并非是对于网络之中的个体的特征产生影响,而是对于网络之中的个体联系的方式产生影响。
那么在网络之中,假设我们只有部分的Label
比如说只有四个点被标注了,怎么对于其他的点进行分类呢?利用上面的那些网络之中可能存在的现象,就可以有一个假说是Guilt By Association,也就是近朱者赤近墨者黑,所以在网络之中的节点的分类取决于下面的这三个因素,节点的特征、节点的Neighbor的Label、节点的Neighbor的特征。当然这里要是无限套娃的话,计算力可能会受不了,所以这里采用了马尔科夫假设,也就是说,所考虑的Neighbor就仅仅是限于某些节点而已。这里感觉也有点平均场理论(Mean Field Theory)的意思了,真就是给每个节点的类别的概率是其临边的节点的加权平均。
但是上述的这种方法并没有考虑到网络的节点的特征,只是计算周围的点的概率然后把它放进来罢了。所以我们Move On,加入节点的特征的算法称之为Iterative Classification,也就是把节点的初度和入读都作为新的特征Concat在原来的节点的Feature向量的后面,但是这个方法加大的计算量而无法保证收敛。所以也非英雄也。
Brief Propagation
在机器学习里面,敢叫BP算法的都是狠角色,这里的BP算法在PGM之中就已经学过了(不过自己好像还没有写好像),那我就在这写一哈吧。
这个算法是一个动态规划算法,其将图之中的Node之间通过Edge传递信息,在直线的情况很简单,一个一个的传递就可以了,但是如果网络出现了岔路的情况,就会变复杂了,
在这种情况下,那个红线框出来的点该怎么办呢?他要做的是向左上角的Node说那边有七个,而向右上角的说这里有11个,向下面的说有11个。那么这样消息就可以正常的传播了。但是需要注意的是,在这里一旦出现了环就完蛋了。
那么具体怎么传播呢?
比如说在这里$i$会怎么传播信息给$j$或者传播怎么样的信息给$j$,主要由三个Part组成
- $\psi(Y_{i},Y_{j})$;节点$i$是$Y_{i}$的情况下,其周围的节点是$j$的概率
- $\phi_{i}(Y_{i})$:节点$i$是$Y_{i}$的先验概率
- 还有一个上一轮的传播的概率就是$\prod_{k\in N_{i}/j} m_{k\to i}(Y_{i})$
那么对于$m_{i\to j}(Y_{j})$而言,他的概率就是
$$m_{i\rightarrow j}(Y_j)=\alpha\sum\limits_{Y_i\in L}\psi(Y_i,Y_j)\phi_i(Y_i)\prod_{k\in N_i\text{/}j}m_{k\rightarrow i}(Y_i)$$
然后迭代到收敛,就可以得到节点$i$的值是$Y_{i}$的概率了。有些朋友可能会有一些问号,这里不是要算$j$的吗,怎么得到了$i$的概率了,如果网上看的话,上面的那个图之中就也说明了,我们对于一个节点的预测一定不是通过一个方向的,我们所需的是多方面,尽可能的所有的信息,从而得到更好的,更加通用的信息。
Comments
Leave a Comment