首页 > 专利 > 淮阴工学院 > 一种线上产品推销选取初始用户的方法专利详情

一种线上产品推销选取初始用户的方法   0    0

有效专利 查看PDF
专利申请流程有哪些步骤?
专利申请流程图
申请
申请号:指国家知识产权局受理一件专利申请时给予该专利申请的一个标示号码。唯一性原则。
申请日:提出专利申请之日。
2018-06-20
申请公布
申请公布指发明专利申请经初步审查合格后,自申请日(或优先权日)起18个月期满时的公布或根据申请人的请求提前进行的公布。
申请公布号:专利申请过程中,在尚未取得专利授权之前,国家专利局《专利公报》公开专利时的编号。
申请公布日:申请公开的日期,即在专利公报上予以公开的日期。
2019-01-01
授权
授权指对发明专利申请经实质审查没有发现驳回理由,授予发明专利权;或对实用新型或外观设计专利申请经初步审查没有发现驳回理由,授予实用新型专利权或外观设计专利权。
2021-08-31
预估到期
发明专利权的期限为二十年,实用新型专利权期限为十年,外观设计专利权期限为十五年,均自申请日起计算。专利届满后法律终止保护。
2038-06-20
基本信息
有效性 有效专利 专利类型 发明专利
申请号 CN201810637291.3 申请日 2018-06-20
公开/公告号 CN108960979B 公开/公告日 2021-08-31
授权日 2021-08-31 预估到期日 2038-06-20
申请年 2018年 公开/公告年 2021年
缴费截止日
分类号 G06Q30/06 主分类号 G06Q30/06
是否联合申请 独立申请 文献类型号 B
独权数量 1 从权数量 3
权利要求数量 4 非专利引证数量 1
引用专利数量 0 被引证专利数量 0
非专利引证 1、CN 108182640 A,2018.06.19马跃华.基于二阶邻居范围内的社交影响力分析《.中国优秀硕士论文全文数据库信息科技辑》.2018,(第05期),刘晓东.大规模社会网络中影响最大化问题高效处理技术研究《.中国博士学位论文全文数据库信息科技辑》.2015,;
引用专利 被引证专利
专利权维持 4 专利申请国编码 CN
专利事件 事务标签 实质审查、授权
申请人信息
申请人 第一申请人
专利权人 淮阴工学院 当前专利权人 淮阴工学院
发明人 陈伯伦、袁燕、朱全银 第一发明人 陈伯伦
地址 江苏省淮安市经济技术开发区枚乘东路1号 邮编 223003
申请人数量 1 发明人数量 3
申请人所在省 江苏省 申请人所在市 江苏省淮安市
代理人信息
代理机构
专利代理机构是经省专利管理局审核,国家知识产权局批准设立,可以接受委托人的委托,在委托权限范围内以委托人的名义办理专利申请或其他专利事务的服务机构。
南京苏高专利商标事务所 代理人
专利代理师是代理他人进行专利申请和办理其他专利事务,取得一定资格的人。
梁耀文
摘要
本发明公开了一种线上产品推销选取初始用户的方法。首先对线上产品的数据集进行处理,得到真实的拓扑结构图G(V,E),接着计算G中所有节点的t阶邻居,把每个节点当成初始用户对其邻居进行独立级联模型传播,计算节点的影响力,然后为节点选取最佳的t’阶邻居,从节点的t’阶邻居中选取影响力最大的作为初始用户。本发明在节点的t阶邻居中选择初始用户降低了时间复杂度。
  • 摘要附图
    一种线上产品推销选取初始用户的方法
  • 说明书附图:图1
    一种线上产品推销选取初始用户的方法
  • 说明书附图:图2
    一种线上产品推销选取初始用户的方法
  • 说明书附图:图3
    一种线上产品推销选取初始用户的方法
  • 说明书附图:图4
    一种线上产品推销选取初始用户的方法
  • 说明书附图:图5
    一种线上产品推销选取初始用户的方法
  • 说明书附图:图6
    一种线上产品推销选取初始用户的方法
