利用社交网络数据

        基于社交网络的推荐可以很好模拟现实社会,因此本文简单介绍下如何利用社交网络数据进行个性化推荐。一般获取社交网络数据的途径有电子邮件、用户注册信息、用户的位置数据、论坛和讨论组、即时聊天工具和社交网站(又分为以社会身份为主的社交图谱和以兴趣为主的兴趣图谱)。

        社交网络数据一般分为三类,一类是双向确认的社交网络数据(如qq好友),一类是单向关注的社交网络数据(如微博关注),另一类就是基于社区的社交网络数据(如贴吧)。

        社会化推荐之所以受到很多网站的重视,主要由于:一是好友推荐可以增加推荐的信任度;二是社交网络可以解决冷启动问题(可以把新用户的好友喜欢的物品推荐给新用户)。


1. 基于邻域的社会化推荐算法

        最简单的算法是给用户推荐其好友喜欢的物品集合。用户u对物品i的兴趣Pui可以通过如下公式计算:


其中out(u)表示用户u的好友集合,rvi表示用户v对物品的感兴趣程度,一般如果用户v喜欢物品i 取值为1,反之为0。但是不同的好友其熟悉程度和兴趣也是有区别的,因此可改写公式为:


其中wuv由两部分组成,一部分是用户u和用户v之间的熟悉程度(通过共同好友的数量来衡量),另一部分是用户u和用户v的兴趣相似度(通过共同喜欢的物品数量来衡量)。计算公式如下。


其中N(u)表示用户u喜欢的物品集合。

        该算法虽然看起来简单,但是在实际系统中却是很难操作的,主要是因为该算法需要拿到用户所有好友的历史行为数据,这些记录一般很庞大,很难都放在内存中,另一方面对于实时查询也比较困难。一般有两种解决办法,第一种是两处截断,第一处截断是只选取相似度较高的n个好友,第二处截断是只选取好友的近期行为数据;第二种解决办法是重新设计数据库,为每个用户设计一个信息墙。Twitter关于社会化推荐的思路大致如下:

(1)首先为每个用户维护一个消息队列,用于存储他的推荐列表;

(2)当一个用户喜欢一个物品时,就将(物品ID、用户ID和时间)这条记录写入到关注该用户的推荐列表消息队列中;

(3)当用户访问推荐系统时,读出他的推荐列表消息队列,对于这个消息队列中的每个物品重新计算该物品的权重。计算权重时需要考虑物品出现的次数、物品对应的用户和当前用户的熟悉程度、物品的时间戳。同时计算出每个物品被哪些好友喜欢过,用这些好友作为物品的推荐解释。

        与协同过滤推荐相比,社会化推荐虽然准确率和召回率较低,但其说服力较强。


2. 给用户推荐好友

        好友关系是社会化网站的重要组成部分,如果用户的好友很稀少,就不能体验到社会化的好处,因此好友推荐也是社会化网站的重要应用之一。一般可以从以下几个方式进行好友推荐。

(1)基于内容的匹配

        内容属性主要包括:用户人口统计学属性(年龄、性别、学校、工作单位等)、用户的兴趣(喜欢过的物品或者发表过的言论)、用户位置信息等。

(2)基于共同兴趣的好友推荐

(3)基于社交网络图的好友推荐

        主要通过计算用户间的相似度来推荐,计算公式有以下三种。

对于用户u和用户v,利用共同好友比例来计算相似度(out(u)表示用户u关注的用户集合)。

利用社交网络数据_第1张图片

对于用户u和用户v,利用共同粉丝比例来计算相似度(in(u)表示关注用户u的用户集合)。


第三种计算方式为


该计算方式会导致所有人都与名人有很大的相似度,因此修正公式为

.

你可能感兴趣的:(推荐系统)