一种基于多层潜力和社区结构的影响最大化方法与流程

文档序号:12125749阅读:159来源:国知局

本发明属于计算机数据挖掘领域,具体涉及一种利用社区结构快速求解影响最大化问题的方法,尤其涉及大规模网络中的影响最大化求解问题。



背景技术:

影响最大化(Influence Maximization)是一个关于传播的优化问题。不论是某个公司的新产品或者某种理念的有效推广,还是对某种病毒或者灾害的有效控制,等一些其他同类型的问题,都避免不了考虑这样的一个问题,如何用有限的资源达到最好的效果。抽象为数学语言即为:对给定的网络G(V,E,W),(其中V代表图中的节点集合,E代表图中边的集合,W是从边集E的边到节点集V的节点对的映射所对应的权值)在V中寻找k个种子节点组成的集合S,在某种扩散模型下,最终的传播范围最广,即使得V中影响的节点数目σ(S)最大。由此可见,影响最大化的研究,具有很强的现实应用背景。

在经典的LT(Linear Threshold)和IC(Independent Cascade)传播模型下,[1]不仅证明了影响最大化问题是NP-C问题,影响最大化函数σ(S)是次模函数,而且还提出了结合次模的贪心算法来解决此问题。该算法在理论上至少保证可达到最优目标的(1-1/e-ε)。其中,e是自然对数,ε是任意小的正整数。简单的说,结合次模的贪心算法至少达到对应最优目标的63%。(次模函数定义为:设集合对都有σ(U∪v)-σ(U)≥σ(T∪v)-σ(T),σ(S)≤σ(T)。也就是说,如果σ(·)是一个有限集合到非负整数的映射,且满足递增且边界递减效应,则σ(·)是次模函数)由于其算法的时间复杂度,导致其很难适应于大型网络。随后的研究主要分为,对已有模型下提出最适用的算法和通过现实建模并构建出新的传播模型。有的现有技术结合次模特性,在独立级联模型下提出了CELF算法,很大程度上降低了原算法的时间复杂度。在此基础上,进而又提出了CELF++算法,时间复杂度提高30%~50%。但是由于上述算法,在每次迭代过程中均要多次蒙特卡洛模拟产生的平均值作为影响力,时间复杂度相对比较高,导致其还是很难应用于目前很多的大型网络。

基于此,很多启发式算法应运而生。一个直观而又简单的想法是,选择k个度最大的节点,其中正是利用了此想法,但在每步选择“未覆盖”的节点中选择度最大的。当一个节点被选择,它的邻居节点被标记为“覆盖”。由于其标记“覆盖”的过程中也直接将激活和覆盖等同,导致实验效果并不理想。有人提出了改进的Degree-Discount算法来进行初始节点的选择,和CELF算法不同的是,当一个节点被选择,其邻居节点的度减1,然后再此基础上选择度数最大的节点。然而它并不能解决将种子节点均衡分配到网络中的任务。随后结合种子节点的度和潜力提出了启发式算法和贪心算法相结合的选择策略,该类方法,不仅考虑各个节点的度和潜力值,还要根据不同网络选择用启发算法选择的种子节点的比率,导致实验结果不太好控制。

近些年也出现了基于社区影响最大化的研究。其中定义社区结构为一种相似性结构,即社区内部链接紧密而社区之间链接稀疏。基于此,很多研究就用节点在该社区内的影响近似在整个网络的影响,极大的缩小了时间复杂度。改进的k-means聚类算法将整个网络聚类为k个社区,基于处于同一社区的相似性高,不同社区的相似性小的特性,从而在各个社区中选取处于中心的节点(社区影响力较大的节点),构成初始种子节点集合S。这也导致忽略了社区间的差别,直接将各个社区看作同等地位,导致近似的误差性过大。AMICS算法是根据已有的社区挖掘算法识别出社区结构,然后选择跨社区最多的k个节点,作为初始种子节点集合S。实验表明在小型或中等网络结构中有不错的效果,也是没有考虑到社区间的区别。其中一种现有技术,首先是利用提出的HClustering算法检测社区,然后利用网络拓扑结构选取候种子节点,最后在候选种子中选取种子节点。该算法并没有在已有的独立级联模型或者线性阈值模型下验证。



