整合多个网络的拓扑结构并降维(Mashup)
整合多个网络的拓扑结构并降维(Mashup)
介绍一个整合多个网络拓扑结构的方法,方法来源:Compact Integration of Multi-Network Topology for Functional Analysis of Genes.
文章想利用网络的拓扑结构信息来整合多个网络,利用提取的拓扑信息和数据的其他信息来推断节点的属性。比如利用整合后的网络和提取的拓扑信息为基因或蛋白质预测功能。大体流程如下:

(1)对每个网络采用重启随机游走,获得每一个节点的一个分布,捕获其与网络中其他所有节点的相关性。(网络中n个节点,则每个节点得到一个n维向量);
(2)构造一个多项逻辑模型来近似每个节点由随机游走得到的n维向量,模型的参数为两个低维特征向量(w, x向量),两个低维向量可以通过最小化模型向量和随机游走得到的扩散向量之间的差异得到;
(3)使用得到的低维向量(x向量)作为广泛的基于网络的功能推理任务的输入特征。
接下来我们说说每一步具体的步骤,首先我们说一下数据,现在有K个网络,每个网络有n个节点,每个网络的节点是一样的,但是边的连接不同。现在简单介绍一下重启随机游走算法:
重启随机游走(Random Walk with Restart)在分析网络结构上已经有很多的应用了。从初始节点出发,下一步走向哪个节点是由概率决定的。现在有一个(加权的)分子相互作用网络G=(V,E),有n个节点,每个节点表示一个基因或一个蛋白质,设该网络的邻接矩阵为A,转移概率矩阵为B,其中Bij表示节点j到节点i的转移概率,计算公式如下:
从节点i开始的重启随机游走定义为:

pr:重启的概率,在扩散过程中控制局部和全局拓扑信息的相对影响,重启概率比较大则说明局部结构更重要;
ei:n维的分布向量,ei(i) = 1且ei(j) = 0, 任意 j≠i;
sti:n维分布列向量,每一项表示从节点i出发经过t步后到达该节点的概率;
上式的第一项可以看做从与当前节点连接的其他节点继续更新的更新项,第二项为重启项。经过多次迭代后可以为每个节点计算一个n维的向量Si。
①我们应用上面的重启随机游走方法对网络1中的每个节点i计算一个n维向量Si,(也称为扩散向量或扩散状态)Sij表示从节点i出发到达节点j的概率;
②降维 因为我们拿到的数据本身是有噪声的,并且得到的扩散向量都是n维的,若n比较大,则在后续计算中耗时非常大(生物网路中的节点一般都在2万多,可见维度太大)。
那么我们如何降维呢?
我们利用多项逻辑模型为每一个扩散向量Si构建一个模型向量
,让模型向量近似扩散向量,使得它们之间的差异很小。我们用的逻辑模型为softmax,模型向量的每一项如下:

其中X, W的维度一样,我们设为d维,且d << n。
我们来看下文章是如何利用softmax降维的。Softmax回归中将x分为类别j的概率为:

k:一共的类别数;
x:特征向量;
θ:回归参数
我们用xi替换x,wj替换θj,则
定义式如下:

:表示从节点i转移到节点j的概率,我们可以理解为把i分类到类别j的概率(n个节点看做n个类别)

我们使用KL-散度来计算两个向量之间的差异,将差异最小化得到x, w向量。

我们用模型向量
近似扩散向量si,随后用模型中的x, w向量分别表示节点的特征向量和参数向量。这样就将原先的n x n矩阵变为n x d矩阵。
接下来我们扩展到k个网络中:w向量视为网络特异性上下文向量,共k x n个,x向量为节点的特征向量,在k个网络中实现共享,也就是利用x向量做到整合k个网络的目的,共n个。
w : k x n个,在计算模型向量时,作为节点特征向量的参数,根据网络的不同而不同,反映了网络的特异性;
x:n个,节点的特征向量,因为文章方法的目的就是整合网络的拓扑,因此采用的方式为:将k个网络中节点的x向量共享从而达到整合的目的。
此时我们对k个网络中近似扩散向量的softmax用以下公式:

其中x向量并没有上标k,说明x向量在k个网络中是一样的。求解x, w向量的函数如下:

我们计算出x, w向量后,就可以利用节点的x向量来做数据相关分析了。
文献:Compact Integration of Multi-Network Topology for Functional Analysis of Genes(http://www.cell.com/cell-systems/fulltext/S2405-4712(16)30360-X)
整合多个网络的拓扑结构并降维(Mashup)的更多相关文章
- openstack网络(neutron)模式之GRE的基本原理
neutron网络目的是为OpenStack云更灵活的划分网络,在多租户的环境下提供给每个租户独立的网络环境. neutron混合实施了第二层的VLAN和第三层的路由服务,它可为支持的网络提供防火墙, ...
- FC网络学习笔记02 -网络配置方法
随着新一代飞机的综合化航电系统对通信需求的不断提高,传统的ARINC429.1553B总线的传输速率分别只有100Kbps和1Mbps,其带宽已远远不 论文联盟 http://Www.LWlm.cOm ...
- 一文搞懂各种 Docker 网络 - 每天5分钟玩转 Docker 容器技术(72)
前面各小节我们先后学习了 Docker Overaly,Macvaln,Flannel,Weave 和 Calico 跨主机网络方案.目前这个领域是百家争鸣,而且还有新的方案不断涌现. 本节将从不同维 ...
- 快速开发基于 HTML5 网络拓扑图应用--入门篇(一)
计算机网络的拓扑结构是引用拓扑学中研究与大小,形状无关的点.线关系的方法.把网络中的计算机和通信设备抽象为一个点,把传输介质抽象为一条线,由点和线组成的几何图形就是计算机网络的拓扑结构.网络的拓扑结构 ...
- Python网络编程篇之socket
1 socket 插座?呵呵,想多了,翻译过来意思是套接字! A network socket is an internal endpoint for sending or receiving dat ...
- 开源网络监控管理系统:OpenNMS
OpenNMS是一个开源的企业级基于Java/XML的分布式网络和系统监控管理平台.OpenNMS是管理网络的绝好工具,它能够显示网络中各中终端和服务器的状态和配置,为方便地管理网络提供有效的信息. ...
- 072、一文搞懂各种Docker网络 (2019-04-17 周三)
参考https://www.cnblogs.com/CloudMan6/p/7587532.html 前面各个小节我们学习了 Docker Overlay .Macvlan .Flannel.We ...
- 第 8 章 容器网络 - 072 - 一文搞懂各种 Docker 网络
Docker 起初只提供了简单的 single-host 网络,显然这不利于 Docker 构建容器集群并通过 scale-out 方式横向扩展到多个主机上. 跨主机网络方案: Docker Over ...
- Hyperledger Fabric 建立一个简单网络
Building you first network 网络结构: 2个Orgnizations(每个Org包含2个peer节点)+1个solo ordering service 打开fabric-sa ...
随机推荐
- P2055 [ZJOI2009]假期的宿舍
思路 看到复杂的匹配条件,发现要让一个人和一个床匹配,所以就每个有床的人(指本校学生)和t连一条边,每个需要床的人(指外校的人和不回家的人)和s连一条边,i和j互相认识就把i和j的床连在一起,自己和自 ...
- Multi-attention Network for One Shot Learning
Multi-attention Network for One Shot Learning 2018-05-15 22:35:50 本文的贡献点在于: 1. 表明类别标签信息对 one shot l ...
- LeetCode - 198 简单动态规划 打家劫舍
你是一个专业的小偷,计划偷窃沿街的房屋.每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警. 给定一个代表每 ...
- Shiro学习笔记五(Shiro标签,及通配符)
1.首先是导入标签库 <%@taglib prefix="shiro" uri="http://shiro.apache.org/tags" %> ...
- 1、HA Cluster基础原理
Linux Cluster --> linux集群类型分三种: LB:负载均衡,LoadBalance HA:双机集群系统,指高可用性集群,High Available HP:Hadoop ...
- Ajax - 汇总
1,什么是ajax? 为什么要使用ajax? 1.ajax是"asynchornous javascript and xml "的缩写,指一种创建交互式网页应用的网页开发技术. 2 ...
- Selenium 页面自动化测试 面试 问题汇总
1. 专业技术 在学习完Selenium的大部分接口或者方法之后,你可能会去面试自动化测试,主要是Selenium的自动化测试.下面这些问题总结,可能会对你有所帮助. 什么是Selenium? S ...
- VC.时间_ZC测试代码
1. #include <windows.h> #include <stdio.h> void TimeNowZ( char* _pc ) { SYSTEMTIME sys; ...
- JNI手动释放内存(避免内存泄露)
. 哪些需要手动释放? 不要手动释放(基本类型): jint , jlong , jchar 需要手动释放(引用类型,数组家族): jstring,jobject ,jobjectArray,jint ...
- Python生成pyd文件
Python的脚本文件是开源的,量化策略的安全性没有保障.因此需要保护源码.那么要对Python代码进行混淆.加密保护. 混淆代码,我准备使用pyminifier.而加密处理,就比较麻烦. Pytho ...
