六度分离在社交网络中的验证网络科学与策略机制贾溢豪黄昱恺李丽珊何林张婷Group2Part1六度分离理论背景方案论述数据获取Gephi数据处理六度分离理论验证Part2Part3Part4Part5化六度分隔(SixDegreesofSeparation)哈佛大学社会心理学教授StanleyMilgram连锁信件实验任意两个人都可通过平均6个熟人联系起来“六度分割”在互联网中极具商业价值Blog、Facebook、LinkedIN信息时代对人类社会的再一次理解与探索Part1六度分离理论背景方案论述数据获取Gephi数据处理六度分离理论验证Part2Part3Part4Part5化中国较为主流的网络社交窗口微博、人人、空间、朋友圈Step1.捕获任意用户好友关系数据【150】Python语言编写网页爬虫Step2.绘制好友关系连接图【10w】导入Gephi绘制Step3.统计数据,计算节点间平均跳数Gephi、Excel统计化核心统计参数度:节点做连接的边数,即指定用户的所拥有的好友数。离心率:从一个给定起始节点到距其最远节点的距离。紧密中心数:从一个给定起始节点到其他所有节点的平均距离。中介中心数:度量一个节点在网络中最短路径上出现的频率。Part1六度分离理论背景方案论述数据获取Gephi数据处理六度分离理论验证Part2Part3Part4Part5化利用pythonHttplib2模块伪装浏览器,构造查询好友列表URL,发送HTTP请求给人人网,然后利用正则表达式解析服务器端返回的HTML文档,提取用户的好友信息Python程序核心思路化从某人人用户开始,利用其登陆的cookie作为输入,作为爬虫起始点构建查询URL,伪装浏览器发送HTTP请求(需要随机更改报文头防止被屏蔽)解析服务器返回的HTML,利用正则表达式解析好友列表递归遍历起始点好友的好友列表,直到爬虫数据大小满足实验分析的要求化repo_mysql.py用于将解析过的好友列表和用户信息保存到mysql服务器中,提供了一些基本的好友数据的查询,插入,更新等接口函数spider.py以起始点用户的登陆cookie作为输入,遍历查询该用户的好友列表信息,并对每个好友,递归查询对应的好友列表信息,每次会从MySQL数据库中查询该用户的好友列表是否已经被检索过,从而提供了断开重连继续爬取的功能,从而形成一个好友网络查询顺序。核心模块介绍化repo_mysql.py用于将解析过的好友列表和用户信息保存到mysql服务器中,提供了一些基本的好友数据的查询,插入,更新等接口函数spider.py以起始点用户的登陆cookie作为输入,遍历查询该用户的好友列表信息,并对每个好友,递归查询对应的好友列表信息,每次会从MySQL数据库中查询该用户的好友列表是否已经被检索过,从而提供了断开重连继续爬取的功能,从而形成一个好友网络查询顺序。化downloader.py该模块为好友数据爬虫的核心模块,提供了伪装浏览器发送请求和利用正则表达式解析返回信息的函数实现,传入参数为用户的cookie信息,用户添加在报文头中发送请求.i.浏览器报文头为了尽可能的避免爬虫程序被人人网服务器端检测并屏蔽掉,爬虫模块一方面可以通过随机时间休眠,另一方面可随机的替换报文头伪装不同的浏览器发送请求化ii.发送HTTP请求模块该函数接口传入参数url模式,item模式(用户信息),pageRange(可能好友列表有多页,需要多次请求获取),resend(超时重新发送请求最多次数),该模块发送url模式的请求,然后解析返回的HTML的itempattern来解析好友列表和用户配置信息化iii.利用正则表达式解析HTML示例好友列表或者状态信息都会构造一个URLpattern和需要解析的数据pattern传递给ii.中的方法调用,图4给出爬取和解析好友列表的urlpattern和itempattern。化1.选取150位用户为初始节点通过人工挑选的方式选出具有代表性的用户作为爬虫的起始节点,组内5人每人挑选30人,共挑选150名人人网用户,随机挑选尽可能使用户不相关,并记录他们的人人ID2.登陆人人获取cookie用任意浏览器登陆人人,并保存登陆后的cookie用作之后的爬取。工作流程Part1六度分离理论背景方案论述数据获取Gephi数据处理六度分离理论验证Part2Part3Part4Part5化1.在Gephi中新建项目,选择“数据资料”,选择“输入电子表格”,导入data.csv中的数据,选择“边表格”为数据导入形式。2.数据导入后,选择“概览”,点击统计中的“模块化”选项,将边的管理关系以不同源节点加以划分,得到150个不同的模块(源),并在“分割”中,对节点应用此模块化划分以使不同源在显示时有不同的颜色区分。3.在“流程”中,先后选择“ForceAtlas2”以及“YifanHu”的绘图方式,将节点的分布关系进行重构。4.在“预览”中,刷新构图Gephi图形绘制化化捕获的数据被模块化为150个模块,大多数模块所包含的机电署在250-750不等,包含节点最多的模块为模块18,其包含的节点数接近4000。模块化统计化度数为1的几点数高达近90000个,是因为这些节点都属于所选节点的朋友,朋友节点爬下其数据。度数最高的节点为2000,其余度数节点个数都趋近于1。“平均度”统计:2.114化紧密中心数的值约从3.4到7.8不等,其中紧密中心数的值在区间[5,6]的节点最多,某一特定数值的节点数最高可以达近2000个。中介中心数统计化离心率的数值可取为6,7,8,9,10。其中离心率为8的节点最多,超过了80000个,而其他离心率数值的节点在0-6000不等。由此可以看出,对于大多数节点而言,其连接到拓扑中其余节点的最大跳数为8离心率统计化统计结果列表Part1六度分离理论背景方案论述数据获取Gephi数据处理六度分离理论验证Part2Part3Part4Part5化拓扑颜色Gephi将统计结果中的94560个几点以150个不同的原节点染色,同一源节点和其相连的目的节点染以同样的颜色,因此在拓扑中会呈现出150种不同的颜色。拓扑形状:拓扑呈现出一个网状,拓扑的边缘往往是一些度数较小的源节点,即好友数较小的用户,拓扑的中心是一些度数较大的源节点,即好友数量较大的用户,这是因为在拓扑形状绘制的过程中,选择的是以“ForceAtlas2”为基础的作用模型,该模型是通过模拟现实世界中力的平衡以使点的分布区域稳定的一种方式,在这种方式下,为了达到稳定,高度数节点会分布在拓扑中心,低度数节点会在四周辅助以保持力的平衡,由此而产生了上述所绘制的图形。化离心率离心率最低为6,意味着该节点到网络中其他任意节点的最远距离为6跳,也就是说,该点到图中其他任意一点一定能够在6跳内完成。离心率从6-10不等,表明该图中任意两点之间的距离最大为10跳。由于爬虫数据仅仅涉及150个源节点、10万个关联关系,朋友节点均没有其好友关系分布。因此,现实生活中,任意两点之间的最远距离理应小于10。化紧密中心数:将节点参数按照紧密中心数从小到大排列,其数值为从3.392到7.865不等,意味着存在点到拓扑中其他节点的平均跳数为3.392跳-7.865不等。化中介中心数中介中心数数值从0到1912873815不等,用于度量一个节点在网络中最短路径上出现的频率,其数值越大越能证明其在网络拓扑中处于核心价值的位置。并且,中介中心数越大,其度数也相对越大,紧密中心数也相对越小,从侧面也能说明其在拓扑中处于关键性的位置。化六度分离的验证分析的统计数据,由于紧密中心数计算的是特定节点到拓扑下其他任意节点的平均跳数,所以将94560个节点的紧密中心数取平均,即可得到任意两节点之间的平均跳数。经过统计计算,得到其值为:5.442160535。在有限由的、且又足够大的拓扑下,任意两节点之间的平均距离为5.44≈6跳,那么在更为复杂的真实拓扑下,即使存在少量节点之间不可达或跳数大于等于7跳,但对于绝大多数节点来说,任意节点之间的平均距离应当也不足6跳。因此,真实社交网络环境下,用户之间的跳数在6跳以下满足六度分离理论。互联网数据使小世界现象更加透明六度分离不仅存在社会科学2015年01月08日网络科学与策略机制Group2