微博热搜算法

原文地址:微博热搜算法_AI算法攻城狮的博客-CSDN博客_微博算法

新浪微博被人们认为是“自媒体”,即普通大众分享与本身相关的“新闻”的途径。最近,有些人使用自己在自媒体上的影响力而盈利的报道屡见不鲜。

直观上看,新浪微博其实是人类社会的一个简单的缩影,新浪微博网络的一些特点,也许可以启发我们得到真实的社会网络上的规律。得益于社交网络的爆发式发展,“社会计算”尤其是社交网络分析成为数据挖掘的新宠儿。下面我们就针对新浪微博网络分析的一些微博算法进行简单的介绍,其中的有些微博算法对于其他的社交应用可能也适用。

标签传播

新浪微博用户粉丝量浩大,不同的人有不同的兴趣。挖掘每个用户粉丝的兴趣有助于更加精准的广告投放、内容推荐。为了得到每个用户粉丝的兴趣,可以为用户粉丝打上标签,每个标签代表用户粉丝的一个兴趣,用户粉丝可以拥有一个或多个标签。为了得到最终的用户粉丝标签,先做第一个假设:

每个用户粉丝的好友(或粉丝)中与该用户粉丝具有相同兴趣的人占多数。

这就引出了本文介绍的第一个微博算法,即标签传播微博算法。在这个微博算法中,每个用户粉丝的标签取其好友或粉丝中标签最多的一个或多个。当然,可以将好友和粉丝的标签都考虑进来,整合的时候可以考虑赋予好友的标签和粉丝的标签不同的权重。标签传播微博算法的过程如下:

1)对一部分用户粉丝给出初始标签;

2)对每一个用户粉丝,统计其好友和粉丝的标签数目,赋予该用户粉丝出现次数最多的一个或者多个标签。

3)循环进行第2步,直到用户粉丝的标签不再发生大的变化为止。

用户粉丝相似度计算

标签传播微博算法实现起来比较简单,其缺点在于当所做的假设不符合事实时,比如为了社交上的礼貌,我们一般会把自己的亲友添加关注,这些人不一定和我们拥有同样的标签;该微博算法的结果就会变得很差。解决的办法就是通过计算用户粉丝之间的相似度来衡量好友或粉丝的标签对用户粉丝标签的贡献率。因而得到第二个假设:

与用户粉丝越相似的好友或粉丝,其标签越可能是用户粉丝的标签。

那么,如何衡量用户粉丝之间的相似度呢?这就需要考虑到用户粉丝发表的新浪微博信息了,包括转发的和原创的。这里是要考虑用户粉丝之间的相似度而不是用户粉丝新浪微博之间的相似度,因而在实际计算时,将某个用户粉丝的所有新浪微博信息聚集到一起进行计算。一个可选的方法是使用词袋法将新浪微博信息表示成词语向量,然后直接使用余弦方法等计算其相似度。但这个方法太过简单,不容易达到好的结果,这里介绍一种基于LDA(隐含狄利克雷分布)的相似度计算方法。

LDA仍然使用词袋法表示文本,但是在中间添加了一个主题层,形成了“文档-主题-词语”三层概率模型,即每篇文档看成是主题的一种概率分布,主题又被看成是单词的概率分布。在LDA模型下,文档可以被看成按照如下方式生成:

1)对于每篇文档:

2)从主题分布中抽取一个主题;

3)从该主题的词语分布中抽取一个词语;

4)重复第2步和第3步,直到该文档的所有词语都生成。

LDA模型参数的估计微博算法不在本文的讨论范围之内。这里只需要知道,通过LDA可以得到每个用户粉丝的新浪微博信息的主题分布。然后使用余弦方法、KL距离等计算相似度的方法来得到用户粉丝间主题分布的相似度,以之作为用户粉丝之间的相似度。而后使用该相似度对标签传播进行加权。

时间因素和网络因素

上述的微博算法还有什么缺点呢?

随着时间的变化,用户粉丝的兴趣是会变化的,计算用户粉丝相似度的时候每次都把所有新浪微博信息都聚合在一起不太合理。对此,可以通过选取距离当前时间较近的N条新浪微博。比如,对每个用户粉丝,选取距离当前时间最近的50条新浪微博聚在一起放到LDA中训练。此处的N既不能太大也不能太小。太大则不容易反映用户粉丝兴趣的时间变化,太小则由于用户粉丝发表新浪微博的随机性容易引起兴趣的漂移。为了使效果最好,可以不拘泥于一个固定的N,比如可以考虑对每个用户粉丝按照其发表新浪微博的时间序列做N值的自适应。

