node embedding

来源:互联网 发布:石头人升级数据 编辑:程序博客网 时间:2024/06/05 08:17

毕业太难了,感觉导师给定的方向就是network embedding,node embedding了。

认真读了三篇论文,还有一些博客,大概就记录一下:

论文:node2vec Scalable Feature Learning for Networks

Compact Integration of Multi-Network Topology for Functional Analysis of Genes

还有一个就是N2V之前的DeepWalk

在网络中做node 的embedding,node 或者网络信息的获取基本上第一步就是随机游走。

自己感觉分的类别,一个就是基于Word2Vec的模型,首先通过随机游走得到node 的上下文序列(类似于w2v里头单词的context),然后扔到模型里头,进而得到node 的向量。另一个就是像上面的第二篇论文,随机游走获得的是每一个node到网络中所有node的概率值,因此这个矩阵的维数是网络大小(较大的网络很难hold住,自己电脑估计会崩),那是怎么得到每一个node的向量呢?作者提出的损失函数是用KL散度表示的,新的向量维数与原始矩阵的KL散度作为损失函数,目标就是最小化损失函数,从而将 n 维(n是网络大小)降到了m维(一个很小的维度),在原文中,降维后node的向量是用两个参数向量x和w (x和w的维数都是m)表示的,反推过去的n维向量是用多元逻辑回归。当然这篇文章还有一个贡献就是可以整合不同的网络,涉及到的总节点数就是矩阵的维数了。在整合不同网络的时候,参数向量x和w是有不同的用法,详情见文章的补充材料。

接下来就都是通用的套路,机器学习。在生物信息网络上面的应用一般就是multi-classification,link-prediction,蛋白质功能预测,疾病关系预测等等。

之前做了一个小小的实验,小网络上跑了n2v和第二篇文章的方法,做了一个link-prediction,第二篇效果很好,现在不清楚两种方法分别适用于什么场景,文章读的太少....

今天看了一下别的,深度学习啊也用到network上了,但是还没看,。

-----------------------------------------------------------------------------------------分割线--------------------------------------------------------------

深度学习 自动编码器 network embedding 

论文:structural deep network embedding 

清华大学去年发在KDD上的一篇文章,主要是考虑了两个方面的因素来获取网络信息。一般来说,一个是node之间有连接的话,代表这两个节点相似;另一个虽然两个node之间可能没有直接连接,但是如果两个node的共同邻居很多的话,那他们也是很相似了。其实这个我之前也做过类似的,但是没想到要结合起来,两种我都是分开做的(弱鸡)。。根本也没想到用深度学习来做。

整个算法输入就是网络邻接矩阵,通过自动编码器来训练参数。损失函数是将上面两种联合起来。再看看,,,


原创粉丝点击