法律状态
序号 法律状态公告日 法律状态 法律状态信息
1 2021-08-31 授权
2 2019-01-01 实质审查的生效 IPC(主分类): G06Q 30/06 专利申请号: 201810637291.3 申请日: 2018.06.20
权利要求
权利要求书是申请文件最核心的部分,是申请人向国家申请保护他的发明创造及划定保护范围的文件。
1.一种线上产品推销选取初始用户的方法,其特征在于,包括如下步骤:
步骤(1)对线上产品的数据集进行处理,得到真实的拓扑结构图G(V,E);其中,V表示线上产品G中的节点集合,E表示线上产品G中的边的集合,求节点和边的势;输入P,P是独立级联模型中一个被激活节点v激活其未激活的出度邻居节点的概率,输入S,S是选取种子节点即初始用户的个数;
步骤(2)计算每个节点的t阶邻居,把求得的每个节点的t阶邻居放在一个大集合
SubList里,t=1,2,3,4,5,6,7,8,9,10;
步骤(3)把每个节点都当成初始用户,把每个节点的t阶邻居都当成是一个网络,让每个节点对他的t阶邻居进行R次独立级联模型传播,R是自己定义的正整数,计算每个节点对他的t阶邻居的平均影响力,t=1,2,3,4,5,6,7,8,9,10;
步骤(4)把节点t阶邻居按照影响力从大到小进行排序,选取每阶邻居中影响力最大的
50个节点,通过比较,发现节点的t'阶邻居影响力最大,t=1,2,3,4,5,6,7,8,9,10,且t'∈t;
步骤(5)对节点的t阶邻居中所有的节点在整个网络中进行K次独立级联模型传播,t'是步骤5中求到的值,K是自己定义的正整数,在节点的t'阶邻居中选取最大的S个节点作为初始用户;
其中,所述步骤(1)中对线上产品的数据集进行处理的具体步骤如下:
步骤(1.1)删除线上产品的数据集中存在的自环,得到真实的拓扑结构图G(V,E),G是邻接矩阵;
步骤(1.2)节点的势就是G中有多少个节点,边的势就是G中有多少条边,求得节点的势m和边的势n;
步骤(1.3)独立级联是一种概率模型,当一个节点v被激活时,它会以概率P对它未激活的出边邻居节点w尝试激活,这种尝试仅仅进行一次,而且这些尝试之间是相互独立的,即v对w的激活不会受到其他节点的影响;概率P是实验一开始定义的,因此在根据社交网络中用户邻居选取影响力最大化初始节点中,P=1/degree;degree是节点的度,计算邻接矩阵G的每一行的和记为矩阵Degree,是节点对应的度;
其中,所述步骤(2)中计算节点t阶邻居的具体步骤如下:
步骤(2.1)对步骤(1.1)中的邻接矩阵G的行/列进行编号,第一行/列是1,第二行/列是
2…依次标号;
步骤(2.2)求节点i的1阶邻居,设定一个m行m列的空矩阵D,m是步骤(1.2)中求得的节点的势;把矩阵D的第i行第i列的0改为1,计算矩阵D*G,求得的是节点i的1阶邻居的子图,定义为J1;
步骤(2.3)求节点i的2阶邻居,取邻接矩阵G的第i行,设为矩阵A,把矩阵A的第i个数改为1,生成一个矩阵B,对角线是矩阵A,其余都为0;计算矩阵B*G,求得的是节点i的2阶邻居的子图,定义为J2;
步骤(2.4)求节点i的3阶邻居,首先计算G+G*G,记为矩阵F1,把矩阵F1中不是0的数都置为1,并且把对角线上的数都置为0;取矩阵F1的第i行,设为矩阵C1,把矩阵C1的第i个数改为1,生成一个矩阵E1,对角线是矩阵C1,其余数都为0;计算矩阵E1*G,求得的是节点i的3阶邻居的子图,定义为J3;
2 3
步骤(2.5)求节点i的4阶邻居,首先计算G+G+G ,设定为矩阵F2,把矩阵F2中不是0的数都置为1,并且把对角线上的数都置为0;取矩阵F2的第i行,设为矩阵C2,把矩阵C2的第i个数改为1,生成一个矩阵E2,对角线是矩阵C2,其余数都为0;计算矩阵E2*G,求得的是节点i的4阶邻居的子图,定义为J4;
2 3 4
步骤(2.6)求节点i的5阶邻居,首先计算G+G +G +G ,设定为矩阵F3,把矩阵F3中不是0的数都置为1,并且把对角线上的数都置为0;取矩阵F3的第i行,设为矩阵C3,把矩阵C3的第i个数改为1,生成一个矩阵E3,对角线是矩阵C3,其余数都为0;计算矩阵E3*G,求得的是节点i的5阶邻居的子图,定义为J5;
2 3 4 5
步骤(2.7)求节点i的6阶邻居,首先计算G+G+G+G+G ,设定为矩阵F4,把矩阵F4中不是
0的数都置为1,并且把对角线上的数都置为0;取矩阵F4的第i行,设为矩阵C4,把矩阵C4的第i个数改为1,生成一个矩阵E4,对角线是矩阵C4,其余数都为0;计算矩阵E4*G,求得的是节点i的6阶邻居的子图,定义为J6;
2 3 4 5 6
步骤(2.8)求节点i的7阶邻居,首先计算G+G+G+G +G+G ,设定为矩阵F5,把矩阵F5中不是0的数都置为1,并且把对角线上的数都置为0;取矩阵F5的第i行,设为矩阵C5,把矩阵C5的第i个数改为1,生成一个矩阵E5,对角线是矩阵C5,其余数都为0;计算矩阵E5*G,求得的是节点i的7阶邻居的子图,定义为J7;
2 3 4 5 6 7
步骤(2.9)求节点i的8阶邻居,首先计算G+G+G+G+G+G+G ,设定为矩阵F6,把矩阵F6中不是0的数都置为1,并且把对角线上的数都置为0;取矩阵F6的第i行,设为矩阵C6,把矩阵C6的第i个数改为1,生成一个矩阵E6,对角线是矩阵C6,其余数都为0;计算矩阵E6*G,求得的是节点i的8阶邻居的子图,定义为J8;
步骤(2.10)求节点i的9阶邻居,首先计算
2 3 4 5 6 7 8
G+G+G +G+G +G+G +G ,设定为矩阵F7,把矩阵F7中不是0的数都置为1,并且把对角线上的数都置为0;取矩阵F7的第i行,设为矩阵C7,把矩阵C7的第i个数改为1,生成一个矩阵E7,对角线是矩阵C7,其余数都为0;计算矩阵E7*G,求得的是节点i的9阶邻居的子图,定义为J9;
步骤(2.11)求节点i的10阶邻居,首先计算
2 3 4 5 6 7 8 9
G+G+G+G +G+G +G+G +G设定为矩阵F8,把矩阵F8中不是0的数都置为1,并且把对角线上的数都置为0;取矩阵F8的第i行,设为矩阵C8,把矩阵C8的第i个数改为1,生成一个矩阵E8,对角线是矩阵C8,其余数都为0;计算矩阵E8*G,求得的是节点i的10阶邻居的子图,定义为J10;
步骤(2.12)所有节点i∈V的1阶节点的子图都在J1中,所有节点i∈V的2阶节点的子图都在J2中,所有节点i∈V的3阶节点的子图都在J3中,所有节点i∈V的4阶节点的子图都在J4中,所有节点i∈V的5阶节点的子图都在J5中,所有节点i∈V的6阶节点的子图都在J6中,所有节点i∈V的7阶节点的子图都在J7中,所有节点i∈V的8阶节点的子图都在J8中,所有节点i∈V的9阶节点的子图都在J9中,所有节点i∈V的10阶节点的子图都在J10中,把J1、J2、J3、J4、J5、J6、J7、J8、J9、J10放在矩阵SubList中。

