复杂网络谱熵的拟合包
networkqit的Python项目详细描述
网络:复杂网络的谱熵
最近,量子统计力学提出了一种信息论方法,用来优化网络模型,并评估它们相对于合成网络和现实网络的可能性。 重要的是,该方法不依赖于特定的拓扑特征或网络描述符,而是利用基于熵的网络距离度量。 通过与热力学的类比,网络为谱熵的估计和模型参数的拟合提供了一种计算工具。 这些结果使这一新颖而强大的框架在网络模型推理中得到了实际应用。
文档
此软件包的完整文档正在开发中,目前正在编写中,其当前版本位于:
< div >https://networkqit.github.io/安装
要使用networkqit包,我们建议使用virtualenv
。
networkqit包是纯python,因此它应该在linux、mac osx和windows上工作。
这里我们报告在标准ubuntu linux安装中的使用说明。
如何在Linux上安装
- 打开终端,安装
pip
和virtualenv
并克隆此存储库
sudo apt-get install python3-pip
sudo pip3 install virtualenv
virtualenv workspace
cd workspace
git clone https://github.com/carlonicolini/networkqit
- 您克隆了存储库。现在开始virtualenv会话。
source bin/activate
- 如果您在
virtualenv
会话中,请检查您使用的python版本是否是由virtualenv
提供的版本。
which python3
- 现在,在
virtualenv
环境中安装networkqit包。
cd networkqit
python3 setup.py sdist
现在安装创建的python包,该包应该包含所有依赖项matplotlib
,numpy
,networkx
,pandas
,numdifftools
,bctpy
cd ..
pip3 install networkqit/dist/networkqit-0.1.tar.gz
入门
在这里,我们将讨论如何使用网络
计算网络的谱熵
首先研究著名空手道俱乐部图密度矩阵的谱熵。 这个例子展示了如何生成本文中所示的谱熵图。
importnetworkxasnxG=nx.karate_club_graph()A=nx.to_numpy_array(G)importnetworkqitasnqimportnumpyasnpimportmatplotlib.pyplotaspltplt.style.use('ggplot')beta_range=np.logspace(-3,3,200)Sbeta=nq.batch_compute_vonneumann_entropy(L=nq.graph_Laplacian(A),beta_range=beta_range)plt.semilogx(beta_range,Sbeta)plt.xlabel('$\\beta$')plt.ylabel('$S$')plt.title('Unnormalized spectral entropy')plt.show()
光谱熵总是在[0,log(n)]
范围内,所以如果我们简单地除以logn
其中$n$是数字
对于节点,我们在[0,1]
范围内重新规范化它。
生成网络模型
网络qit具有大量的网络模型,主要是在最大熵范围内获得的模型
框架。您可以创建许多模型,并使用一致的命名法对其调用方法:
在这里,我们创建一个无向二进制配置模型(ubcm)的实例,并从中抽取10个随机网络
集成,基于在[0,1]
域中随机创建的适应度参数
importnetworkqitasnqN=10model=nq.UBCM(N=10)xi=np.random.random([N,])adj_graphs=model.sample_adjacency(xi,batch_size=5)print(adj_graphs.shape)
调用返回一个numpy数组,其中最后两个维度嵌入了5个随机图的邻接矩阵。 该方法适用于networkqit中实现的每个生成模型,并基于用于优化谱熵的最大化和样本方法。
谱熵的经典优化
networkqit还可以使用网络模型拟合。定义模型优化的实用程序在算法
包中定义,这里我们将描述如何在非稀疏限制下运行模型优化(在前面的文章中讨论过的限制)。
以下几行描述了期望拉普拉斯模型的优化示例。 我们首先创建一个对象erdosrenyi来描述预期的拉普拉斯(laplacian)邻接。拉普拉斯梯度 关于唯一的连续参数$p$。
importnetworkxasnximportnetworkqitasnqimportnumpyasnpG=nx.karate_club_graph()A=nx.to_numpy_array(G)L=nq.graph_Laplacian(A)beta_range=np.logspace(-3,3,20)ermodel=nq.ErdosRenyi(N=len(A))
我们可以调用ermodel
就好像它是一个简单的函数一样:
print(ermodel([0.5]))
这将返回预期的邻接矩阵a34x34
矩阵,其中0.5
不在对角线上,0
在对角线上。
ermodel
还允许调用诸如预期拉普拉斯梯度或预期拉普拉斯梯度之类的方法:
sudo apt-get install python3-pip
sudo pip3 install virtualenv
virtualenv workspace
cd workspace
git clone https://github.com/carlonicolini/networkqit
0
否则,我们可以从鄂尔多斯-仁义模型中抽取10个独立的网络,用样本邻接的方法
sudo apt-get install python3-pip
sudo pip3 install virtualenv
virtualenv workspace
cd workspace
git clone https://github.com/carlonicolini/networkqit
1
一旦定义了ermodel对象,我们就可以借助于类continuousoptimizer在谱熵框架中优化它的参数。
我们将观测到的邻接矩阵初始化为a
和初始解x0=np.array([0.2])
。将x0
定义为numpy数组很重要。
最后,beta_range
是一个numpy数组,其范围为beta
以优化模型。
sudo apt-get install python3-pip
sudo pip3 install virtualenv
virtualenv workspace
cd workspace
git clone https://github.com/carlonicolini/networkqit
2
谱熵的随机优化
大多数模型不允许对其谱似然性进行分析处理。
这需要知道拉普拉斯特征值谱密度的精确解析公式,对于大多数有用的网络模型来说,这仍然是一个尚未解决的问题。
为了进行谱似然优化,我们可以进行随机优化,并找到经验图的参数,以便在模型集合上平均期望的相对熵
最小化。
在networkqit中执行此操作很简单,因为库依赖于autograd
包来自动计算随机函数的复杂梯度。
利用机器学习中的优化方法ADAM,我们可以对模型空手道俱乐部网络的鄂尔多斯仁义模型的期望相对熵进行优化,用A表示,并考察了温度逆参数的变化对优化结果的影响。CESS. < /P>
在每次迭代中,从模型中抽取一个批处理大小
个数的随机网络,并利用它们的平均谱特性来计算期望相对熵的近似值。
在本例中,我们将看到如何使用
n(n-1)
自由bernoulli随机变量来优化模型,这些随机变量描述图中的链接。
在for
循环的每个阶段,我们都会将结果与原始网络进行比较。我们在ADAM的每次迭代中抽取32个独立网络的样本,以形成计算拉普拉斯谱的良好统计。
这是优化循环的结果。看看模型的谱熵如何近似于经验网络的谱熵。
sudo apt-get install python3-pip
sudo pip3 install virtualenv
virtualenv workspace
cd workspace
git clone https://github.com/carlonicolini/networkqit
3
经典极大似然估计
networkqit还具有许多最大熵随机图模型,从软配置模型到鄂尔多斯仁义模型、加权随机图模型和增强配置模型。
你只需打几个电话,就可以把这些模型简单地拟合到经验数据上。
例如,我们将无向配置模型的lagrange乘子拟合到经验网络a
上,然后从该模型的最优值中抽取100个网络:
sudo apt-get install python3-pip
sudo pip3 install virtualenv
virtualenv workspace
cd workspace
git clone https://github.com/carlonicolini/networkqit
4
在这种情况下,我们不绘制期望的权重,因为这个模型支持只有二进制网络,但如果您愿意,我们可以适合无向增强配置模型:
sudo apt-get install python3-pip
sudo pip3 install virtualenv
virtualenv workspace
cd workspace
git clone https://github.com/carlonicolini/networkqit
5
如您所见,使用增强配置模型时,即使网络未加权,权重和链路概率也会正确地安装在模型中。
引用
要引用networkqit,请包括以下bibtex格式的出版物:
sudo apt-get install python3-pip
sudo pip3 install virtualenv
virtualenv workspace
cd workspace
git clone https://github.com/carlonicolini/networkqit
6