R软件用于社会网络:人人网好友推荐系统讲义.docxVIP

R软件用于社会网络:人人网好友推荐系统讲义.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
社会网络分析:探索人人网好友推荐系统 摘要: 最近四五年间,互联网行业似乎总是绕不开社交网络这个概念。无论是旗舰级别的传说中的facebook、LinkedIn,还是如雨后春笋般冒出来的各种团购和微博网站,全都或多或少地体现着SNS(社会网络服务)的特色。这些五花八 ... 最 近四五年间,互联网行业似乎总是绕不开社交网络这个概念。无论是旗舰级别的传说中的facebook、LinkedIn,还是如雨后春笋般冒出来的各种团 购和微博网站,全都或多或少地体现着SNS(社会网络服务)的特色。这些五花八门的产品,在丰富我们业余生活的同时,也为研究者提供了大量珍贵的数据。以 往只能依靠有限的调研或模拟才能进行的社会网络分析(SNA),现在具备了大规模开展和实施的条件。国内著名而典型的SNS网站“人人网”,最近依靠上市 新闻重新赢得了大家的关注。本文基于人人网的好友关系数据,应用统计分析软件R做了社会网络分析的一些尝试。 ? 注:网络边界的确定,是社会网络分析的关键而困难的步骤。由于数据获取的限制,本文分析的对象限制于我的好友。也就是说,本文分析的网络是我自己的好友圈子,读者看了这些分析结果或许会觉得索然无味,感兴趣的同学可以分析一下自己的社交网络,看看是否会有类似的结果。 ? 2011-06-20 增加了新的代码在附件中,可以直接获取“共同好友”。如果只需要分析好友的群组关系(而忽略并无技术含量的好友推荐功能),可以直接运行这段代码,大幅度提高效率,分分钟搞定,同时绕过好友同名的问题。欢迎试用哦。 2011-12-15 修改了正文的脚本,修正了数据读取的代码中的一处错误。 2012-03-13 首先需要安装R软件。然后需要下载安装相应的包。比如:install.packages(‘RCurl’)。 2012-03-14 稍微完善了一下只做好友分组的代码。人人网真的很稳定,竟然从来没有版本的更新。。。 2012-03-30 共同好友的部分,我学会了用rjson包解析。顺手在正文里面加了张图片。 ? 一、读取数据 之所以选择人人网作为分析的对象,很重要的一点原因在于其数据获取较为便利。本文读取数据的过程借助了一款命令行浏览器cURL,这个浏览器在R中可以用RCurl包实现,简要的中文介绍建议参考medo的《R不务正业之RCurl》。通过RCurl的简单编程,我们可以在R中实现登录人人网、发布状态以及读取页面数据等功能。 人人网好友列表页面的url为/GetFriendList.do?curpage=0id=****,其中curpage为页码参数,id为相应的用户。通过对id与curpage做简单的循环,我读取了自己(陈逸波)的所有好友以及好友的好友。(读取数据的R代码见文末附件。) 用上述代码读取到的数据集记为friend_all,该数据有如下的格式: 其中,第一行数据表示“沈叶”与“邢凤婷”是好友关系,id0与id1为相应的用户id。需要注意的是人人网中不可避免地会出现同名用户的情况,因此id才是用户的唯一标识。 ? 二、绘制简单的好友关系网络图 本文分析的焦点集中于我的好友之间形成的网络,因此考虑做网络图来直观地展示网络的结构。 首先,从上述读取到的数据集中筛选出希望分析的子集。这个子集包含了两个条件: (1)网络中没有我自己(否则会呈现以我为中心的分布,失去了分析的意义); (2)网络中的用户都是我自己的好友。 然后就是直接利用igraph包的做图功能绘制相应的网络图。考虑前面提到的用户同名情况,直接用id来做后续的分析。 library(igraph) people = data.frame(id = tmp1[, 4], name = tmp1[, 3]) gg = graph.data.frame(d = tmp2, directed = F, vertices = people) is.simple(gg) gg = simplify(gg) ## 去掉重复的连接 is.simple(gg) ## png(net_simple.png, width = 500, height = 500) par(mar = c(0, 0, 0, 0)) set.seed(14) plot(gg, layout = layout.fruchterman.reingold, vertex.size = 5, vertex.label = NA, ??? edge.color = grey(0.5), edge.arrow.mode = -) ## dev.off() 从图中可以直观地看出,我的好友网络存在一定的人群分割,可以尝试对这个网络进行一些分析以提取出其中相对独立的子群(或者称为社群)。 ? 三、子群分割 信息的分类和过滤是社会网络服务

文档评论(0)

***** + 关注
实名认证
文档贡献者

我是自由职业者,从事文档的创作工作。

1亿VIP精品文档

相关文档