2.根据权利要求1所述的一种线上产品推销选取初始用户的方法,其特征在于,所述步骤(3)中计算节点平均影响力的具体步骤如下:
步骤(3.1)定义一个正整数R,空矩阵In;
步骤(3.2)计算矩阵G的每一行的和,放在矩阵degree中,矩阵degree中存放的是每个节点的度;定义循环变量x,x∈[1,R];
步骤(3.3)如果x≤R,则跳转到步骤(3.4),不然跳转到步骤(3.10);
步骤(3.4)把节点i当成活跃节点,对它的邻居节点v产生影响,使v激活的概率是P,且机会只有一次;P=1/degree,degree是步骤(3.2)中求得的节点i的度;v属于节点i的t阶邻居,t=1,2,3,4,5,6,7,8,9,10;
步骤(3.5)如果节点v被激活成功,那么节点v转为活跃状态,将对其邻接非活跃节点产生影响;否则,节点v不发生变化;
步骤(3.6)重复步骤(3.3)和(3.4),直到不能再激活新的节点,传播过程结束;
步骤(3.7)每个节点在t阶邻居中激活的节点的个数就是它的影响力;
步骤(3.8)每个节点在它的1阶邻居中的影响力存在矩阵In1中,在它的2阶邻居中的影响力存在矩阵In2中,在它的3阶邻居中的影响力存在矩阵In3中,在它的4阶邻居中的影响力存在矩阵In4中,在它的5阶邻居中的影响力存在矩阵In5中,在它的6阶邻居中的影响力存在矩阵In6中,在它的7阶邻居中的影响力存在矩阵In7中,在它的8阶邻居中的影响力存在矩阵In8中,在它的9阶邻居中的影响力存在矩阵In9中,在它的10阶邻居中的影响力存在矩阵In10中;
步骤(3.9)x=x+1;
步骤(3.10)把R次求得的影响力累加起来,然后除以R,求每个节点在其t阶邻居中的平均影响,放在矩阵In中。

3.根据权利要求2所述的一种线上产品推销选取初始用户的方法,其特征在于,所述步骤(4)中选取最佳节点t’阶邻居的具体步骤如下:
步骤(4.1)对矩阵In1,In2,In3,In4,In5,In6,In7,In8,In9,In10里面的值进行从大到小排序;
步骤(4.2)选取矩阵In1,In2,In3,In4,In5,In6,In7,In8,In9,In10中的前50个数值,按顺序放在矩阵Z1,Z2,Z3,Z4,Z5,Z6,Z7,Z8,Z9,Z10中;
步骤(4.3)画图,横轴是1到10,是10个数,纵轴是矩阵Z1,Z2,Z3,Z4,Z5,Z6,Z7,Z8,Z9,Z10中的数,发现在t=t'时,纵轴上的数最大,也就是节点t’阶邻居影响力最大。

4.根据权利要求3所述的一种线上产品推销选取初始用户的方法,其特征在于,所述步骤(5)中选取初始用户的具体步骤如下:
步骤(5.1)定义一个正整数M,从步骤(2.12)中取出矩阵SubList,并从矩阵SubList中取出矩阵Jt',t'∈[1,10];
步骤(5.2)定义循环变量y,y∈[1,M],计算矩阵Jt'每一行的和,记为矩阵De,矩阵De中存放的是节点t'阶邻居的度;
步骤(5.3)如果y≤M,则跳转到步骤(5.4),不然跳转到步骤(5.9);
步骤(5.4)把矩阵Jt'中的节点当成活跃节点,对它的邻居节点w产生影响,使w激活的概率是P,且机会只有一次;P=1/degree,degree是步骤(5.2)中求得的矩阵De中的数;
步骤(5.5)如果节点w被激活成功,那么节点w转为活跃状态,将对其邻接非活跃节点产生影响;否则,节点w不发生变化;
步骤(5.6)重复步骤(5.4)和(5.5),直到不能再激活新的节点,传播过程结束;
步骤(5.7)每个节点在线上产品的数据集中激活的节点的个数就是它的影响力,记为矩阵IN;
步骤(5.8)y=y+1;
步骤(5.9)把M次求得的影响力累加起来,然后除以M,求每个节点在整个网络中的平均影响,全部放在矩阵LIN中;
步骤(5.10)对矩阵LIN中的值进行排序,选取值最大的S个,其对应的节点即为初始用户。
说明书

技术领域

[0001] 本发明属于复杂网络领域,特别涉及一种线上产品推销选取初始用户的方 法。

背景技术

