6.1 获取社交网络数据的途径
6.1.1 电子邮件
我们可以通过分析用户的联系人列表了解用户的好友信息,而且可以进一步通过研究两个用户之间的邮件往来频繁程度度量两个用户的熟悉程度。
如果我们获得了用户的邮箱,也可以通过邮箱后缀得到一定的社交关系信息。很多社交网站都在用户注册时提供了让用户从电子邮件联系人中导入好友关系的功能,用以解决社交网络的冷启动问题。
6.1.2 用户注册信息
有些网站需要用户在注册时填写一些诸如公司、学校等信息。这也是一种隐性的社交网络数据。
6.1.3 用户的位置数据
在网页上最容易拿到的用户位置信息就是IP地址。对于手机等移动设备,我们可以拿到更详细的GPS数据。位置信息也是一种反映用户社交关系的数据。
6.1.4 论坛和讨论组
如果两个用户同时加入了很多不同的小组,我们可以认为这两个用户很可能互相了解或者具有相似的兴趣。如果两个用户在讨论组中曾经就某一个帖子共同进行过讨论,那就更加说明他们之间的熟悉程度或兴趣相似度很高。
6.1.5 即时聊天工具
和电子邮件系统一样,用户在即时聊天工具上也会有一个联系人列表,而且往往还会给联系人进行分组。通过这个列表和分组信息,我们就可以知道用户的社交网络关系,而通过统计用户之间聊天的频繁程度,可以度量出用户之间的熟悉程度。
6.1.6 社交网站
个性化推荐系统可以利用社交网站公开的用户社交网络和行为数据,辅助用户更好地完成信息过滤的任务,更好地找到和自己兴趣相似的好友,更快地找到自己感兴趣的内容。
1. 社会图谱和兴趣图谱
Facebook和Twitter作为社交网站中的两个代表,它们其实代表了不同的社交网络结构。在Facebook里,人们的好友一般都是自己在现实社会中认识的人,而且Facebook中的好友关系是需要双方确认的。在Twitter里,人们的好友往往都是现实中自己不认识的,而只是出于对对方言论的兴趣而建立好友关系,好友关系也是单向的关注关系。以Facebook为代表的社交网络称为社交图谱(social graph),而以Twitter为代表的社交网络称为兴趣图谱(interest graph)。
但是,每个社会化网站都不是单纯的社交图谱或者兴趣图谱。
6.2 社交网络数据简介
社交网络定义了用户之间的联系,因此可以用图定义社交网络。我们用图G(V,E,w)定义一个社交网络,其中V是顶点集合,每个顶点代表一个用户,E是边集合,如果用户和有社交网络关系,那么就有一条边连接这两个用户,而 定义了边的权重。业界有两种著名的社交网络。一种以Facebook为代表,它的朋友关系是需要双向确认的,因此在这种社交网络上可以用无向边连接有社交网络关系的用户。另一种以Twitter为代表,它的朋友关系是单向的,因此可以用有向边代表这种社交网络上的用户关系。
此外,对图G中的用户顶点u,定义out(u)为顶点u指向的顶点集合(如果套用微博中的术语,out(u)就是用户u关注的用户集合),定义in(u)为指向顶点u的顶点集合(也就是关注用户u的用户集合)。那么,在Facebook这种无向社交网络中显然有out(u)=in(u)。
一般来说,有3种不同的社交网络数据。
双向确认的社交网络数据,这种社交网络一般可以通过无向图表示。
单向关注的社交网络数据,这种社交网络中的用户关系是单向的,可以通过有向图表示。
基于社区的社交网络数据,这种社交网络数据,用户之间并没有明确的关系,但是这种数据包含了用户属于不同社区的数据。
社交网络数据中的长尾分布
社交网络中用户的入度(in degree)和出度(out degree)的分布也是满足长尾分布的。
用户的入度反映了用户的社会影响力。用户的入度近似长尾分布,这说明在一个社交网络中影响力大的用户总是占少数。
出度代表了一个用户关注的用户数,该图说明在一个社交网络中,关注很多人的用户占少数,而绝大多数用户只关注很少的人。
6.3 基于社交网络的推荐
很多网站都利用Facebook的社交网络数据给用户提供社会化推荐。
社会化推荐之所以受到很多网站的重视,是缘于如下优点。
(1)好友推荐可以增加推荐的信任度
(2)社交网络可以解决冷启动问题
社会化推荐也有一些缺点,其中最主要的就是很多时候并不一定能提高推荐算法的离线精度