本文主要是介绍【推荐架构day4】微博推荐引擎的基本算法:核心细节,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
引言
微博是一个很多人都在用的社交应用。天天刷微博的人每天都会进行着这样几个操作:原创、转发、回复、阅读、关注、@等。其中,前四个是针对短博文,最后的关注和@则针对的是用户之间的关系,关注某个人就意味着你成为他的粉丝,而他成为你的好友;@某个人意味着你想要他看到你的微博信息。
微博被人们认为是“自媒体”,即普通大众分享与本身相关的“新闻”的途径。最近,有些人使用自己在自媒体上的影响力而盈利的报道屡见不鲜。那微博上个人影响力是怎样计算的呢?微博上还有哪些算法作为看不见的手在管理着我们?我们的每一个行为怎样影响着算法呢?
直观上看,微博其实是人类社会的一个简单的缩影,微博网络的一些特点,也许可以启发我们得到真实的社会网络上的规律。得益于社交网络的爆发式发展,“社会计算”尤其是社交网络分析成为数据挖掘的新宠儿。下面我们就针对微博网络分析的一些算法进行简单的介绍,其中的有些算法对于其他的社交应用可能也适用。
- 【推荐架构day2】微博怎么给你推荐信息的:基本原理
- 【推荐架构day3】微博推荐引擎的体系结构:技术实现
标签传播
微博用户量浩大,不同的人有不同的兴趣。挖掘每个用户的兴趣有助于更加精准的广告投放、内容推荐。为了得到每个用户的兴趣,可以为用户打上标签,每个标签代表用户的一个兴趣,用户可以拥有一个或多个标签。为了得到最终的用户标签,先做第一个假设:
每个用户的好友(或粉丝)中与该用户具有相同兴趣的人占多数。
这就引出了本文介绍的第一个算法,即标签传播算法。在这个算法中,每个用户的标签取其好友或粉丝中标签最多的一个或多个。当然,可以将好友和粉丝的标签都考虑进来,整合的时候可以考虑赋予好友的标签和粉丝的标签不同的权重。标签传播算法的过程如下:
1)对一部分用户给出初始标签;
2)对每一个用户,统计其好友和粉丝的标签数目,赋予该用户出现次数最多的一个或者多个标签。
3)循环进行第2步,直到用户的标签不再发生大的变化为止。
用户相似度计算
标签传播算法实现起来比较简单,其缺点在于当所做的假设不符合事实时,比如为了社交上的礼貌,我们一般会把自己的亲友添加关注,这些人不一定和我们拥有同样的标签;该算法的结果就会变得很差。解决的办法就是通过计算用户之间的相似度来衡量好友或粉丝的标签对用户标签的贡献率。因而得到第二个假设:
与用户越相似的好友或粉丝,其标签越可能是用户的标签。
那么,如何衡量用户之间的相似度呢?这就需要考虑到用户发表的微博信息了,包括转发的和原创的。这里是要考虑用户之间的相似度而不是用户微博之间的相似度,因而在实际计算时,将某个用户的所有微博信息聚集到一起进行计算。一个可选的方法是使用词袋法将微博信息表示成词语向量,然后直接使用余弦方法等计算其相似度。但这个方法太过简单,不容易达到好的结果,这里介绍一种基于LDA(隐含狄利克雷分布)
这篇关于【推荐架构day4】微博推荐引擎的基本算法:核心细节的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!