技术实现要素:

有鉴于此,本发明的目的在于提供一种基于多层潜力和社区结构的影响最大化方法。

本发明的目的是通过以下技术方案来实现的,一种基于多层潜力和社区结构的影响最大化方法,其特征在于:包括两个阶段,第一阶段:社区间基于多层潜力的种子扩算;第二阶段:社区内的影响传播;

在第一阶段,种子节点v尝试激活其处于未激活状态的邻居节点{u|u∈N(v),active(u)=0},此过程中被激活的节点记为S1,则有其中N(S)=∪v∈SN(v),接下来,S1又会尝试激活其处于未激活状态邻居节点{u|u∈N(S1)\S,active(u)=0},此过程中被激活的节点记为S2

在第二阶段,将节点影响的范围限制在其所在的社区中,对任意的社区Ci∈C,影响规模取决于两个因素:1)社区Ci的大小|Ci|,2)S2的节点落在该社区的个数|S2∩Ci|,当|Ci|和|S2∩Ci|越大时,该社区的影响范围就越大;当|Ci|>>|S2∩Ci|时,该社区的影响取决于|S2∩Ci|的值;当|Ci|≈|S2∩Ci|时,该社区的影响取决于|Ci|的值。

进一步,在第一阶段中:

节点u∈N(S)\S的激活概率为:

节点v∈S的潜力为

节点v∈S1的潜力为

节点v∈N(S)\S的潜力为:

则表示|S1|,表示|S2|,

第一阶段的总影响为:

进一步,在第二阶段中,社区Ci的影响函数如下:

其中,α,β是非负常参数,第二阶段S2在整个网络的影响为:

把两阶段的影响相加,即为整个网络的影响:

由于采用以上技术方案,本发明具有以下优点:

本发明提出的基于多层潜力和社区结构的影响最大化方法,其效率不仅比已有最新的算法(如IPA算法)高,而且其准确性也高于IPA算法及其他启发式算法。

具体实施方式

下面对本发明的优选实施例进行详细的描述。

不失一般性,将一个无向无权图定义为G=(V,E,W),其中V是节点集合,E是边集合,W是对应边的链接权重。对于图G,可以用一个邻接矩阵A表示,如下:

对图中的任意节点v,其邻居节点集合表示为:

N(v)={u|Wv,u>0} (2)

在本发明中,用IC(Independent Cascade)模型,且对于图G(V,E,W),定义则节点u对v的激活权重为puv如下:

由此可得对于无权图G(V,E),则节点u对节点v的激活权重为kv表示v的度。进一步的把图G的社区结构定义为图G中节点的划分C={C1,C2,...,Ck};∪iCi=V;Ci∩Cj=Φ,其中第i个社区Ci包含一个或多个节点(本发明只考虑非重叠社区,即任意两个社区间无同时包含的节点)。给定任意节点v,用C(v)表示该节点所在社区。

在独立级联模型中,如果假定St表示第t步被激活的节点。则S0=S,因为开始时种子节点集S中的所有元素都处于激活状态。接下来从t=0到t=1,种子节点尝试激活其处于未激活状态的邻居节点{u|u∈N(v),active(u)=0}其中,active(u)=0表示节点u处于未激活状态。因此有其中N(S)=∪v∈SN(v)。如此重复,直到ST=Φ,得到整个网络的扩散范围是问题是,并不能确切得出S1,更别说接下来的S2,S3,S4…。

为了解决上述问题,本发明提出了基于多层潜力和社区结构的影响最大化传播方法。该方法假设影响力的传播分为两个阶段,1)社区间基于多层潜力的种子扩算,2)社区内的影响传播。

a)社区间基于多层潜力的种子扩算

在这个阶段,种子节点v尝试激活其处于未激活状态的邻居节点{u|u∈N(v),active(u)=0}。因此有其中N(S)=∪v∈SN(v)。接下来,S1又会尝试激活其处于未激活状态邻居节点{u|u∈N(S1)\S,active(u)=0},此过程中被激活的节点,记为S2。由于此过程,传播很可能是跨越多个社区,所以也称为种子节点的扩散。

b)社区内的影响传播

