公众号好久没更新了,那天霍老板文章的一句话触动了我,上面写着:“在过去两年间,我是看到了很多人脑袋一热就开了个微信号,一开始写得真不错,很用心,每天都更新。但是慢慢地,频率越来越低,变成了月更,季更,甚至绝迹”。自惭形秽之时,我也决定还是继续把这个公众号继续写下去。作为“绝迹”后的第一篇,我想写一篇我并不擅长,但是我的合作者王婷非常专业擅长的方向抛砖引玉:社会网络分析。
互联网,尤其是Web
2.0
在过去的十年飞速发展,其中社交网络作为
Web2.0
的重要组成部分极大的拉近了人们之间的举例,产生了新的合作和沟通方式,也变更了传统通过传统媒介的信息传播方式。在传统时代,传统的媒体通过单向传播由大
V
发声,将信息从单一的生产者传递给广泛的消费者。而社会网络中,一个用户既是消费者也是生产者,这也就是我们口中的
UGC(user generated content)
,在传播效率上也发生了翻天覆地的变化,据说在
Twiiter
上的传播速度已经大于了地震波的速度;此外在过去,每个人能建立起的社交关系非常有限,并且极大的受着空间的限制,大多社交关系的产生都是由于用户位于同一区域,例如同一公司,同一学校等等,基于兴趣的社交关系几乎不存在,而社交网络对社交关系产生了极大的影响。所以说社会网络真正的改善了人们的生活,这也是我痴迷于互联网的最大原因。
但是社会网络在过去的十年时间内一直都是以某种产品形态存在,社交网络分析作为数据应用的某一方向,往往被人认为不接地气,并无卵用。例如有一篇很经典的
Paper
大概是分析
Twitter
到底是一个社交网络还是一个网络媒体,切不谈产生的结论如何,但是这很难产生真正的商业价值;例如有学者专门研究不同社区的小世界理论
/
效应,其实也并无真正的生产应用。那么在这个系列文章中
(
不知道何时会太监
)
,我更希望和王婷一起来从实用性的角度来阐述社会网络分析的工业界效用。
社会网络其实是一张大的图结构,而图就是由节点和边之间组成,落实到具体的社会网络分析,节点就是用户,而边就是将他们联系到一起的因子,例如互相关注,例如共同兴趣等等。那么我们就先从节点本身说起。评价一个节点、一个用户、一个人有很多指标,其中最重要的指标就是节点的“重要性”。也就是一个人的重要性。如何说一个人重要呢?学术界有很多关于节点重要性的计算方式,但是在这里,我们更重要的是把这些公式与实际的生产环境联系起来。
计算方式
1
:节点的度数
这是最常用的计算方式,原因是因为这种计算方式最简单,也最泛化。具体的计算方式就是看一个点的度数,也就是和一个点连接的边数。我们落实到实际的物理意义上,就是将这个人与多少人“相关联”。
其实这一指标有很多的应用价值,但是也有很多的误区。我举个简单的例子,我们希望在微博上去找大
V
投放广告,那么自然想到最简单的办法就是找到关注数最多的用户去做广告投放。
再做一个稍微复杂的扩展,如果我们希望买一篇软文来推广我们的产品,于是我们需要选一个渠道来做我们的广告投放,但是我们知道网站和网站之间经常会有着“转载”,那么我们就需要把文章和文章之间建立起一个转载的关联,从而希望我们的文章能够最多地覆盖到更广泛的渠道。最简单的办法自然也是找那种最容易被转载的渠道。
再说一个具体的推荐算法的例子。当一个新用户刚刚进入到某一社交网络中时,我们需要为其推荐好友。那么最简单的推荐方式就是推荐被关注数最多的用户,原因无外乎有二:
1.
被关注数越多说明质量越高。
2.
被关注数越多说明兴趣越能被大众所接受于是越有可能为今后的兴趣迁移做准备。
(
当然,这也是一个很多人都忽略的坑。
)
说到度数需要再稍微提一点,我们知道所有的社会网络,无论是新闻、条目还是用户的关注数,都是呈幂率分布的,所以我们在做社会分析的时候要非常注意到头部、中部和尾部的独立分析,并且我们实际应用时可以利用这一实际规律节省大部分的计算资源,提高计算效率。例如我们可以通过删除尾部数据减少目标数,同时在计算相似度时可以将头尾分开,从而避免数据倾斜的问题。
但是所有的这种方式其实都有一种致命的问题,我们都忽略了二次传播以及多次传播的重要性。
计算方式
2
:
PageRank
、
PeopleRank
PageRank
相信每个人都非常清楚,在之前我的搭档也写过一篇关于
PageRank
的文章,Page
Rank
的最大好处就是通过迭代计算充分地考虑了多次传播的因素。
这一点对于做算法的同学听上去很简单,但是其实有着特别有趣的商业化应用。我们知道,大部分的大
V
的广告基本都是根据粉丝数来计费的,那么如果你的预算不足以请动
Angelababy
,这个时候该怎么办呢?P
agerank
就是其中的算法之一,虽然说某位用户的粉丝数很少,但是她可能是某电影学院的学生,可能会是某某明星的同学,那么其实会有很多的明星指向她,所以其实她的微博也可能会在一定概率上被其他的明星所转播。这个时候算法就派上用场了,一般情况下我们可以对
PageRank
做一个略微的改进,在
PageRank
中,两点之间的权重取决于“出点”的度数,那么这里我们需要把度数换算成某明星可能转发该文章的概率,这个概率会取决于文章内容与明星标签的关联度,取决于这个明星关注的人数
(
即看到该文章的微博
)
等等。这就是用算法产生价值的很重要的一个点。
计算方式
3
:最短距离
&
集群中心点
在社会分析领域,有个评估节点的指标叫做
betweenness
,其实就是评估这个点到其他点的距离,他的核心应用在于,如果我从这个点开始传播,有多大的概率可以到达社区中所有的人。有些算法基础的都会知道这个计算量几乎是无法承受的,但是其实这也有很好的应用场景。
集群中心点这个词是我自己定义的,可能不恰当,其实就是整个集群中的
Hub
点,用图论语言描述,就是如果删除该节点,会将整个图变成若干个独立的子图。用平常的语言描述,就是说这个人可以将若干个不同群体的人联系起来,最简单的现实中的例子就是猎头。
那么他们到底有什么实际的作用呢?
之前罗辑思维中讲过一个案例,大意是说中国传媒有个女学生希望罗胖帮他做宣传,罗胖出了个难题说你要联系到
100
个人找到我,我就答应你的要求,最后这个女孩果然找到了
100
个不同的人找到了罗胖,成为了一个非常经典的案例。同理很简单,继续举上面投微博广告的例子,我没有足够的预算又希望能够让某个明星帮我转播微博,我能做什么事情呢?假设说我认为微博的三度衰减已经趋近于
0
,那么我需要找到的是关注我的,并且在三度以内可达该明星的社交关系,如果我找到所有这样的关系,相当于该明星有非常大的概率能够看到这条微博。这个例子可能还有些复杂,那么举个简单一些的。如果我希望投放某个广告,性价比最高的方式是什么?找到所有我希望触达的人,即目标用户
(
例如所有喜欢游泳的用户
)
,然后找到所以可以投广告方
(
例如某些明星,媒体等
)
,然后计算广告方和目标用户之间的平均最短距离,作为这些广告方的
Betweenness
,再通过加权方式与他本身的价钱相结合,就可以计算出这个用户的性价比。
那么对于集群中心点的应用就更加简单了,我在算法
1
中提到过,对于新用户,我们为他推荐入度最大的用户、推荐好评最多的文章、推荐红心最多的歌曲是最稳妥的方法,但是这都没有考虑到未来用户的兴趣迁移,也就是没有最大化用户的兴趣图谱。那么作为
Hub
点,最重要的特征是他连接着多个不同的兴趣群体,同时被多个兴趣群体所接受,于是我就可以通过这个
Hub
用户左右摇摆
(
即多叉树结构
)
,从而发散出该用户的最完整的兴趣图谱。
写在最后:
在第一篇文章中,我概述了针对社会网络分析部分中针对节点重要性的一些工业化应用,社会网络分析是个非常广泛的学科,其中包括关系分析、反作弊、社群发现、媒体挖掘等等,但是如何把这些学术上的研究转换为商业应用却是太多公司、太多算法工程师都忽略的地方,也希望接下来我们可以逐渐探讨,也希望我的搭档王婷博士可以有着更加深入的研究。