DBLP数据集处理

处理内容描述

DBLP数据集 包括超过100万篇发表在计算机科学会议和杂志上的论文项。在这些项中,很多作者都有合著关系。
(a)提出一种方法,挖掘密切相关的(即,经常一起合写文章)合著者关系。
(b)根据挖掘结果和本章讨论的模式评估度量,讨论哪种度量可能比其他度量更令人信服地揭示紧密合作模式。
(c)基于以上研究,开发一种方法,它能粗略地预测导师和学生关系,以及这种指导的近似周期。

测试数据

从官网下载DBLP数据集
source.png

解压缩后得:

source0.png

解题思路

从DBLP数据库中找到经常一起写作的合作者任务分解:
从DBLP数据集中提取作者信息
建立索引作者ID并对文件编码
分析数据的规模
构建FP-Tree并从FP-Tree得到频繁项集
频繁项集挖掘结果分析

解析文件

所有的作者信息分布在以下这些属性中:
‘article’,‘inproceedings’,‘proceedings’,‘book’,‘incollection’,‘phdthesis’,‘mastersthesis’,‘www’
使用python自带的xml分析器解析,分析器在进入上面那些属性中的某一个时,标记flag=1,然后将author属性的内容输出到文件,退出时再标记flag = 0
源码
结果保存到authors.txt文件:

xml_txt.png

xml_txt0.png

建立索引作者ID

读取得到的authors.txt文件,将其中不同的人名按照人名出现的次序编码,
存储到文件authors_index.txt中,同时将编码后的合作者列表写入authors_encoded.txt文件。
源码
运行结果:

author_index_create.png

author_index.png

author_encoded.png

分析数据的规模

查看在DBLP数据集中作者发表文章的数量。即统计只发表过1次文章的人数有多少,
发表过2篇文章的人数有多少…发表过n篇文章的有多少人,分析可知,当支持度为40的作者数量接近1000,
随后支持度每增加20,对应的作者数量减半,为了降低计算量,第一次实验时支持度阈值不宜选得太小,
同时为了避免结果数量太少,初次实验时阈值可选在40~60之间,这里不妨选40。
源码
运行结果:

support.png

构建FP-Tree得到频繁项集

FP-Tree算法其核心思想分为2步,首先扫描数据库得到FP-Tree,然后再从树上递归生成条件模式树并上溯找到频繁项集。
源码
运行结果:

fp_build.png

result0.png

result1.png
输出结果说明
统计满足支持度条件的合作者个数可以发现,经常一起合作的作者数目最多为3,故在输出文件中输出authorA,authorB,authorC(当合作者数目为2时,authorC为空,其对应支持度和置信度为0),Sup(A,B,C)为A,B,C共同合作的次数,Sup(A)Sup(B)Sup(C)分别为A,B,C各自的写作次数,Con(A)、Con(B)、Con(C)分别表示A,B,C的置信度(即合作次数除以写作总次数)MinCon和MaxCon分别统计Con(A)、Con(B)、Con(C)的最小值和最大值(注意,当authorC为空时,其对应的置信度不加入最大最小值的统计)
输出结果分析
初步分析可以发现以下特性:
1.在满足支持度条件的合作者中,大多数是两个人,但是也有少数3个人一起经常合作的情况;
2.由于在这里我们关注的是作者之间的合作程度,故可以不关注提升度对于结果的影响;
3.合作者之间的关系是双向性的,也就是说,A与B的合作程度与B与A合作的程度是一致的,因此可以直接考虑置信度;
4.在按支持度排序后,某些作者的置信度较低,需要引入置信度阈值,为了避免置信度不平衡的情况(比如A经常和B合作,但该合作次数占B写作次数很少一部分),
需要加入阈值条件MinCon>=阈值,同时置信度中的较大值应该满足MaxCon>=1/2,另外加入平衡条件后过滤结果。
(b)根据挖掘结果和本章讨论的模式评估度量,讨论哪种度量可能比其他度量更令人信服地揭示紧密合作模式。
关于作者A(Noboru Niki)和作者B(Kenji Eguchi)的2×2的相依表(显示期望值)

Kenji Eguchi ^(Kenji Eguchi) sum
Noboru Niki 100(0.119) 6(105.9) 106
^(Noboru Niki) 66(165.9) 14653(147,481) 147647
sum 166 147587 147753

1.使用提升度的相关分析
P({A})=106/147753
P({B})=166/147753
P({A,B})=100/147753
提升度为P({A,B})/(P({A})P({B}))=(100/147753)/(106/147753)(166/147753)=839.67
2.使用χ2进行相关分析
(100-0.119)^2➗0.119 + (6-105.9)^2➗105.9 + (66-165.9)^2➗165.9 + (14653-147481)^2➗147481 =
83,833.73 + 94.23 + 60.15 + 119,630.85 =203,619
3.全置信度
P({A|B})=100/106=0.943
P({B|A})=100/166=0.602
all_conf(A,B)=min{P({A|B}),P({B|A})}=0.602
4.最大置信度
max{P({A|B}),P({B|A})}=0.943
5. Kulczynski置信度
Kulc(A,B)= 1/2*(P(A|B)+P(B|A))=0.773
6.余弦置信度
Cosine(A,B)= sqrt(P(A|B)P(B|A))= 0.754
比较6种模式评估度量:
上述6种模式评估中,提升度和χ2的计算受零事务的影响很大,在上面的例子中,^AB表示零事务的个数。一般,
零事务的个数可能大大超过个体购买的个数,因为,A和B发表过的论文相对于整个数据库中的论文总数,
是很小的一部分。其他四个度量很好地消除了^AB的影响。由于上述例子中P(A|B)和P(B|A)差别较大,
导致四种评估度量(全置信度,最大置信度,Kulczynski,余弦)结果也差别较大,
(c)基于以上研究,开发一种方法,它能粗略地预估导师和学生的关系,以及这种指导的周期
1.根据经验,我们知道,学生发表的论文上往往会署导师的名字,而导师的论文上却不一定有学生的署名,或者说导师发表过的论文要远比学生多,
而且老师往往同时指导多个学生,设置两个参数15和5,作者A和B、C、D、E满足频繁项集的要求,并且A发表过的论文不小于15篇,B、C、D、E发表过的论文不超过5篇,
则我们可以认定A为导师,B、C、D、E为A指导的学生。
2.若要求得指导的近似周期,我们需要在求频繁项集时,将发表的日期作为属性假如到事务中,如果我们已确定A为导师,B为学生,
并且他们的合著次数满足频繁项集的支持度,我们需要计算A和B合著论文中的最近日期和最早日期,最近日期-最早日期+ 1~2年=近似的指导周期。
参考博客

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享