[0002] 影响力最大化的目标是在一个在线社交网络中选择一组用户。具有最大影响 的种子集,即在信息传播中,通过种子集的受影响用户的预期数量是最大化的。 影响力最大化的一个众所周知的应用是病毒营销,一个公司可能希望通过用户之 间的社交链接,将新产品的采用从一些最初选择的采用者中传播出去。由于影响 力最大化是一个NP‑hard问题,现有的工作集中在近似的解决方案上,而这些影 响力最大化算法研究的重点是贪婪的框架。我们回顾贪婪的框架并提出一个分类 方法,现有基于仿真方法,基于代理和草图方法,基于他们的算法设计实现不同期 望的目标。
[0003] 贪婪算法在每一步都将当前最具有影响力的节点作为候选节点放入种子集 合中,然后不断地进行迭代直到所有的种子节点被选出。然而此算法的局部最优 策略并不能保证最终结果的全局最优,而且算法的效率比较低,时间复杂度较高, 不适用于大规模的实际网络。在此基础上,Tsai等人对贪婪算法进行了改进, 提出了GNG算法(Genetic NewGreedy,GNG)。实验表明该算法结合了遗传算 法的一些特性后可将贪婪算法的性能提高10%左右。Cheng等人为了解决影响 力最大化算法的准确率和可扩展性的两难问题,提出了启发式SG算法 (StaticGreedy,SG)。该算法利用了影响力最大化目标函数的子模特性用于选择 当前最有影响力的节点,以此来降低候选节点选取所花费的时间。Gong等人提 出了基于概率转移矩阵的影响力最大化PTMA算法(Probability Transfer Matrix Algorithm,PTMA),该算法通过矩阵乘积的方法得到某一时刻节点之间的影响 概率,而无需在每个时刻计算所有非活跃节点的边际效益来提高算法运行时的效 率。Cao等人提出了基于核数层次特征和影响半径的启发式算法‑核覆盖算法  CCA(Core Covering Algorithm,CCA)。该算法首先引入K‑核概念,基于K‑ 核分解求出每个节点的核数,然后根据核数分布的层次性,引入节点的影响半径 参数,最后综合核数和度数两个属性,找出影响力节点集合。陈浩等人基于阈值 提出了一个潜在影响节点数PIN的概念,通过考虑节点本身的初试激活阈值, 节点已激活的入边邻居对其的影响力,以及节点对其邻居节点的影响力。在第一 阶段选择PIN最大的作为种子节点,在第二阶段通过贪心算法选择种子节点, 该算法复杂度小,影响力的范围大。此类影响力最大化的算法设计都是基于模型 驱动的,在给定影响力传播模型的基础上,利用启发式的方法进行种子节点的选 取。
[0004] 传统的选取产品推销初始用户是通过人工选择的,人工选择的方法由于消耗 人力资源,且存在一定的片面性,并不能根据产品和对象的特征进行选择,导致 选择初始用户的效果并不可观。

发明内容

