微博背后的算法
介绍
微博是很多人使用的社交应用程序。 每天浏览微博的人每天都会进行几个操作:原创、转发、回复、阅读、关注、@等。其中,前四个是针对短博文的,最后一个关注和@是针对博文之间的关系的。用户。 关注某人意味着你成为他的粉丝,他成为你的朋友; @某人是指你想让他看到你的微博信息。
微博被认为是“自媒体”,即普通人分享与自己相关的“新闻”的一种方式。 最近,关于有人利用自媒体影响力赚钱的报道层出不穷。 那么微博上的个人影响力是如何计算的呢? 微博上还有哪些算法像一只看不见的手在管理我们? 我们的每个动作如何影响算法?
直观上,微博实际上是人类社会的一个简单缩影。 微博网络的一些特征或许可以启发我们理解现实社交网络的规律。 得益于社交网络的爆炸式发展,“社交计算”尤其是社交网络分析成为数据挖掘的新宠。 下面我们简单介绍一下微博网络分析的一些算法。 其中一些算法也可能适用于其他社交应用程序。
标签传播
微博拥有庞大的用户数量,不同的人有不同的兴趣。 挖掘每个用户的兴趣将有助于更精准的广告和内容推荐。 为了获取每个用户的兴趣,可以对用户进行标记。 每个标签代表用户的一种兴趣,用户可以有一个或多个标签。 为了得到最终的用户标签,首先做第一个假设:
每个用户的大多数朋友(或粉丝)与该用户具有相同的兴趣。
这就引出了本文介绍的第一个算法,标签传播算法。 在该算法中,每个用户的标签是从他的朋友或粉丝中具有最多标签的一个或多个标签中选择的。 当然,可以考虑好友和粉丝的标签,在整合时可以考虑给好友和粉丝的标签赋予不同的权重。 标签传播算法的流程如下:
1)给部分用户赋予初始标签;
2)对于每个用户,统计其好友和粉丝的标签数量,并为该用户分配一个或多个出现频率最高的标签。
3)重复步骤2,直到用户的标签不再发生明显变化。
用户相似度计算
标签传播算法实现起来比较简单,但是它的缺点是,当做出的假设不符合事实时,比如为了社交礼貌,我们一般会添加自己的亲朋好友进行关注,而这些人就会这样做不一定有和我们一样的标签; 算法的结果会变得很差。 解决方案是通过计算用户之间的相似度来衡量好友或粉丝的标签对用户标签的贡献率。 这就引出了第二个假设:
朋友或粉丝与用户越相似,他们的标签就越有可能是用户的标签。
那么,如何衡量用户之间的相似度呢? 这就需要考虑到用户发布的微博信息,包括转发信息和原创信息。 这里我们需要考虑用户之间的相似度,而不是用户微博之间的相似度。 因此,在实际计算时,会将某个用户的所有微博信息汇总在一起进行计算。 一种可选的方法是使用词袋方法将微博信息表示为词向量,然后直接使用余弦方法计算其相似度。 但这种方法过于简单,不容易达到好的效果。 这里介绍一种基于LDA(隐含狄利克雷分布)的相似度计算方法。
LDA仍然采用词袋方法来表示文本,但在中间增加了主题层,形成“文档-主题-词”的三层概率模型,即将每个文档视为一个概率分布主题的,而主题被查看的是单词的概率分布。 在LDA模型下,生成的文档可以看如下:
1) 对于每个文档:
2)从主题分布中提取主题;
3)从主题的词分布中提取一个词;
4)重复步骤2和3,直到生成文档中的所有单词。
LDA模型参数的估计算法超出了本文的范围。 这里只需要知道,通过LDA就可以得到每个用户微博信息的主题分布。 然后利用余弦法、KL距离等相似度计算方法,得到用户之间主题分布的相似度,作为用户之间的相似度。 然后使用这种相似性来加权标签传播。
时间因素和网络因素
上述算法有什么缺点?
随着时间的变化,用户的兴趣也会发生变化。 在计算用户相似度时,每次都将所有微博信息聚合在一起是不合理的。 为此,您可以选择距离当前时间较近的N条微博。 例如,对于每个用户,选择距离当前时间最近的 50 条微博,并将它们放在一起进行 LDA 训练。 这里的N既不能太大也不能太小。 如果太大,则不容易体现用户兴趣的时间变化。 如果太小,很容易因为用户发微博的随机性而造成兴趣漂移。 为了达到最好的效果,你不能拘泥于固定的N。例如,你可以考虑根据每个用户发微博的时间顺序来调整N值。
到目前为止,算法中还没有考虑微博关系中由回复、转发、@等组成的网络信息。 以转发为例,如果某个好友的微博在该用户的微博中被频繁转发,则该用户与该好友的相似度应该高于其他好友的相似度。 这可以看作假设三:
用户转发好友的微博越频繁,则用户与好友的兴趣相似度越大。
同理可得假设四:
用户微博中@某用户的频率越高,则该用户与该好友的兴趣相似度越大。
这为计算相似性提供了额外的因素。 有很多方法可以在原有的相似度计算方法上添加新的因素。 例如,您可以考虑将转发频率量化为一个值,并将其作为权重添加到相似度度量中。
社区发现
微博社区是指微博中关系密切的一群人。 社区内的人们相互关系密切,而社区之间的关系则相对稀疏。 这里的密切关系有两层含义。 首先是社区内人们的利益是相似的; 第二是社区内人与人之间的关系必须密切。 例如,要求社区内的两个用户不能有第二关联度以上,则第二关联度是朋友的朋友。
上面已经描述了兴趣相似度,需要利用用户之间的关注关系来计算关系相似度。 将用户的关注关系视为一条单向链,所有微博用户之间的关系可以表示为一张巨大的有向图。 可以简单地考虑用户之间的关系相似度,比如使用用户之间最短路径的倒数。 然而,这种测量方法并不准确。 我们知道微博粉丝链接,在现实世界中,存在六度理论。 在微博网络和其他社交网络中,关系往往更加密切。 因此,这种简单的关系相似度最多只能有六个离散值,这显然不够准确。
为了获得更好的结果,不仅使用最短路径作为显式度量,还考虑一些隐式度量。 这里我们首先给出两个假设,即假设五和假设六:
两个用户共同的朋友越多,两个朋友之间的关系相似度就越高。
两个用户共同的粉丝越多,两个朋友之间的关系相似度就越高。
这里我们可以借鉴Jaccard相似度的计算方法,将这两个假设的定量函数表示为交集大小与并集大小的商。 以假设5为例,其定量指标也称为同向相似度。 量化时,将两个用户的共同好友数除以两个用户的所有好友数。 假设六的定量指标称为同向相似度,计算方法与同向相似度类似。 从某种意义上说,这两种相似度不仅是关系度量,也在一定程度上度量了用户之间兴趣的相似度。 直观上,两个用户一起关注的朋友越多,他们的兴趣就越多。 相似度也更大。 这两类相似度还有一个专业名称,就是基于结构场景的相似度计算。
得到最短路径相似度、同向相似度、同向相似度后,可以利用加权函数将它们融合,得到最终的相似度。 之后可以利用K-Means、DBSCAN等一些聚类算法进行聚类操作,得到最终的社区聚类。 相似性加权标签传播算法也可用于将具有相同标签的人视为社区。
影响力计算
在社区发现中,利用微博中的关系网络可以提高相似度计算的准确性。 但关系网络能做的事情还有很多,影响力计算就是其中比较重要的应用之一。
说到影响力的计算,这里借用了网页排名中使用的算法。 网页排名中最著名的算法无疑是PageRank。 该算法由谷歌创始人拉里·佩奇和谢尔盖·布林发明,并随着谷歌商业上的成功而闻名。 该算法根据网页之间的链接来确定网页的排名。 其核心是这样的假设:高质量的网页必须指向高质量的网页。
根据PageRank的思想,我们可以得到对微博影响力的假设,称为假设七:
高影响力用户关注的用户也一定是高影响力的。
将用户视为PageRank中的网页,将关注关系视为网页中的链接关系。 因此,根据PageRank的算法流程可以得到微博注意力网络的影响力计算算法:
1)给予所有用户相同的影响力权重;
2)根据每个用户关注的人数平均分配每个用户的影响力权重;
3)对于每个用户来说,他的影响力等于其粉丝赋予他的权重之和;
4)迭代步骤2和3,直到权重不再发生显着变化。
在网页排名中,基于网络关系的算法包括HITS、HillTop算法等,这些算法也可以在影响力计算中参考。
上述算法有什么缺点?
如果仅仅基于关系网络,很容易造成拥有大量粉丝的人具有很高的影响力。 这会导致一些用户购买一些僵尸粉丝来获得高影响力。 这样的算法显然无法应对实际情况,因为还有太多的信息没有被利用。
用户的影响力除了与微博人脉关系外,还与用户的个人属性密切相关,例如用户的活跃度、微博帖子的质量等。用户的活跃度可以通过微博发帖频率来衡量,微博的质量可以通过转发和回复的数量来衡量。 通过测量这些值并将上述算法的结果相加,可以得到更准确的影响结果。
当然,你也可以这样想。 用户之间的回复关系、转发关系、@关系都可以形成一个网络。 他们也有相应的假设,分别是假设8、假设9、假设10:
用户的影响力越高,他们回复的微博的影响力就越高,从而使得微博主的影响力也越高。
用户影响力越高,转发的微博影响力就越高,从而增加了微博原作者的影响力。
影响力较高的用户倾向于在微博中@影响力用户。
这样就又得到了三个网络:转发网络、回复网络、@网络。 借鉴PageRank算法,我们可以得到另外三个影响力结果。 将它们与关系网络的影响结果融合,得到最终的影响结果。 这里的融合可以简单地认为是结果的加权和,复杂的融合方法超出了本文的范围。
主题因素和领域因素
现在您已经有了计算影响力的方法,您可以做什么?
您可以对当前热点话题进行影响力分析,了解谁已成为微博当前热点话题的意见领袖。 具体方法是找到与当前热点话题相关的微文章,然后找到参与当前热点话题的用户。 如何找到与当前热点话题相关的微文章? 不用说,带有主题标签的微文本。 对于没有主题标签的微文本,可以使用上面介绍的LDA算法。 可以找到用户所有微文中的主题分布,也可以针对一篇微博找到该用户的主题分布。 话题分布。 一般来说,由于微博的字数限制在140字以内,且篇幅较短,所以一篇微博不会包含太多的主题。 可以将微帖子的主题分布中概率最高的主题作为微帖子的主题。 。
找到与主题对应的微文和用户后,运行影响力计算算法,得到该主题中最具影响力的用户。 这也是舆情监测、社会热点监测的一个方面。
对于标签传播算法得到的结果,对同一标签下的用户运行影响力计算算法,可以得到该标签下的影响力排名,即该领域的影响力排名。 比如,李开复可能不是所有领域影响力最高的,但在IT领域,他的影响力绝对是最好的之一。
垃圾邮件用户识别
在影响力计算中微博粉丝链接,提到要避免僵尸用户对影响力计算的干扰。 在算法中,如果在计算影响力时能够识别并排除此类用户,不仅可以提高效果,还可以减少计算量。
与影响力计算类似,垃圾邮件用户的识别必须同时考虑用户属性和链接关系。
对于垃圾用户来说,有一些与普通用户不同的统计特征。 例如以下几点:
Ø 垃圾邮件用户发布的推文一般具有一定的时间规律性,可以使用熵值来衡量。 熵是随机性的度量。 随机性越大,熵值越小。 具体方法是按一定粒度进行时间片统计,得到每个时间片内博文的概率,然后根据概率计算熵值。 熵值越大,说明用户的发帖时间越规律,越有可能是垃圾用户。
Ø 部分垃圾用户在微博帖子中容易恶意@他人,因此部分垃圾用户微博中@的比例高于普通用户。
Ø 一些垃圾用户为了推销广告,在微信中添加大量网址。 可以通过微文本中URL的比例来衡量。 还有一些用户,为了欺骗网址点击,微文中的内容与网址对应界面的内容不一致。 这种情况下,就需要判断微文内容与URL的一致性。 一种简单的方法可以是用词袋法来表示微文本和URL对应的接口。 转化为词向量,检查该URL对应网页中微文本中的词出现的频率。
Ø 对于推广广告的用户,还可以对其微文本进行文本分类,以确定其微文本是否为广告。 如果用户的微文本中有相当一部分是广告,则该用户可能是垃圾邮件用户。
Ø 垃圾邮件用户一般都是随机关注用户,因此其粉丝数与好友数的比例会与正常用户有所不同。 而且,普通用户通常通过好友关系添加好友,这样就会形成如下的三角形。 例如,如果A看到他的朋友B关注C,那么如果A也关注C,则A关注B和C,B关注C。三角形。 一般来说,由于垃圾邮件用户注意力的随机性,其注意力三角形的比例与正常用户不同。
当然,垃圾用户和普通用户的区别还不止这些,本文就不一一列举了。 垃圾邮件用户的识别本质上是一个二元分类问题。 获得这些属性后,可以将这些信息输入到机器学习分类模型中,例如逻辑回归(LR)、决策树、朴素贝叶斯等,就可以对它们进行分类。
当然,链接信息还没有被使用。 一般来说,垃圾邮件用户会关注正常用户,而正常用户不会关注垃圾邮件用户。 这是假设11:
发表评论