标签归档:社交网络

狗熊报告之一:社交网络数据分析与应用

周静、朱雪宁

北京大学光华管理学院营销系、商务统计与经济计量系

根据最近的一份调查数据显示,美国互联网媒体的市值已达10890亿美元,是传统媒体的3倍,类似的在中国,根据艾瑞咨询发布的2014年第二季度网络经济核心数据显示,截止2014年6月30日,中国主要上市互联网公司市值前五的为腾讯(1405.6亿美元)、百度(654.5亿美元)、京东(389.7亿美元)、奇虎360(120.9亿美元)、唯品会(111.9亿美元)。与此同时,以Facebook,Twitter,微博,微信等为代表的社交网络应用正蓬勃发展,开启了互联网时代的社交概念。据全球最大的社会化媒体传播咨询公司We Are Very Social Limited分析指出,目前社交类软件使用的人数已达25亿——占世界总人数约的35%,另据艾瑞咨询发布的2014年第二季度社区交友数据显示,2014年5月,社区交友类服务月度覆盖人数达到4.7亿,在总体网民中渗透率为92.5%;2014年5月社交服务在移动App端月度覆盖人数为1.9亿人,其中微博服务在移动端优势较为明显,月度覆盖人数达到1.1亿人;互联网媒体和社交网络是Web2.0时代两个非常重要的应用,那么一个自然的问题是这两个领域将会如何互动发展?本报告主要从数据分析(非财务、非战略)的角度尝试探讨网络结构会给互联网媒体带来什么样的机遇和挑战。具体而言,我们根据自己的研究经验只关注以下几个方面:新闻、影音和搜索,根据艾瑞咨询发布的2013网络经济核心数据显示,这三部分的收入占到中国市值TOP20互联网企业总市值的32.16%,其重要性不可忽视。我们通过具体的案例并结合理论前沿做探索性的研讨。

一、音乐推荐

继续阅读狗熊报告之一:社交网络数据分析与应用

微博用户影响力评价的H-Index指数

H-index其实更广泛的应用于学术论文评价,其定义为:

h代表“高引用次数”(high citations),一名科研人员的h指数是指他至多有h篇论文分别被引用了至少h次。

约在半年前,小编就和一位老师打趣地说这东西能不能用于评价微博用户的影响力。定义相应可以改为:

一名微博用户的h指数是指他至多有h个粉丝数超过h的粉丝。

怎奈后来抓数据奇慢无比,遂放弃。

转过年来,春天都到了,Rweibo这个包也出来好久了,不动手试试多少有点痒痒。新浪微博的API对于测试帐号限制较多,一小时只有150次请求机会。唉,只能无耻的多帐号多API一个个抓。就算这样,到最后在有限的时间之内小编也只成功的抓取了一百多个用户的信息,勉强绘就了一张微博的H-index指数与粉丝数的关系图。

当然,一切的第一步自然是以小编自己的帐号为测试中心。前段时间涨了不少粉丝,貌似却不怎么互动。所以小编有理由认为自己的H-index可能偏低。结果证明,在小编的近1100粉丝之中,只有287人的粉丝数超过了287。这样,小编的H-index就华丽丽的定格在287了。

然后小编好奇呀,那些跟我差不多的人,他们的情况是怎么样呢?于是从自己的粉丝中(我只能直接影响到这些人嘛)上下选了一下,粉丝数>500且小于2000的显然是个不错的对比范围(受限于新浪微博API的控制,力不从心呀)。

不一会儿,数据抓完了。然后算算H-index,就有了下面这张图:

新浪微博用户影响力H-index指数(点击大图)
新浪微博用户影响力H-index指数(点击大图)

继续阅读微博用户影响力评价的H-Index指数

用R来给微博添把火

近两年来微博这东西越来越火了,已经逐渐成了最主流的网络舆论平台。对于最近的网络热点问题大家一定是深有体会,作为统计门人,肯定很多人技痒不已,希望能进一步地探究很多事情背后的秘密……

好在几个主流的微博平台都提供了API,各种语言的SDK应运而生,而真正的分析利器R的SDK一直没有,这里不卖关子了,直接发布一个R的SDK,参见:Rweibo中文主页