[0005] 发明目的:针对上述问题,本发明提供一种节约时间和人力成本,并且降低 了时间复杂度的线上产品推销选取初始用户的方法。
[0006] 技术方案:本发明提出一种线上产品推销选取初始用户的方法,包括如下步 骤:
[0007] 步骤1:对线上产品的数据集进行处理,得到真实的拓扑结构图G(V,E); 其中,V表示G中的节点集合,E表示G中的边的集合,输入P,P是独立级联 模型中一个被激活节点v激活其未激活的出度邻居节点的概率,输入S,S是选 取种子节点的个数,具体方法为:
[0008] 步骤1.1:删除线上产品的数据集中存在的自环,得到真实的拓扑结构图 G(V,E),G是邻接矩阵;
[0009] 步骤1.2:节点的势就是G中有多少个节点,边的势就是G中有多少条边, 求得节点的势m和边的势n;
[0010] 步骤1.3:独立级联是一种概率模型,当一个节点v被激活时,它会以概率P 对它未激活的出边邻居节点w尝试激活,这种尝试仅仅进行一次,而且这些尝试 之间是相互独立的,即v对w的激活不会受到其他节点的影响。概率P是实验一 开始定义的,因此在根据社交网络中用户邻居选取影响力最大化初始节点中, P=1/degree。degree是节点的度,计算邻接矩阵G的每一行的和记为矩阵Degree, 是节点对应的度。
[0011] 步骤2:计算每个节点的t阶邻居,把求得的每个节点的t阶邻居放在一个 大集合SubList里,t=1,2,3,4,5,6,7,8,9,10,具体方法为:
[0012] 步骤2.1:对步骤1.1中的邻接矩阵G的行/列进行编号,第一行/列是1,第 二行/列是2…依次标号;
[0013] 步骤2.2:求节点i的1阶邻居,设定一个m行m列的空矩阵D,m是步骤 1.2中求得的节点的势。把矩阵D的第i行第i列的0改为1,计算矩阵D*G, 求得的是节点i的1阶邻居的子图,定义为J1;
[0014] 步骤2.3:求节点i的2阶邻居,取邻接矩阵G的第i行,设为矩阵A,把 矩阵A的第i个数改为1,生成一个矩阵B,对角线是矩阵A,其余都为0;计 算矩阵B*G,求得的是节点i的2阶邻居的子图,定义为J2;
[0015] 步骤2.4:求节点i的3阶邻居,首先计算G+G*G,记为矩阵F1,把矩阵 F1中不是0的数都置为1,并且把对角线上的数都置为0;取矩阵F1的第i行, 设为矩阵C1,把矩阵C1的第i个数改为1,生成一个矩阵E1,对角线是矩阵 C1,其余数都为0;计算矩阵E1*G,求得的是节点i的3阶邻居的子图,定义 为J3;
[0016] 步骤2.5:求节点i的4阶邻居,首先计算G+G2+G3,设定为矩阵F2,把 矩阵F2中不是0的数都置为1,并且把对角线上的数都置为0;取矩阵F2的第 i行,设为矩阵C2,把矩阵C2的第i个数改为1,生成一个矩阵E2,对角线是 矩阵C2,其余数都为0;计算矩阵E2*G,求得的是节点i的4阶邻居的子图, 定义为J4;
[0017] 步骤2.6:求节点i的5阶邻居,首先计算G+G2+G3+G4,设定为矩阵F3, 把矩阵F3中不是0的数都置为1,并且把对角线上的数都置为0;取矩阵F3的 第i行,设为矩阵C3,把矩阵C3的第i个数改为1,生成一个矩阵E3,对角线 是矩阵C3,其余数都为0;计算矩阵E3*G,求得的是节点i的5阶邻居的子图, 定义为J5;
[0018] 步骤2.7:求节点i的6阶邻居,首先计算G+G2+G3+G4+G5,设定为矩 阵F4,把矩阵F4中不是0的数都置为1,并且把对角线上的数都置为0;取矩 阵F4的第i行,设为矩阵C4,把矩阵C4的第i个数改为1,生成一个矩阵E4, 对角线是矩阵C4,其余数都为0;计算矩阵E4*G,求得的是节点i的6阶邻居 的子图,定义为J6;
[0019] 步骤2.8:求节点i的7阶邻居,首先计算G+G2+G3+G4+G5+G6,设定 为矩阵F5,把矩阵F5中不是0的数都置为1,并且把对角线上的数都置为0; 取矩阵F5的第i行,设为矩阵C5,把矩阵C5的第i个数改为1,生成一个矩阵 E5,对角线是矩阵C5,其余数都为0;计算矩阵E5*G,求得的是节点i的7阶 邻居的子图,定义为J7;
[0020] 步骤2.9:求节点i的8阶邻居,首先计算G+G2+G3+G4+G5+G6+G7, 设定为矩阵F6,把矩阵F6中不是0的数都置为1,并且把对角线上的数都置为 0;取矩阵F6的第i行,设为矩阵C6,把矩阵C6的第i个数改为1,生成一个 矩阵E6,对角线是矩阵C6,其余数都为0;计算矩阵E6*G,求得的是节点i 的8阶邻居的子图,定义为J8;
[0021] 步骤2.10:求节点i的9阶邻居,首先计算 G+G2+G3+G4+G5+G6+G7+G8,设定为矩阵F7,把矩阵F7中不是0的数 都置为1,并且把对角线上的数都置为0;取矩阵F7的第i行,设为矩阵C7, 把矩阵C7的第i个数改为1,生成一个矩阵E7,对角线是矩阵C7,其余数都为 0;计算矩阵E7*G,求得的是节点i的9阶邻居的子图,定义为J9;
[0022] 步骤2.11:求节点i的10阶邻居,首先计算 G+G2+G3+G4+G5+G6+G7+G8+G9设定为矩阵F8,把矩阵F8中不是0的 数都置为1,并且把对角线上的数都置为0;取矩阵F8的第i行,设为矩阵C8, 把矩阵C8的第i个数改为1,生成一个矩阵E8,对角线是矩阵C8,其余数都为 0;计算矩阵E8*G,求得的是节点i的10阶邻居的子图,定义为J10.
[0023] 步骤2.12:所有节点i∈V的1阶节点的子图都在J1中,所有节点i∈V的2 阶节点的子图都在J2中,所有节点i∈V的3阶节点的子图都在J3中,所有节点 i∈V的4阶节点的子图都在J4中,所有节点i∈V的5阶节点的子图都在J5中, 所有节点i∈V的6阶节点的子图都在J6中,所有节点i∈V的7阶节点的子图都 在J7中,所有节点i∈V的8阶节点的子图都在J8中,所有节点i∈V的9阶节点 的子图都在J9中,所有节点i∈V的10阶节点的子图都在J10中,把J1、J2、J3、 J4、J5、J6、J7、J8、J9、J10放在矩阵SubList中。
[0024] 步骤3:把每个节点都当成初始用户,把每个节点的t阶邻居都当成是一个 网络,让每个节点对他的t阶邻居进行R次独立级联模型传播,R是自己定义的 正整数,计算每个节点对他的t阶邻居的平均影响力,t=1,2,3,4,5,6,7,8, 9,10,具体方法为:
[0025] 步骤3.1:定义一个正整数R,空矩阵In;
[0026] 步骤3.2:计算矩阵G的每一行的和,放在矩阵degree中,矩阵degree中存 放的是每个节点的度;定义循环变量m,m∈[1,R];
[0027] 步骤3.3:如果m≤R,则跳转到步骤3.4,不然跳转到步骤3.10;
[0028] 步骤3.4:把节点i当成活跃节点,对它的邻居节点v产生影响,使v激活 的概率是p,且机会只有一次;p=1/degree,degree是步骤302中求得的节点i的度; v属于节点i的t阶邻居,t=1,2,3,4,5,6,7,8,9,10;
[0029] 步骤3.5:如果节点v被激活成功,那么节点v转为活跃状态,将对其邻接 非活跃节点产生影响;否则,节点v不发生变化;
[0030] 步骤3.6:重复步骤3.3和3.4,直到不能再激活新的节点,传播过程结束;
[0031] 步骤3.7:每个节点在t阶邻居中激活的节点的个数就是它的影响力;
[0032] 步骤3.8:每个节点在它的1阶邻居中的影响力存在矩阵In1中,在它的2 阶邻居中的影响力存在矩阵In2中,在它的3阶邻居中的影响力存在矩阵In3中, 在它的4阶邻居中的影响力存在矩阵In4中,在它的5阶邻居中的影响力存在矩 阵In5中,在它的6阶邻居中的影响力存在矩阵In6中,在它的7阶邻居中的影 响力存在矩阵In7中,在它的8阶邻居中的影响力存在矩阵In8中,在它的9阶 邻居中的影响力存在矩阵In9中,在它的10阶邻居中的影响力存在矩阵In10中;
[0033] 步骤3.9:m=m+1;
[0034] 步骤3.10:把R次求得的影响力累加起来,然后除以R,求每个节点在其t 阶邻居中的平均影响,放在矩阵In中。
[0035] 步骤4:把节点t阶邻居按照影响力从大到小进行排序,选取每阶邻居中影 响力最大的50个节点,通过比较,发现节点的t'阶邻居影响力最大,t=1,2,3, 4,5,6,7,8,9,10,且t'∈t,具体方法为:
[0036] 步骤4.1:对矩阵In1,In2,In3,In4,In5,In6,In7,In8,In9,In10里面的值进行从大到 小排序;
[0037] 步骤4.2:选取矩阵In1,In2,In3,In4,In5,In6,In7,In8,In9,In10中的前50个数 值,按顺序放在矩阵Z1,Z2,Z3,Z4,Z5,Z6,Z7,Z8,Z9,Z10中;
[0038] 步骤4.3:画图,横轴是1到10,是10个数,纵轴是矩阵Z1,Z2,Z3,Z4,Z5,Z6,Z7, Z8,Z9,Z10中的数,发现在t=t'时,纵轴上的数最大,也就是节点的t'邻居影响力 最大;
[0039] 步骤5:对节点的阶邻居中所有的节点在整个网络中进行K次独立级联模型 传播,t'是步骤5个求到的值,K是自己定义的正整数,在节点的t'阶邻居中选 取最大的S个节点作为初始用户,具体方法为:
[0040] 步骤5.1:定义一个正整数M,从步骤2.12中取出矩阵SubList,并从矩阵 SubList中取出矩阵Jt',t'∈[1,10];
[0041] 步骤5.2:定义循环变量n,n∈[1,M],计算矩阵Jt'每一行的和,记为矩阵De, 矩阵De中存放的是节点t'阶邻居的度;
[0042] 步骤5.3:如果n≤M,则跳转到步骤5.4,不然跳转到步骤5.9;
[0043] 步骤5.4:把矩阵Jt'中的节点当成活跃节点,对它的邻居节点w产生影响, 使w激活的概率是p,且机会只有一次;p=1/degree,degree是步骤5.2中求得的矩 阵De中的数;
[0044] 步骤5.5:如果节点w被激活成功,那么节点w转为活跃状态,将对其邻接 非活跃节点产生影响;否则,节点w不发生变化;
[0045] 步骤5.6:重复步骤5.4和5.5,直到不能再激活新的节点,传播过程结束;
[0046] 步骤5.7:每个节点在线上产品的数据集中激活的节点的个数就是它的影响 力,记为矩阵IN;
[0047] 步骤5.8:n=n+1;
[0048] 步骤5.9:把M次求得的影响力累加起来,然后除以M,求每个节点在整个 网络中的平均影响,全部放在矩阵LIN中;
[0049] 步骤5.10:对矩阵LIN中的值进行排序,选取值最大的S个,其对应的节 点即为初始用户。
[0050] 本发明采用上述技术方案,具有以下有益效果:本发明针对影响力最大化问 题提出基于节点的t阶邻居快速选取种子节点的方法,通过计算节点的t阶邻居, (t=1,2…n)计算节点在其邻居子图中的影响力,通过比较,选择使得影响力较高, 效果较好的。确定后,在节点的阶邻居中选择整体影响力最大的作为种子节点。 本方法可以极大地降低计算开销和存储开销,使得选择种子节点的时间大幅度降 低,降低了时间复杂度。

