★★★本博客欢迎转载,但请注明版权、原文链接,谢谢。
Memento..
My stories in my way..

A.背景

在阅读本文之前,我们强烈建议您阅读一下郑昀 的《来,做一个社会化推荐引擎》和《一个想法从构思到实现只需7天》,本文所讨论的议题以及我们正在做的事情,都始于他以前在相同领域的工作与思考。我们的测试版社会化推荐引擎取名为“玩聚猫”(http://dullcat.com) ,也是在名称上延续郑昀在三年前发布的同类产品“玩聚SR”。

当然,我们并不是在探讨如何简单地复制郑昀以前的工作,而是探讨如何站在巨人的肩膀上,把社会化推荐引擎做得更好、更全面、更讨用户喜欢。

玩聚猫

B.什么是社会化推荐(Social Recommendation,SR)?

郑昀在三年前对此的定义是“选择一批IT业界人士的社会化媒体分享源,如曹增辉冯大辉的GoogleReader分享,白鸦困兽twitter张亮饭否,还有叽歪dedelicious等等。对这些信息源的分享链接进行汇总,一个信息源推荐就算一票,综合票数、信息源权重、推荐时间点、信息源类型等多种因素,最终形成像鲜果热文diggReddit一样的跨平台社会化推荐引擎,并进一步引入语义关联技术,进化到协同过滤+语义过滤的自动化系统。”

由于数据源的原因,郑昀的定义比较强调“IT业界人士”,而我们想淡化这一点。

我们认为,社会化推荐系统是从社会化媒体中,根据一系列的算法,发现热门内容的系统。其使用的算法除了常规的数据挖掘、聚类外,主要是对各种信息源的『分享行为』进行汇总,对『分享行为』进行加权,综合『分享行为』的数量、信息源权重、推荐时间点、信息源类型等多种因素。她能分享最有价值的信息,能具有视野发散度,能削减信息爆炸。

『分享行为』是指用户在社会化媒体中对特定内容进行分享的行为,包括但不限于新浪微博的“转发”、人人网的“喜欢”、Google Plus的“+1”、以及Digg类网站的“顶”等等。

C.我们为什么要重复发明车轮?

原因很简单的,诞生于三年前的郑昀版社会化推荐系统有他的局限性:

a)由于过分依赖于IT业界人士,所推荐的内容难以吸引非IT人士

b)数据源较少(无论是种类还是数量),Google Reader Shared Item和Twitter占据了超过85%的信息。

c)由于b),没有形成在更大范围通用的排名公式。

d)没有像Google PR( Google PageRank)那样的指标,无法向用户直观地体现特定文章的价值。

e)推荐者权重模型(如名人效应)没有得到体现

因此,我们打算重新发明车轮,进行一场新的社会化推荐革命!

D.玩聚猫社会化推荐的数据源应该包含哪些?

我们把国内社会化分享媒体分为以下四类:

a) 微博、轻博客类。包含腾讯微博、新浪微博、网易微博、点点网、新浪Qing等;

b) SNS类。包含人人网、开心网、腾讯朋友等;

c) 书签、网摘类。包含强国网摘、CSDN网摘系统、爱库网、QQ书签、有道书签、百度搜藏等等;

d)RSS阅读器。包含Google Reader、鲜果、抓虾、豆瓣9点等等。

E.玩聚猫在处理不同类型社会化分享媒体的『分享行为』要考虑哪些因素?

上文也零星提及了一些,归纳起来有以下几点重要差异:

a)  『分享行为』类型不同。新浪微博有“转发”、人人网有“喜欢”、豆瓣9点有“推荐”、有的网站只有“阅读量”。

b)  网站权重不同。例如爱库网上最热的内容,权重肯定没有新浪微博上同一时间最热的内容权重高。

c)『分享行为』发起人的权重不同。例如李开复转发了一条微博,权重会比50个我转发同样一条微博更高。

d) 『分享行为』的时间也会影响权重。很多时候对于同一信息源、同一内容的『分享行为』是呈指数衰减的。例如在郭美美事件,我第一次在新浪微博看到时已经拥有了两万次转发,我看完后决定转发第两万零一次,明显我的这次转发的权重比第两千零一次转发的权重小。

e)  考虑去重复。例如我同时在我新浪微博和腾讯微博转发了同样一条微博,只能计数一次。

当然,我们希望这些差异对用户透明,因为用户不需要了解这么多。用户只需要一个类似Google PR的数字直接了当地告诉他文章价值就可以了。

所以我们引入了SR(Social Rank),范围0~10,标识在每篇文章的标题后面。一篇文章的SR能够精确表示它在其他各种社会化媒体的火热程度。

F.玩聚猫SR的计算公式

设置我们有N种数据源,分别是 {S1,S2,S3….Sn} ∈ S

如前文所述,数据源有4种类型,分别是{T1,T2,T3,T4}∈ T

设类型权重 {WT1,WT2,WT3,WT4}∈W T

对于数据源Si ,

设数据源自身权重为SW(i), SW(i)由网站的Alexa排名、PV量、修正值决定。

 T(i)表示它所属于的分类,WT(T(i) )  表示Si的类型权重

在计算某篇文章的SR时,设A(i) 是该文章在Si数据源里的『分享行为』计数。

那么,

对于这篇文章而言,

SR = Logi=1..nA(i) ×WT(T(i) )× SW(i)

为什么是Logx 呢? 有两点原因,一是它可以使得早期的投票获得更大的权重,比如,当x=10时,前 10 票获得的权重,与 11 到 101 票所获得的权重是一样的;二是使信息的层级呈金字塔型分布,就像Google PR、地震里氏等级一样。

Logx x的取值非常重要,玩聚猫的取法是这样的:从已知的m篇预料信息中计算最大的推荐价值

MaxV= Max( Vj= i=1..nA(i) ×WT(T(i) )× SW(i) | j=1..m  )

由于SR的范围是0至10,我们令 x^10 =MaxV

从而计算出 x =  10√MaxV

如果MaxV为35000,则X应该设定为2.847,SR = Log2.847 i=1..nA(i) ×WT(T(i) )× SW(i);推荐价值约200的文章SR为5,推荐价值约4500的文章SR为8,推荐价值大于35000的文章SR为10

通过这样的公式,为每篇文章都计算出一个Rank值,用户就能直观又精确地了解到文章的价值了。

×注意:玩聚猫的SocialRank和《来,做一个社会化推荐引擎》里提到的排序依据SR Rank不同。玩聚猫的SR跟列表排序依据没关系,只跟内容本身的价值有关系;郑昀 只跟排序有关系。

G.玩聚猫还有哪些需要改进的地方?

我们正在以下领域进行奋斗:
1.强化用户权重系统,尤其是引入模糊计算和估值,强调名人效应。
2.通过实验数据,不断改进排名算法。
3.引入智能语义、自然语言,使玩聚猫在面对文本信息时,能够以人类而非机械的方式进行思考、归类、关联、过滤、总结。
4.引入机器学习(如Prediction),使玩聚猫能够记住每一个用户的口味,个性化地推荐文章。

 

如果你对社会化推荐感兴趣的话,不妨到玩聚猫看看(目前是测试版本,服务器在国外,可能不太稳定,请见谅)。我们热忱欢迎您的一切宝贵意见、建议和批评。

posted on 2011-11-30 02:01  流牛木马  阅读(2783)  评论(17编辑  收藏  举报