SuperSaiyan

I do all aspects related to high performance distributed web application system, such as RIA, Security, databse design and sql, javascript, c#, Asp.net, Software Factory. Among these, the database part is the key to performance.

导航

Facebook的用户推荐和话题推荐算法

用户推荐和话题推荐是SNS的重要课题,效果的好坏是社交网站的区别指标之一,直接关系到用户体验,甚至是SNS的活力。国内的一些社交网站,比如新浪微博等,在功能上和UI上做的已经达到国际一流,然而,在推荐算法方面,仍有相当距离。推荐算法属于SNS的内功,对于SNS的用户体验的作用,和搜索算法对搜索网站的用户体验的作用相似。改进推荐算法,是社交网站的下一步方向之一。本文用图示法非常简单形象的描述了两种话题推荐法,两种用户推荐法,一种用户间相关度计算法。其中有些方法是非死不可用的。

用户推荐和话题推荐对社交网络的重要性,来自与社交网络的基本价值定位:让读者感到有趣,作者感到被欣赏和赞同。这两者间的一个重要纽带是用户推荐和帖子推荐。如果推荐系统除了会推荐名人以外,别的基本不靠谱,那么,由于名人不是有趣的充分条件,别的又不靠谱,这样的推荐系统太过单薄。如此,渐渐的,其中的用户关系体系可能会变得僵硬。读者感到无趣,作者感到孤冷,社交网络也枯萎。当然,社会是多层次的,确实存在着名人和铁杆粉丝这么一种现象,但这些人只占很小的一部分。多数人上社交网站,是要解决自己的问题,那就是信息获取与推广交流。

作者认为,社交网络还有更高一层的意义,第一,可以比做是社会神经网络,是集体智慧(Collective Intelligence)框架工具。第二,可以比做是是思想碰撞,增值,成长与结果的大型链式核反应堆。我们知道,在一个神经网络中,非常重要的一个功能就是联想。社交网络也是如此。从计算机实施的角度来说,联想就是相关性发掘,以及根据发掘结果进行推荐,本文介绍的算法,处处体现着联想的特征。推荐不好,会导致无趣和冷漠,或者无聊与低俗泛滥->最终结果仍然是无趣和冷漠。

我假定一个user case, 某大学研究生A,研究中西文化差异问题,有一天他读到一篇有关高场景文化和低场景文化的文章,然后发了一篇帖子。新浪微博(国内的都一样)会对此视而不见,继续为他推荐姚晨和"郑伊健结婚前任祝福"。但是,FB会以此为线索,为他推荐有类似兴趣的人B。这样,他就会在FB上和此人结成一定的关系,并经经常交流。而这两个人都从FB获得了好处。FB获得了流量。

这里面用到了FB的相关性算法(如图5所示)。它的基本思想是,分析每个人的各种属性,比如,标签,爱好,高频词等等,然后,他和另一个人的相关性,是由这些词的重叠程度,重叠越多则相关性越大,以及这些词在用户中总的分布概率所决定的,这个分布概率越低,则相关性越大。为了说明后一点,我还举刚才那个例子,假如,A发的帖子是关于姚晨,尽管B也对姚晨感兴趣,但用户中对姚感兴趣的很多,所以,A和B,因为这点重叠所贡献的相关性就很小。假如,A的帖子是关于"High context culture vs Low context culture",对这个感兴趣的用户的比例很低,那么,A和B因为这项重叠所具有的相关性就很大。

插图1和插图2描述了非死不可的话题推荐的两个方法。基本上这是一种相关搜索法。在话题推荐方法2中,"相关话题"的含义是,比如,篮球,CBA,NBA,乔丹,等等,这些都是相关话题。其中"Sort SX for all X"的含义,是对所有的X的SX进行排序,取其前几名作为待推荐话题,以下"Sort..."多次出现,其含义相似。

插图3中描述的用户推荐方法1,是最简单的用户推荐方法,估计新浪微博用的基本上就是这种方法或者其某种变形,比如,把所有的关注强度按照1来近似。实际上,A对I的关注强度,应该和A对I的贴子的转发/评论频率有关的。

插图4中描述的用户推荐方法2,是一种相关法。如果仔细分析可以看出,插图3中的用户推荐方法1是插图1中的话题推荐方法1的变形,插图4中的用户推荐方法2是插图2中的话题推荐方法2的变形。

========================== 

========================== 

 

插图5是Facebook的计算用户相关度的方法。这也可以用于用户推荐,只需要找出相关度最大的前几名用户X即可。 

插图5补充说明:

I和J相同时,相关度Cor(I,J)=1/P(i),含义是如果两个人具有一个共同的兴趣,而该兴趣越稀有,那么兴趣I对相关度贡献就高。其中“AtoI强度", “XtoJ强度", 简单一点,可以直接用1代入。其中的"项目",可以是社交网络中的任何对象,比如,兴趣爱好,话题,学校,工作单位,Tag(标签),等等。甚至也可以是社交网络中的用户。如果把用户也包括在项目中进行求和的话,则可以得到最全面的用户间相关度评价,这时候,“AtoI强度"应该是和A对I的贴子的转发/评论频率有关的。

posted on 2012-10-12 16:14  SuperSaiyan  阅读(3572)  评论(1编辑  收藏  举报