实施方案

[0057] 下面结合具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本 发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发 明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。
[0058] 如图1‑6所述,本发明所述的一种线上产品推销选取初始用户的方法,具体 步骤如下:
[0059] 步骤1:对线上产品的数据集进行处理,得到真实的拓扑结构图G(V,E); 其中,V表示G中的节点集合,E表示G中的边的集合,输入P,P是独立级联 模型中一个被激活节点v激活其未激活的出度邻居节点的概率,输入S,S是选 取种子节点的个数,具体的如图2所示:
[0060] 步骤1.1:删除线上产品的数据集中存在的自环,得到真实的拓扑结构图 G(V,E),G是邻接矩阵;
[0061] 步骤1.2:节点的势就是G中有多少个节点,边的势就是G中有多少条边, 求得节点的势m;
[0062] 步骤1.3:独立级联是一种概率模型,当一个节点v被激活时,它会以概率P 对它未激活的出边邻居节点w尝试激活,这种尝试仅仅进行一次,而且这些尝试 之间是相互独立的,即v对w的激活不会受到其他节点的影响。概率P是实验一 开始定义的,因此在根据社交网络中用户邻居选取影响力最大化初始节点中, =1/degree。degree是节点的度,计算邻接矩阵G的每一行的和记为矩阵Degree, 是节点对应的度。
[0063] 步骤2:计算每个节点的t阶邻居,把求得的每个节点的t阶邻居放在一个 大集合SubList里,t=1,2,3,4,5,6,7,8,9,10,具体的如图3所示:
[0064] 步骤2.1:对步骤1.1中的邻接矩阵G的行/列进行编号,第一行/列是1,第 二行/列是2…依次标号;
[0065] 步骤2.2:求节点i的1阶邻居,设定一个m行m列的空矩阵D,m是步骤 1.2中求得的节点的势。把矩阵D的第i行第i列的0改为1,计算矩阵D*G, 求得的是节点i的1阶邻居的子图,定义为J1;
[0066] 步骤2.3:求节点i的2阶邻居,取邻接矩阵G的第i行,设为矩阵A,把 矩阵A的第i个数改为1,生成一个矩阵B,对角线是矩阵A,其余都为0;计 算矩阵B*G,求得的是节点i的2阶邻居的子图,定义为J2;
[0067] 步骤2.4:求节点i的3阶邻居,首先计算G+G*G,记为矩阵F1,把矩阵 F1中不是0的数都置为1,并且把对角线上的数都置为0;取矩阵F1的第i行, 设为矩阵C1,把矩阵C1的第i个数改为1,生成一个矩阵E1,对角线是矩阵 C1,其余数都为0;计算矩阵E1*G,求得的是节点i的3阶邻居的子图,定义 为J3;
[0068] 步骤2.5:求节点i的4阶邻居,首先计算G+G2+G3,设定为矩阵F2,把 矩阵F2中不是0的数都置为1,并且把对角线上的数都置为0;取矩阵F2的第 i行,设为矩阵C2,把矩阵C2的第i个数改为1,生成一个矩阵E2,对角线是 矩阵C2,其余数都为0;计算矩阵E2*G,求得的是节点i的4阶邻居的子图, 定义为J4;
[0069] 步骤2.6:求节点i的5阶邻居,首先计算G+G2+G3+G4,设定为矩阵F3, 把矩阵F3中不是0的数都置为1,并且把对角线上的数都置为0;取矩阵F3的 第i行,设为矩阵C3,把矩阵C3的第i个数改为1,生成一个矩阵E3,对角线 是矩阵C3,其余数都为0;计算矩阵E3*G,求得的是节点i的5阶邻居的子图, 定义为J5;
[0070] 步骤2.7:求节点i的6阶邻居,首先计算G+G2+G3+G4+G5,设定为矩 阵F4,把矩阵F4中不是0的数都置为1,并且把对角线上的数都置为0;取矩 阵F4的第i行,设为矩阵C4,把矩阵C4的第i个数改为1,生成一个矩阵E4, 对角线是矩阵C4,其余数都为0;计算矩阵E4*G,求得的是节点i的6阶邻居 的子图,定义为J6;
[0071] 步骤2.8:求节点i的7阶邻居,首先计算G+G2+G3+G4+G5+G6,设定 为矩阵F5,把矩阵F5中不是0的数都置为1,并且把对角线上的数都置为0; 取矩阵F5的第i行,设为矩阵C5,把矩阵C5的第i个数改为1,生成一个矩阵 E5,对角线是矩阵C5,其余数都为0;计算矩阵E5*G,求得的是节点i的7阶 邻居的子图,定义为J7;
[0072] 步骤2.9:求节点i的8阶邻居,首先计算G+G2+G3+G4+G5+G6+G7, 设定为矩阵F6,把矩阵F6中不是0的数都置为1,并且把对角线上的数都置为 0;取矩阵F6的第i行,设为矩阵C6,把矩阵C6的第i个数改为1,生成一个 矩阵E6,对角线是矩阵C6,其余数都为0;计算矩阵E6*G,求得的是节点i 的8阶邻居的子图,定义为J8;
[0073] 步骤2.10:求节点i的9阶邻居,首先计算 G+G2+G3+G4+G5+G6+G7+G8,设定为矩阵F7,把矩阵F7中不是0的数 都置为1,并且把对角线上的数都置为0;取矩阵F7的第i行,设为矩阵C7, 把矩阵C7的第i个数改为1,生成一个矩阵E7,对角线是矩阵C7,其余数都为 0;计算矩阵E7*G,求得的是节点i的9阶邻居的子图,定义为J9;
[0074] 步骤2.11:求节点i的10阶邻居,首先计算 G+G2+G3+G4+G5+G6+G7+G8+G9设定为矩阵F8,把矩阵F8中不是0的 数都置为1,并且把对角线上的数都置为0;取矩阵F8的第i行,设为矩阵C8, 把矩阵C8的第i个数改为1,生成一个矩阵E8,对角线是矩阵C8,其余数都为 0;计算矩阵E8*G,求得的是节点i的10阶邻居的子图,定义为J10;
[0075] 步骤2.12:所有节点i∈V的1阶节点的子图都在J1中,所有节点i∈V的2 阶节点的子图都在J2中,所有节点i∈V的3阶节点的子图都在J3中,所有节点 i∈V的4阶节点的子图都在J4中,所有节点i∈V的5阶节点的子图都在J5中, 所有节点i∈V的6阶节点的子图都在J6中,所有节点i∈V的7阶节点的子图都 在J7中,所有节点i∈V的8阶节点的子图都在J8中,所有节点i∈V的9阶节点 的子图都在J9中,所有节点i∈V的10阶节点的子图都在J10中,把J1、J2、J3、 J4、J5、J6、J7、J8、J9、J10放在矩阵SubList中。
[0076] 步骤3:把每个节点都当成初始用户,把每个节点的t阶邻居都当成是一个 网络,让每个节点对他的t阶邻居进行R次独立级联模型传播,R是自己定义的 正整数,计算每个节点对他的t阶邻居的平均影响力,t=1,2,3,4,5,6,7,8, 9,10,具体的如图4所示:
[0077] 步骤3.1:定义一个正整数R,空矩阵In;
[0078] 步骤3.2:计算矩阵G的每一行的和,放在矩阵degree中,矩阵degree中存 放的是每个节点的度;定义循环变量m,m∈[1,R];
[0079] 步骤3.3:如果m≤R,则跳转到步骤3.4,不然跳转到步骤3.10;
[0080] 步骤3.4:把节点i当成活跃节点,对它的邻居节点v产生影响,使v激活 的概率是p,且机会只有一次;p=1/degree,degree是步骤302中求得的节点i的度; v属于节点i的t阶邻居,t=1,2,3,4,5,6,7,8,9,10;
[0081] 步骤3.5:如果节点v被激活成功,那么节点v转为活跃状态,将对其邻接 非活跃节点产生影响;否则,节点v不发生变化;
[0082] 步骤3.6:重复步骤3.3和3.4,直到不能再激活新的节点,传播过程结束;
[0083] 步骤3.7:每个节点在t阶邻居中激活的节点的个数就是它的影响力;
[0084] 步骤3.8:每个节点在它的1阶邻居中的影响力存在矩阵In1中,在它的2 阶邻居中的影响力存在矩阵In2中,在它的3阶邻居中的影响力存在矩阵In3中, 在它的4阶邻居中的影响力存在矩阵In4中,在它的5阶邻居中的影响力存在矩 阵In5中,在它的6阶邻居中的影响力存在矩阵In6中,在它的7阶邻居中的影 响力存在矩阵In7中,在它的8阶邻居中的影响力存在矩阵In8中,在它的9阶 邻居中的影响力存在矩阵In9中,在它的10阶邻居中的影响力存在矩阵In10中;
[0085] 步骤3.9:m=m+1;
[0086] 步骤3.10:把R次求得的影响力累加起来,然后除以R,求每个节点在其t 阶邻居中的平均影响,放在矩阵In中。
[0087] 步骤4:把节点t阶邻居按照影响力从大到小进行排序,选取每阶邻居中影 响力最大的50个节点,通过比较,发现节点的t'阶邻居影响力最大,t=1,2,3, 4,5,6,7,8,9,10,且t'∈t,具体的如图5所示:
[0088] 步骤4.1:对矩阵In1,In2,In3,In4,In5,In6,In7,In8,In9,In10里面的值进行从大到 小排序;
[0089] 步骤4.2:选取矩阵In1,In2,In3,In4,In5,In6,In7,In8,In9,In10中的前50个数 值,按顺序放在矩阵Z1,Z2,Z3,Z4,Z5,Z6,Z7,Z8,Z9,Z10中;
[0090] 步骤4.3:画图,横轴是1到10,是10个数,纵轴是矩阵Z1,Z2,Z3,Z4,Z5,Z6,Z7, Z8,Z9,Z10中的数,发现在t=t'时,纵轴上的数最大,也就是节点的t'邻居影响力 最大。
[0091] 步骤5:对节点的阶邻居中所有的节点在整个网络中进行K次独立级联模型 传播,t'是步骤5个求到的值,K是自己定义的正整数,在节点的t'阶邻居中选 取最大的S个节点作为初始用户,具体的如图6所示:
[0092] 步骤5.1:定义一个正整数M,从步骤2.12中取出矩阵SubList,并从矩阵 SubList中取出矩阵Jt',t'∈[1,10];
[0093] 步骤5.2:定义循环变量n,n∈[1,M],计算矩阵Jt'每一行的和,记为矩阵De, 矩阵De中存放的是节点t'阶邻居的度;
[0094] 步骤5.3:如果n≤M,则跳转到步骤5.4,不然跳转到步骤5.9;
[0095] 步骤5.4:把矩阵Jt'中的节点当成活跃节点,对它的邻居节点w产生影响, 使w激活的概率是p,且机会只有一次;p=1/degree,degree是步骤5.2中求得的矩 阵De中的数;
[0096] 步骤5.5:如果节点w被激活成功,那么节点w转为活跃状态,将对其邻接 非活跃节点产生影响;否则,节点w不发生变化;
[0097] 步骤5.6:重复步骤5.4和5.5,直到不能再激活新的节点,传播过程结束;
[0098] 步骤5.7:每个节点在线上产品的数据集中激活的节点的个数就是它的影响 力,记为矩阵IN;
[0099] 步骤5.8:n=n+1;
[0100] 步骤5.9:把M次求得的影响力累加起来,然后除以M,求每个节点在整个 网络中的平均影响,全部放在矩阵LIN中;
[0101] 步骤5.10:对矩阵LIN中的值进行排序,选取值最大的S个,其对应的节 点即为初始用户。
[0102] 通过在10个线上产品数据集中计算节点的t阶邻居,然后求节点在t阶邻居 中的影响力,把1,2,3,4,5,6,7,8,9,10作为横轴,表示节点的从1 到10阶邻居;每一阶邻居对应的影响力作为纵轴,进行画图比较。可以发现每 个数据集都有一个最优值,大部分的最优值是3。因此把节点的3阶邻居都作为 种子节点,计算每个节点的影响力,选取其中最大的S个作为初始用户。降低了 算法的时间复杂度和计算开销,效果也很好。

附图说明

[0051] 图1为本发明的总体流程图
[0052] 图2为图1中处理线上产品数据集的具体流程图;
[0053] 图3为图1中计算节点t阶邻居的具体流程图;
[0054] 图4为图1中计算节点平均影响力的具体流程图;
[0055] 图5为图1中选取最佳节点t’阶邻居的具体流程图;
[0056] 图6为图1中选择影响力最大的线上产品推销初始用户的具体流程图;
专利联系人(活跃度排行)
版权所有:盲专网 ©2023 zlpt.xyz  蜀ICP备2023003576号