至此,在微博算法中还没有考虑新浪微博关系中由回复、转发、@等所构成的网络信息。以转发为例,如果在用户粉丝的新浪微博中频繁的转发某个好友的新浪微博,那么用户粉丝和该好友的相似度相比其他好友来说应该会更高。这里可以看做是假设三:

用户粉丝转发某好友的新浪微博的频率越高,用户粉丝与该好友的兴趣相似度越大。

相似的,可以得到假设四:

用户粉丝新浪微博中@某用户粉丝的频率越高,用户粉丝与该好友的兴趣相似度越大。

由此就得到了计算相似度的另外的因素。有很多方法可以添加一个新的因素到原有的相似度计算方法中,比如可以考虑将转发频率量化为值,作为权重添加到相似度的衡量中去。

社区发现

新浪微博社区是指在新浪微博中关系紧密的人组成的团体,社区内部的人之间联系紧密,社区之间的联系则比较稀疏。这里所指的关系紧密有两层含义,第一是社区内部的人之间的兴趣相似度大;第二是指社区内部的人之间的关系要近,比如要求社区内部的两个用户粉丝不能超过二度关联,二度关联即好友的好友。

兴趣相似度在上文已有叙述,关系相似度则需要利用用户粉丝之间的关注关系来进行计算。以用户粉丝的关注关系为单向链,可以将所有的新浪微博用户粉丝之间的关系表示为一个巨大的有向图。用户粉丝之间的关系相似度可以简单的考虑,比如使用用户粉丝间的最短路径的倒数。但是这种方法衡量的不精确,我们知道,在现实世界中,存在着六度理论,在新浪微博网络及其他社交网络中,往往关系会更加紧密。因而这种简单的关系相似度只能有至多六个离散值,显然不够精确

为了达到更好的效果,这里不仅以最短路径作为显式量度,还要考虑一些隐式的量度。这里先给出两个假设,分别为假设五和假设六:

两个用户粉丝的共同粉丝越多,这两个好友的关系相似度越高。

这里可以借鉴Jaccard相似度的计算方式,将这两种假设的量化函数表示为交集的大小与并集的大小之商。以假设五为例,其量化指标又被称为共指向性相似度,量化时使用两个用户粉丝共同好友的数目除以两个用户粉丝所有好友的数目。假设六的量化指标被称为共被指向性相似度,计算方式与共指向性相似度类似。从意义上讲,这两种相似度不仅仅是关系上的度量,在一定程度上也衡量了用户粉丝之间的兴趣相似程度,直观上看,两个用户粉丝共同关注的好友越多,他们的兴趣相似程度也越大。这两种相似度还有一个专业的名字,是基于结构情景的相似度计算。

得到了最短路径相似度、共指向性相似度、共被指向性相似度后,可以采用一种加权函数将它们融合起来,得到最后的相似度。之后,可以采用一些聚类微博算法如K-Means、DBSCAN等进行聚类操作,得到最后的社区簇。也可以采用相似度加权的标签传播微博算法,把具有相同标签的人作为一个社区。

影响力计算

在社区发现中,使用新浪微博中的关系网络可以提高相似度计算的精确度。但关系网络能做的事情还有很多,影响力计算便是其中比较重要的应用。

说到影响力的计算,这里借鉴了网页排名中的微博算法。网页排名中广为人知的微博算法当属PageRank了,该微博算法由google创始人拉里·佩奇和谢尔盖·布林发明,随着google在商业上的成功而声名鹊起。该微博算法根据网页之间的链接来确定网页的排名,其核心在于一个假设,质量高的网页所指向的网页的质量必定也高。

根据PageRank的思想,可以得到新浪微博上影响力的假设,称之为假设七:

影响力高的用户粉丝关注的用户粉丝的影响力必定也高。

将用户粉丝看成是PageRank中的网页,将关注关系看做是网页中的链接关系。从而,可以根据PageRank的微博算法流程得到在新浪微博关注网络上的影响力计算微博算法:

1)赋予所有用户粉丝相同的影响力权重;

2)将每个用户粉丝的影响力权重按照其关注的人数等量分配;

3)对每个用户粉丝来说,其影响力等于其粉丝分配给他的权重之和;

4)第2步和第3步迭代,直到权重不再发生大的变化为止。

在网页排名中,基于网络关系的微博算法还有HITS、HillTop微博算法等,这些微博算法也可以借鉴到影响力计算中来

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值