详细设计文档Word格式.docx
- 文档编号:19460390
- 上传时间:2023-01-06
- 格式:DOCX
- 页数:28
- 大小:891.42KB
详细设计文档Word格式.docx
《详细设计文档Word格式.docx》由会员分享,可在线阅读,更多相关《详细设计文档Word格式.docx(28页珍藏版)》请在冰豆网上搜索。
7数据结构设计19
7.1数据对象与形成的数据结构19
8使用说明21
8.1安装与初始化21
8.2软件主要功能的使用说明21
9结束语24
1引言
1.1项目简要介绍
本系统名为“在线社区检测系统”,提供的是基于web端的线上虚拟网络分析平台。
社区,是指在一个虚拟网络集合中,根据网络中行为者之间的某种关系,将集合划分为若干社区(可交叉的子集)的过程。
社区发现最基本的作用是将个体进行社区分类,将个体划分到若干社区中。
划分的社区可以为成员提供个性化服务和信息推荐,可以用于以社区为活动单位的实际应用,如网络文化安全预警、社会行为分析等。
该项目主要分为两部分。
第一部分是对整体网络进行社区划分,它提供多种社区检测算法,结合不同网络的自身特点,调用不同社区检测接口;
第二部分是针对于不同的社区群体,运用社会网络分析理论,分析社区的结构特点,挖掘社区中的核心人物。
1.2项目背景
在维基百科中,社交网络(SocialNetwork)被定义为:
“由许多节点构成的一种社会结构。
节点通常是指个人或组织,而社交网络代表着各种社会关系。
在社交网络中,成员之间因为互动而形成相对稳定的关系体系,这种关系体系可以是朋友关系,同学关系,也可以是生意伙伴关系抑或种族信仰关系。
通过这些关系,社交网络把偶然相识的泛泛之交到紧密结合的家庭关系,再到社会活动中的各种人们组织串联起来”。
由于社交网络中存在着各种关系,社会组织或个人之间的社交图形结构往往是非常复杂的。
复杂的关系结构影响着成员之间的互动和联系,进而影响着人们的社会行为。
从历史维度来看,社交网络是把人与互联网深度融合的中坚力量。
随着工业化,城市化的进行和新兴通讯技术的兴起,社会呈现出越来越网络化的趋势,2012年,LeeRainie(李·
雷尼)和BarryWellman(巴里·
威尔曼)在其新著《网络化:
新的社会操作系统》(Networked:
TheNewSocialOperatingSystem)中将社会网络革命,移动革命和互联网革命并列为新时期影响人类社会的三大革命。
当前,互联网作为一个能够相互交流,相互沟通和相互参与的互动平台,其发展早已超越了当初ARPANET的军事和技术目的。
而社会网络几乎涵盖啦以人类社交为核心的所有网络服务形式,这使得互联网从研究部门,学校,政府/商业应用平台扩展成一个供人类社会建立和发展关系,相互交流的工具。
社会网络作为一种典型的复杂网络,普遍存在于现实世界中的各个领域,典型的社会网络有如个人交际网络、商户关系网络、科研人员合著关系网络等。
近年来,随着互联网的发展,又出现了诸如Facebook、Twitter以及人人网、新浪微博等基于互联网平台的新型社交网络。
这类互联网社会网络的蓬勃发展,为社会网络研究领域提供了大量真实可靠的数据资料。
通过对社会网络进行合理的社区划分,能够得到不同层次的社会网络结构以及其功能特性。
这种从复杂网络中挖掘社区结构的过程即为社区检测。
在社区检测的基础上,通过对网络中节点间的隐含属性的研究,得以获取大量极具价值的信息,如:
社区检测有助于发现共同话题的社会团体。
对于现在大数据的时代中,挖掘出社交网络上的社区很有实用价值。
社区内用户的共同话题,会形成一个定向的区别用户的方式,为政府部门对社交网络监控、舆情监控等应用提供依据。
随着互联网的发展,网络社区检测与数据挖掘、社会网络分析和数据可视化有着紧密的联系。
本系统开发的目的正是想将四者结合起来,尽可能地展示社交网络的真实面貌,全面地分析网络社区的结构特征。
进而帮助决策者,如政府部门,对社交网络监控和引导。
1.3项目的创新点
本系统对虚拟网络进行检测划分成不同的社区群体,提供极佳的分析平台。
本系统运用了社会网络分析的知识,为用户挖掘出网络中的结构特点,为决策者提供了良好的决策依据。
本系统实现了人与机之间的图象通讯,数据可以用图像、柱状图、饼状图和动画来显示,运用多种社区检测算法、社会网络分析方法进行可视化分析。
1.4定义
名称
描述
Django
Django是一个开放源代码的Web应用框架,由Python写成。
采用了MVC的软件设计模式,即模型M,视图V和控制器C。
Linux
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。
它能运行主要的UNIX工具软件、应用程序和网络协议。
它支持32位和64位硬件。
Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
NumPy
NumPy系统是Python的一种开源的数值计算扩展。
这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nestedliststructure)结构要高效的多(该结构也可以用来表示矩阵(matrix))。
Igraph
Igraph是一个分析网络结构的开源库,可以支持python,R等高级语言。
模块度
模块度也称模块化度量值,是目前常用的一种衡量网络社区结构强度的方法。
模块度值的大小主要取决于网络中结点的社区分配C,即网络的社区划分情况,可以用来定量的衡量网络社区划分质量,其值越接近1,表示网络划分出的社区结构的强度越强,也就是划分质量越好。
度中心性
度中心性(DegreeCentrality)是在网络分析中刻画节点中心性(Centrality)的最直接度量指标。
一个节点的节点度越大就意味着这个节点的度中心性越高,该节点在网络中就越重要。
1.5参考资料
1.5.1中文文献
[1]钱乐秋,赵文耘,牛军钰;
《软件工程》(第二版),清华大学出版社
[3]方滨兴,《在线社交网络分析》,电子工业出版社
[4]刘军,《社会网络分析导论》,社会科学文献出版社
[5]王莉军,杨炳儒,翟云,谢永红,《动态社区发现算法的研究进展》
[6]王娜,李霞,徐红英,《社会网络分析之社区发现研究》
[7]潘磊,《若干社区发现算法研究》
[8]索勃,李战杯,陈群,王忠,《基于信息流动分析的动态社区发现方法》
[9]王莉,程学旗,《在线社会网络的动态社区发现及演化》,计算机学报
[10]李海峰,《图布局FR算法的研究与实现》
[12]李海峰,《图布局KK算法的研究与实现》
[13]WesleyJ.Chun著,宋吉广译《python核心编程》(第二版),人民邮电出版社
[14]王庚,宋传超,盛玉晓,王童童,李盛恩,《基于标签传播的社区挖掘算法研究综述》
[15]MattbewA.Russell著,师蓉译,《社交网络的数据挖掘与分析》机械工业出版社
1.5.2外文文献
[1]GirvanM,NewmanMEJ.Communitystructureinsocialandbiologicalnetworks[J].ProceedingsoftheNationalAcademyofSciences,2002,99(12):
7821-7826.
[2]NewmanMEJ,GirvanM.Findingandevaluatingcommunitystructureinnetworks[J].PhysicalreviewE,2004,69
(2):
026113.
[3]NewmanMEJ.Fastalgorithmfordetectingcommunitystructureinnetworks[J].PhysicalreviewE,2004,69(6):
066133.
[4]ClausetA,NewmanMEJ,MooreC.Findingcommunitystructureinverylargenetworks[J].PhysicalreviewE,2004,70(6):
066111.
[5]BlondelVD,GuillaumeJL,LambiotteR,etal.Fastunfoldingofcommunitiesinlargenetworks[J].JournalofStatisticalMechanics:
TheoryandExperiment,2008,2008(10):
P10008.
[6]PallaG,Deré
nyiI,FarkasI,etal.Uncoveringtheoverlappingcommunitystructureofcomplexnetworksinnatureandsociety[J].Nature,2005,435(7043):
814-818.
[7]AhnYY,BagrowJP,LehmannS.Linkcommunitiesrevealmultiscalecomplexityinnetworks[J].Nature,2010,466(7307):
761-764.
[8]TasginM,HerdagdelenA,BingolH.Communitydetectionincomplexnetworksusinggeneticalgorithms[J].arXivpreprintarXiv:
0711.0491,2007.
[9]ToyodaM,KitsuregawaM.Extractingevolutionofwebcommunitiesfromaseriesofwebarchives[C]//ProceedingsofthefourteenthACMconferenceonHypertextandhypermedia.ACM,2003:
28-37.
[10]KumarR,NovakJ,TomkinsA.Structureandevolutionofonlinesocialnetworks[M]//Linkmining:
models,algorithms,andapplications.SpringerNewYork,2010:
337-357.
[11]FalkowskiT.Communityanalysisindynamicsocialnetworks[M].Sierke,2009.
[12]DinhTN,XuanY,ThaiMT.Towardssocial-awareroutingindynamiccommunicationnetworks[C]//PerformanceComputingandCommunicationsConference(IPCCC),2009IEEE28thInternational.IEEE,2009:
161-168.
2任务概述
2.1目标
本系统专门为对虚拟网络中社区检测和分析而设计的,旨在充分分析出虚拟网络的结构特征,挖掘其潜在价值。
社区检测和分析是本系统的一大目标。
系统采用方便的基于Django框架的web系统,使用户能方便的在互联网上使用该分析平台,并提供分析的报表,便于用户线下整合与分析。
而另一大目标是尽可能简单灵活地使数据可视化。
让用户从繁杂的数据解脱出来,只需轻松操作,即可以生成报表所需内容。
如对于从事于监控社交网络的政府官员,只需要轻松点击,即可以发现网络中的不同人群、“不同派别”,挖掘传统数据显示方式中不易察觉的信息,为决策者提供良好的数据可视化服务。
2.2运行环境
1硬件环境
CPU:
建议PII300以上
RAM:
128M以上,建议256M以上
DISK:
100M以上的可用硬盘安装空间
2软件环境
1.Servlet服务器:
Ubuntu14.04
2.运行平台:
linux操作系统
3.运行环境:
SunJDK1.7
4.数据库服务器:
MySQL
5.开发技术平台:
Pycharm4.3
3需求
3.1功能需求
1.提供Web界面访问系统。
2.提供普通用户登陆的功能。
3.提供普通用户注册的功能。
4.提供用户使用指南页面,方便用户了解并使用系统,有助于新手快速上手。
5.提供用户测试样例说明,方便用户更好地深入系统操作。
6.提供社交网络中的社区检测功能,并以图片可视化形式展现给用户。
7.提供多种社区检测算法,根据不同的网络分布特点,使用对应的社区检测算法,使划分的结果达到最佳。
8.提供网络社区划分后的分析结果,包括网络点数,边数,网络密度,网络权重,社区模块度,使用户更好地分析虚拟网络的结构特点。
9.提供社区结构分析功能,包括将各社区分布情况可视化,分析各社区的结构特点,分别有点数,边数,社区密度,社区集中趋势,社区的节点情况,社区核心人物等
10.提供社区间的对比情况,分别有社区间的节点分布情况,社区间的紧密程度,社区间的集中趋势。
11.提供挖掘网络中活跃人物与不活跃人物功能,在网络中的活跃分子,在整个网络舆论的发展过程中发挥着重要引领作用。
不活跃人物分析即是离群点,有可能存在异常或者提供潜在的价值,是离群点检测中的重要部分。
12.提供各节点在网络中的地位情况的数据表,数据包括节点号,节点标签,节点所在的社区,节点的点度中心度,出度,入度,好友推荐(潜在的二度好友关系)等,该数据可供用户下载。
13.提供各社区在网络中的地位情况的数据表,数据包括社区号,社区中的节点数目,社区密度,社区密度排名,点度中心势,点度中心势排名,社区中的核心人物等,该数据可供用户下载。
14.提供用户注销功能,方便切换用户或退出使用系统。
15.提供系统管理员的登陆功能。
16.提供系统管理员批准用户使用系统的功能。
17.提供系统管理员对用户修改信息的功能。
18.提供系统管理员删除用户的功能。
3.2性能需求
3.2.1数据精确度
1.用户不能超过20个字符。
2.用户密码最少1个字符,最多20个字符。
3.用户上传的数据文件严格按照系统指定的文件格式以及内容格式。
文件格式允许txt,xls,csv格式,文件上传有两份,网络信息文件按“source,target,weight”格式,节点标签文件按“node,label”格式。
4.用户数据须包含有0节点。
5.社区模块度,网络密度,社区集中势,节点集中势的数据范围都是[0,1]。
3.2.2时间性能要求
1.满足当同时有300个用户浏览的时候,相应时间不超过5秒。
2.处理节点300以下的小型网络,从数据提高到分析结果的过程,时间不能超过10秒。
3.满足在非繁忙时段系统的相应时间为0.8秒。
4总体设计
4.1基本设计概念和处理流程
简要说明:
开始:
用户通过登录后正式使用系统。
导入文件:
用户上传待处理的数据文件,包括网络信息文件,节点标签文件。
算法:
主要是指社区检测算法,分别是基于标签传播的社区检测算法(LPA,快速高效),基于模块度最优化算法(BGLL,稳定准确),基于贪婪法思想的凝聚算法(FAST-GREEDY,适用于大型加权网络),基于随机游走的网络社区划分算法(WALK-TRAP,适用于网络社区结构不明显的情况)
网络自动社区划分:
通过社区检测算法得到社区划分结果后,应用相应的图布局算法绘制出网络社区划分图。
图布局算法,主要是包括KK弹簧算法(适用于小规模网络的布局)和FR力导向布局算法(适用于较大规模网络的布局)
分析每个社区结构情况:
根据社区划分的结果,重新构建各自社区的邻接矩阵,利用矩阵运算,计算出每个社区的点数,边数,边权重,网络密度(即紧密程度);
运用社会网络分析法计算社区的集中趋势。
分析节点与社区群体在网络中地位情况:
运用社会网络中心性分析与核心人物挖掘的知识,结合点度中心度与点度中心势挖掘出核心人物,并分析网络中的活跃人物和不活跃人物,对比网络中社区与社区之间的节点分布情况,网络密度,网络中心势,从而分析每个社区相对的网络规模,紧密程度,集中趋势。
结束:
用户通过注销后正式退出使用系统。
4.2整体结构
各模块功能说明:
1.登录注册模块:
实现登录注册功能,登录时输入用户名称和用户密码,正确则进入界面,不正确则显示用户或密码输入错误;
新用户注册时填上用户名,密码以及邮箱信息。
2.退出注销模块:
让用户退出系统,以便结束服务或切换用户。
3.导入数据管理:
让用户上传待处理的数据文件,包括网络信息文件和标签文件。
4.导出数据管理:
提供用户下载的文件数据,包括各节点与各社区的网络地位情况。
2.社区检测模块:
实现虚拟网络的社区检测,为一个拓扑网络自动划分出不同的社区群体。
3.社区结构分析模块:
分析每个社区群体的结构特征。
4.分析网络节点模块:
挖掘活跃节点与不活跃节点,分析节点在网络中的地位。
5.用户信息管理:
提供管理员权限,修改或增删用户信息。
6.远程连接管理:
提供管理员权限,远程访问数据库。
7.权限管理:
创建或删除管理员权限。
5核心技术以及算法
5.1社区检测算法
许多实际网络都具有一个共同特点,即社区结构,也就是说整个网络是由若干个“群(group)”或“社区(cluster)”构成。
每个群的内部的节点之间的连接相对非常紧密,但是各个群之间的连接相对比较稀疏。
不同的社会网络可划分为几个,几十个,甚至上万个社区。
分析社会网络,社会发现是最难解决和核心的问题之一。
本系统中,为用户提供四种的社区检测算法,分别是基于标签传播的社区检测算法(LabelpropagationAlgorithm),基于模块度最优化算法(BGLL),基于贪婪法思想的凝聚算法(Fast-greedy)以及基于随机游走的网络社区划分算法(walk-trap)。
5.1.1基于标签传播的社区检测算法
算法思想:
根据LPA算法基本理论,每个节点的标签按相似度传播给相邻节点,在节点传播的每一步,每个节点根据相邻节点的标签来更新自己的标签,与该节点相似度越大,其相邻节点对其标注的影响权值越大,相似节点的标签越趋于一致,其标签就越容易传播。
在标签传播过程中,保持已标注数据的标签不变,使其像一个源头把标签传向未标注数据。
最终,当迭代过程结束时,相似节点的概率分布也趋于相似,可以划分到同一个类别中,从而完成标签传播过程。
具体算法:
令(x1,y1)…(xl,yl)是已标注数据,YL={y1…yl}∈{1…C}是类别标签,类别数C已知,且均存在于标签数据中。
令(xl+1,yl+1)…(xl+u,yl+u)为未标注数据,YU={yl+1…yl+u}不可观测,l<
<
u,令数据集X={x1…xl+u}∈RD。
问题转换为:
从数据集X中,利用YL的学习,为未标注数据集YU的每个数据找到对应的标签。
将所有数据作为节点(包括已标注和未标注数据),创建一个完全连接图,其边的权重计算式如下:
其中:
dij表示任意两个节点的欧氏距离,权重wij受控于参数σ。
为衡量一个节点的标注通过边传播到其他节点的概率,在此定义一个(l+u)×
(l+u)概率传递矩阵T如下所示:
Tij是节点j到i的传播概率。
同时定义一个(l+u)×
C的标注矩阵Y,令Yic=δ(yi,c),它的第i行代表着节点yi的标注概率,第c列代表类别,若Yic=1则表示节点yi是属于c类别,否则为0。
通过概率传递,使其概率分布集中于给定类别,然后通过边的权重值来传递节点标签。
矩阵Y的初始值并不重要,但是要保证他的每行都是标准化的。
算法描述如下:
输入:
u个未标注数据,l个标注数据及其类别C。
输出:
u个未标注数据的标注。
a)初始化,利用式
(1)计算边权重矩阵wij,得到数据间的相似度。
b)根据步骤a)得到的wij,利用式
(2)计算节点j到i的传播概率。
c)定义一个(l+u)×
C维的标注矩阵Y。
d)每个节点按传播概率把它周围节点传播的标注值按权重相加,并更新自己的概率分布:
e)限定已标注数据,把已标注数据的概率分布重新赋值为初始值。
重复步骤d),直到收敛。
注意保持已标注数据点的标注源不变,把它的值限定为Yl,不断地把标注从高权值传播到低权值。
算法特点:
LPA可预测和传播未标记数据的标签,然后合并到标记的数据集中。
该算法操作简单、运算量小。
另外,LPA可以通过相近节点之间的标签的传递来学习分类,它不受数据分布形状的局限,可以克服一些算法只能发现“类圆形”结构的缺点。
5.1.2基于模块度最优化算法
该算法主要分为两个步骤:
第一步,从节点合并开始,构建第一步社团划分结果。
每个节点根据模块度增益决定是否加入到邻居节点的社区中和到底加入到哪个邻居节点的社区中。
每个节点按序执行该过程。
(2)重新构建网络。
把第一步每个社团单做一个节点,边是原来的社区之间链接边权的和。
迭代
(1),
(2)直到收敛。
第一阶段,首先进行社团初始化,网络中的每个节点都分配一个社团编号,这样每个节点都被看作是一个社团。
然后,对于任意节点i、j,根据式
(2)计算当节点i加入到它的每个邻居节点j所在的社团时,对应社团模块度的增量∆Q:
式中∑in是社团内部所有边的权重和;
∑tot是所有与社团内部节点相关联的边的权重和;
ik是所有与点i相关联的边的权重和;
i,ink是节点i与社团C相连接的所有边的权重和。
当∆Q为正值时,选出对应最大值的那个邻居节点,把点i加入到该邻居节点所在的社团中;
若所有∆Q都为负值,则节点i留在初始社团中。
这种社团的合并过程重复进行,直到整个网络不再出现合并现象时,划分出了第一层的社团。
第二阶段,首先构造一个新网络,该新网络的节点是第一阶段探测出的各个社团,节点之间连边的权重是两个社团之间所有连边的权重和。
然后,用第一阶段中的算法再次对该新网络进行社团划分,得到第二层的社团结构。
以此类推,直到不能再划分出更高一层的社团结构为止。
BGLL算法本身就能够生成一种层次性的社团结构。
这是一种自下而上的凝聚过程,不会出现对小规模社团的探测遗漏现象,即解决了分辨率问题,准确而稳定。
5.1.3基于贪婪法思想的凝聚算法
将网络划分为K个社团,定义一个k*k维的对称矩阵E,其中元素,表示网络连接两个不同社团的节点的边在所有边中
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 详细 设计 文档