在本阶段考虑S2的影响力的过程中,在这里引入社区的概念,在每个社区中,节点就像开始的种子节点,其影响的范围限制在其所在的社区中,先前的研究也支撑了这种假设。

为了实现本发明,有两个问题需要解决:

1)已知种子节点怎么求得被激活的邻居节点,这包括S→S1以及S1→S2

2)节点S2在以后社区内的影响值。

问题1),本发明给出潜力的定义和解决方法:

节点u∈N(S)\S的激活概率为:

为了更好的解决上面的问题,本发明引入了多层潜力的概念,节点v∈S的潜力为:

那么在上面的基础上再进一步对节点v∈S1的潜力

公式(6)是基于S1和N(S1),但是不确切的知道S1以及N(S1)。由于节点v∈N(S)\S成为S1的激活概率为pSv;其隐含的表示了在考虑S的第二层邻居节点(可能包含S的第一层邻居节点和S)被激活时,至于被重复考虑的其他节点被认为是累加了更多的影响力。因此对v∈N(S)\S的潜力可以描述为:

就用表示|S1|,表示|S2|。

第一阶段的总影响为:

问题2)在该阶段,考虑S2中节点在各自社区中后续的影响。对任意的社区影响范围主要取决于两个因素。1)社区Ci的大小|Ci|,2)S2的节点落在该社区的个数|S2∩Ci|。为了更好的估计S2在社区Ci的影响,应该遵循以下规则:

当|Ci|和|S2∩Ci|越大时,该社区的影响范围就越大。

当|Ci|>>|S2∩Ci|时,该社区的影响取决于|S2∩Ci|的值。

当|Ci|≈|S2∩Ci|时,该社区的影响取决于|Ci|的值。

该社区Ci的影响函数g(S2,Ci)是|S2∩Ci|的次模。

基于此,本发明定义该社区Ci的影响函数如下:

其中,α,β是非负常参数。

第二阶段S2在整个网络的影响就是:

把两阶段的影响相加,即为整个网络的影响:

则公式(11)给出的目标函f(S)满足Submodularity。

为了证明f(S)是满足Submodularity,要证明f1(S)和f2(S2)分别满足Submodularity。

首先,证明f1(S)=|S|+|S1|+|S2|满足Submodularity,即对网络G=(V,E,W)中的节点v和节点集合V的子集T,R有:

f1(R∪v)-f1(R)≥f1(T∪v)-f1(T) (12)

当得到f1(R∪v)-f1(R)=f1(T∪v)-f1(T)=0,公式(12)满足。

当得到f1(R∪v)-f1(R)>0=f1(T∪v)-f1(T),公式(12)满足。

当则|R∪v|-|R|=|T∪v|-|T|=1,

因为则对得到p(T∪v)u-pTu≤p(R∪v)u-pRu,p(N(T∪v)\(T∪v))u-p(N(T)\T)u≤p(N(R∪v)\(R∪v))u-p(N(R)\R)u

由此可推出|(R∪v)1|-|R1|≥|(T∪v)1|-|T1|以及

|(R∪v)2|-|R2|≥|(T∪v)2|-|T2|。

因此f1(R∪v)-f1(R)≥f1(T∪v)-f1(T)。公式(12)满足。

接下来证明f2(S2)满足Submodularity。

由述可知,|S2|是关于S的次模函数。如果考虑社区可得出|S2∩Ci|也是关于S的次模函数。

设α≥0,β≥0,c≥0,其中α,β,c是人为设定的参数。

由微积分知识可得:

从而知道t(x)是关于x的单调递增函数,并且是随着x的增大,t(x)增加的速度越来越慢。因此对g(S2,Ci)是关于|S2∩Ci|单调递增的,且随着|S2∩Ci|增大,g(S2,Ci)增的越来越慢。

所以,g(S2,Ci)是关于|S2∩Ci|,也是S的次模函数。继而得出满足Submodularity。

综合1)和2),f(S)=f1(S)+f2(S2)满足Submodularity,定理得证。

最后说明的是,以上优选实施例仅用以说明本发明的技术方案而非限制,尽管通过上述优选实施例已经对本发明进行了详细的描述,但本领域技术人员应当理解,可以在形式上和细节上对其作出各种各样的改变,而不偏离本发明权利要求书所限定的范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1