本项目在R-Forge上开发(https://r-forge.r-project.org/projects/rweibo/),最新的信息发布在Rweibo中文主页上。目前的版本全部基于新浪微博,毕竟是现在最火的微博,其实几个微博的API平台大同小异,和twitter的也类似,都来自于同样的开源平台,略作改动也能支持腾讯微博等。本文就只拿新浪微博举例。

CRAN上有一个twitteR包,之前普通权限还可以用的时候有些接口可以和新浪的API通用,新浪废掉普通权限只留OAuth之后,我就放弃了twitteR,开始开发Rweibo(当前版本的twitteR已经可以支持OAuth,不过很多接口的细节和新浪微博还是不一样)。

在这里,我先介绍一下授权机制以及OAuth,这个搞定后整个微博的API就仅仅只是传一下参数调用GET和POST方法而已。最早的微博开放平台的授权方式是普通授权,通过HTTP的头信息来传递用户的信息,这种方式不是很安全,在非HTTPS的情况下密码可能会被窃听,对于开发者和使用者来说都是比较危险的。后来新浪就直接停用了这种方式,采用目前流行的OAuth。

OAuth看上去很玄乎,其实道理非常简单。拿微博开放平台来说,开发者希望能开发一个应用,让不同的用户使用,每个用户都有自己的微博帐号信息,他们不希望在使用的过程中被开发者知道,同时开发者的这个应用的帐号密码也不希望被别的用户知道,不然就会被同行拿去乱来。这样一来,就需要一种授权机制,能够使得开发者和用户都信得过,就好象在淘宝买东西一样,买家和卖家都基于一个可信的第三方平台。对于新浪微博来说,双方都信任新浪,只要能确认所处的网站是真的新浪微博,就不会有问题。先是开发者将自己的App Key和App Secret发送到一个请求地址,新浪微博验证无误后,返回请求的Token,其实相当于是加密过的开发者信息,将这个信息发送到授权地址,可以完成用户的授权。用户在授权的页面可以输入自己的微博帐号,这些信息只有新浪知道,然后会返回一个验证码,用户输入这个验证码之后进行再次确认。开发者将之前自己的Token信息以及用户的这个验证码一起发送到一个访问地址,经过确认后,新浪微博觉得双方都是可信的,而且彼此也都不知道对方的信息,就会返回一个访问的Token以及密码,这就好比是一把钥匙,开发者只要存着这把钥匙,下次如果再对该用户做某些操作时就不需要再征求他的同意了,除非用户主动废除这把钥匙。以上的过程就是OAuth授权的过程。

我最开始是利用JAVA版本的OAuth库,通过rJava实现,后来CRAN上的ROAuth成熟之后又改用ROAuth,在twitte上使用没问题,在新浪微博上调用POST时会有问题,而且对于中文的POST,新浪的开放平台需要编码两次,因此需要对这个包进行改写。当前版本的Rweibo已经不再依赖于ROAuth,直接使用RCurl实现整个授权过程,但是仍然借鉴了大部分的ROAuth包的内容,在这里对作者表示感谢。

安装Rweibo可以参见Rweibo中文主页,里面有详细的介绍。使用时首先需要有一个微博帐号,点击“应用”,选定“微博开放平台”,在弹出页面选择“我是开发者”,然后创建一个普通应用,填好基本信息之后在应用的详情中填上相应的内容,就可以成功创建一个新的应用,将会得到一个App Key和App Secret,在Rweibo中使用registerApp函数,输入这两个信息以及该应用的名称(自己随便起个英文名字即可,不一定要与新浪应用的名字相同),就可以在R中注册该应用的信息。

利用createOAuth函数可以创建一个OAuth对象,如果是第一次使用,将会自动进行授权。比方说我注册了一个应用叫做test,我需要授权给我的微博帐号lijiao001或者我的马甲Rweibo,那么将会在R的界面中完成一个授权的交互过程,如果我用lijianoo1的帐号来操作,那么授权成功后,就可以调用各类函数读取这个帐号的信息或者用该帐号来发微博。一个简单的操作过程如下所示:

registerApp("GDdmIQH6jh", "MCD8BKwGdgPHv", app_name = "test")  # 在R中注册新的应用
roauth <- createOAuth("test", "lijian001")  # 创建OAuth对象
timeline.Friends(roauth, list(count = 5))  # 获取好友及自己的前5条最新微博
timeline.CommentsList(roauth, list(id = 14762313082))  # 获取某条微博的评论列表
timeline.Comments(roauth, list(count = 5))  # 获取自己发送及收到的评论
timeline.Repost(roauth, list(id = 14761105585, count = 5))  # 获取某ID微博的转发情况
timeline.Mentions(roauth, list(count = 5))  # 获取@了当前用户的微博列表
timeline.User(roauth, list(screen_name = "rweibo", count = 5))  # 获取某用户的信息
access.update(roauth, list(status = "hello world"))  # 发一条微博
search.Content(roauth, list(q = "Rweibo"))  # 根据关键词搜索微博内容

目前版本的Rweibo实现了所有的timeline接口以及搜索、查询用户等接口,利用这些接口已经可以取到大部分能够用来分析的信息了。至于其他一些操作的接口,将会在后续的版本中实现。大家有什么建议也可以提给我,我将会在后续的版本中修改。

另外值得注意的是,我们申请的应用都是最低权限的,因为新浪目前对接口访问权限控制得比较严,只有成为合作开发者才能有很大的权限,而这些主要都是针对应用的需求而不是分析的需求。普通的权限一小时只能访问150次,其中发微博的操作只能在30次以内。对于一些操作,每次取出的信息条目也会有限制,20条到200条不等。没办法对某个关键词一次把所有的东西搜索出来或者将某条微博的转发信息一次抓取出来。但是这些难不倒我们,微博API是基于轮询的协议,两分钟左右取一次足矣,对于要分析的内容,我们完全可以设置一个任务,每隔两分钟取一下增量,时间一长就会得到我们想要的大量的数据了。

至于这些内容可以如何进行分析,就需要大家的聪明才智了。我最近想做的一件事情就是研究一下微博的转发规律。很多热点事件通常都会有几条转得极热的微博,如果能够得到转发的规律,就像传染病的规律一样,找到一些关键的节点,对于我们研究微博舆情是非常有用的。

 

 

首届全国大学生数据挖掘邀请赛圆满结束

 

2011年5月8日,来自浙江大学、厦门大学、复旦大学、浙江大学、北京大学、东南大学、中山大学、北京航空航天大学大学等多所高校的获奖队伍聚集于中国科学技术大学进行比赛的最终答辩环节,确定了最终的名次和奖项,标志着经过一个多月的群雄逐鹿,首届全国大学生数据挖掘邀请赛终于圆满结束。首届全国大学生数据挖掘邀请赛是由中国科技大学管理学院、中国人民大学统计学院和统计之都发起并主办,由上海花千树信息科技有限公司提供资金赞助和服务器支持。在一个多月的比赛时间中,共有来自大陆、香港及海外多所高校的1115支队伍注册参赛,期间有303支队伍成功提交预测结果,最终有240只队伍全程参与比赛。

赛题背景

以某大型婚恋网站交友数据为依托的推荐系统

队伍信息

总注册队伍1115支,其中本科生队伍794支,研究生队伍321支,分别来自以下一百多所高校及研究所:

安徽大学、安徽理工大学、安徽农业大学、北方工业大学、北方民族大学、北京大学、北京工商大学、北京航空航天大学、北京理工大学、北京林业大学、北京信息科技大学、北京邮电大学、北京语言大学、大连理工大学、大连民族学院、电子科技大学、电子科学技术大学、东北大学、东北师范大学、东华大学、东南大学、多伦多大学、福州大学、复旦大学、广东工业大学、广东省中山大学、广东外语外贸大学、广西大学、广州大学、桂林理工大学、国防科学技术大学、哈尔滨工业大学、哈尔滨工业大学深圳研究生院、杭州电子科技大学、合肥工业大学、河南工业大学、河南科技大学、湖北大学、湖南大学、华东理工大学、华东师范大学、华南理工大学、华南农业大学、华中科技大学、华中农业大学、华中师范大学、暨南大学、江西财经大学、兰州大学、洛阳理工学院、南昌大学、南方医科大学、南京财经大学、南京大学、南京航空航天大学、南京理工大学、南京农业大学、南京医科大学、南开大学、清华大学、人民大学、厦门大学、山东大学、山东科技大学、汕头大学、上海财经大学、上海大学、上海交通大学、上海师范大学、深圳大学、首都经济贸易大学、四川大学、苏州大学、太原理工大学、天津大学、天津工业大学、同济大学、乌普萨拉大学、武汉大学、武汉理工大学、西安财经学院、西安电子科技大学、西安交通大学、西安交通大学、西南财经大学、西南科技大学、香港科技大学、新加坡国立大学、新疆大学、云南财经大学、浙江财经学院、浙江大学、浙江大学城市学院、浙江工业大学、浙江理工大学、浙江师范、浙江师范大学、郑州大学、中国地质大学、中国地质大学(北京)、中国地质大学(武汉)、中国计量学院、中国科学技术大学、中国矿业大学、中国人民大学、中科院合肥研究院、中科院计算所、中科院声学所、中科院研究生院、中南财经政法大学、中南大学、中山大学、中央财经大学、重庆邮电大学、周口师范学院

 

获奖信息

本科生组:

名次 团队 队员 学校 院系
1 FooBar 仝子飞、刘佳硉 浙江大学 计算机科学与技术学院-计算机科学与工程学系
2 OldCubic 彭兵月、 刘宇辰 北京航空航天大学、清华大学 软件学院-软件工程系、经济管理学院-管理科学与工程系
3 LightSpeed 解浚源、陈宇澄 中国科学技术大学 计算机学院-计算机系
4 SiNZeRo 田文涛、洪诗保、胡亚光、叶挺 厦门大学 信息科学与技术学院-计算机科学与技术系
5 FDM 王超、张俊、董家为、王玥 复旦大学 计算机科学技术学院
6 forever 杨洋、陈章麒、姜涛、竺紫威 中国科学技术大学 少年班学院
7 兰州烧饼 蓝润荣 中国科学技术大学 管理学院-统计与金融系
8 zaq1xsw2tktk 唐坤、徐东昊 北京大学 数学科学学院-信息科学系、数学科学学院-科学与工程计算系

 

研究生组:

名次 团队 队员 学校 院系
1 RecSys1 宝腾飞、刘淇、程文华、聂鹏宇 中国科学技术大学 计算机学院
2 ForeverDream 张驰原、 李成 浙江大学 计算机学院-计算机应用技术系
3 数据掘金 徐童、曾广翔、季波、陈永环 中国科学技术大学 计算机学院-计算机系(1、2)、信息学院-自动化系(3、4)
4 totoro 杜龙志 北京大学 信息科学技术学院-计算机软件与理论
5 DataAnts 谢妍、刁瑞、来斯惟 中国科学院 数学与系统科学研究院(1、2)、自动化研究所(3)
6 icebergs 黄凯明、陆建、蒋玖川、章平 东南大学 信息科学与工程学院
7 Crystal 杨飞雕 中山大学 信息科学与技术学院-计算机科学与技术
8 napoloen 黄浩 浙江大学 计算机学院-计算机科学与工程学系

其中,第1名为一等奖(奖金10000¥),第2名为二等奖(奖金5000¥),第3~8名为三等奖(3~5名奖金2000¥,6~8名奖金500¥)。

附:首届全国大学生数据挖掘邀请赛结果排名(前100名)

竞赛相关数据展示

每天注册的队伍数:

上图为3月16日~4月15日每天注册的队伍数(注:竞赛于3月19日全面公开注册,在此之前在对中科大学生提前公布了注册网站以测试系统)。

每日有效提交次数:

上图为3月23日~4月27日每天成功提交的符合规范的预测结果数目,总共提交的次数为11162次。

提交次数频数:

上图为提交次数的频数图,从上图可以看出,大部分队伍提交次数很少。提交次数超过10的队伍有217个,超过50的有70个,超过100的有29个。最终获奖的队伍的提交总次数都很高。

赛后相关博文及帖子

旁门左道:第一届全国大学生数据挖掘邀请赛-数据集分析篇

JiangFeng:第一届数据挖掘邀请赛 – 缘来如此

ruikoeln:数据挖掘邀请赛-一个酱油党的感言

rainywh269:数据挖掘邀请赛 赛后感

cloud_wei:中科大之行及数据挖掘竞赛小总结

Mantous: 第一届全国大学生数据挖掘邀请赛-总结