你是如何被微信广告选中的?微信广告引擎与社交传播算法实践
传统的影响力模型有许多种,这里我列了最为常见的独立级联模型。它的原理是这样的,一个用户每个好友都对自己有一个影响力,这个影响力可以用前面我们提到的方法计算出来。初始时刻,已经有一些人是被激活的,这些人就是种子用户,具体的选择我后面会说到。然后,一个用户的每个已经被激活的好友,根据他们之前的影响力去计算一个激活概率,轮流去激活该用户。这样子迭代下去直到每轮没有新激活用户位置。 传统独立级联模型直接应用会存在图中说的一些问题,所以改为上图中下面的形式(示意),但这样直接做还会存在工程上的问题。主要在于广告系统的时延要求是十分低的,假如用户有 5000 个好友,分布在几百台存储机器上,要在 20ms 内读完,这几乎是不可能完成的事情。 那么这种读扩散的方式不行,我们就换一个思考,采用写扩散的方式。当用户的一个点赞评论数据接收到之后,我们放入消息队列之后,然后社交扩散模块取出,根据关系链,权威度,传播力在内存中计算他对每个好友的影响,然后再告知所有好友这个信息。但是,假如是一一告知,5000 个好友就要 5000 次网络调用,这个开销也是接受不了的。所以,我们会根据路由规则和机器列表,将属于一台机器的用户合并起来写入,最小化网络调用。 完成这些之后,当一个用户来拉取广告时候,只需要一次网络调用,就可以拿到好友对他的影响力了。 注:目前为了引入更多的特征做实时推荐,我们已经将上面架构改为基于图形数据库的形式,架构上更加复杂和巧妙,之后会有文章专门再介绍。 社交传播节奏控制 社交传播节奏控制的核心思想是先传播给优质人群,再让优质人群带动其他人。如下图所示,Ripple 扩散传播系统。 所谓优质人群,在投放初期被定义为种子用户。他们可以通过一些方法进行挖掘:第一,广告主的粉丝,铁杆粉丝用户;第二,广告主最为了解自己的用户,因此根据广告主的需求做出定向挖掘,历史行为用户。正如大家所了解的,InfoQ 粉丝群体庞大,我们之前将粉丝和行业影响力大的人群选择出来进行投放,确定优质人群。与此同时,如果觉得量级不够,我们还可以通过 lookalike 的方法进行用户扩展,在大盘里面找到与之前两步得到的相似用户。 那么投放中如何确定优质人群?我们通过引入一个全局的实时排名队列来分析每个用户与每个广告实时的社交价值,在不同的时段,我们定义优质人群的函数是不同的。 选取优质用户之后,就会在我们的 ripple 扩散传播系统中进行扩散,从种子用户阶段投放,然后逐渐向外扩展,一直到广告预算结束。过程看似简单,但实际投放是一个较为复杂的过程。 首先,影响力是实时动态变化的过程;其次,朋友圈广告是基于用户的拉取,而不是简单的推送,所以无法理想化的扩散。 在这两个背景之后,还需要面临具体如何扩散的问题,比如扩散的比例值如何确定;另外,一般品牌广告主也需要合约保量,在保量需求下完成社交扩散动作,这对系统实时性与算法都有很高要求。下面的图中列举了波纹传播系统的几个组成。 基于社交的排序 能换取别人的关注、评论、点赞的事物都可以称之为社交货币。系统内所引入的变量将它价值化、货币化。将货币化的值放入总的价值排序之中和广告主的初价以及广告主的信息进行排序,广告价值的放大代表着我们对社交传播的重视。 写在最后 当初有很多人问,什么是社交广告?回答普遍都是在社交平台上的广告就是社交广告。开始我也以为就是这样,可是经历了一个一个优秀的案例,以及一波又一波的社会热点,我觉得,那些能让我们抒发情感,聆听好友心声的广告才称得上社交广告。我们也会继续在社交广告上继续做出创新,因为我们的目标是让广告,也可以成为生活的一部分。 作者介绍 陈功,腾讯微信广告引擎逻辑负责人。浙江大学计算机研究生毕业,2011 年加入腾讯微信,负责微信数据计算系统建设,以及微信基础数据的分析与挖掘工作。2014 年加入微信广告项目团队,主要负责广告引擎精选的系统架构与算法策略设计,现任微信广告引擎策略 Team Leader。平时对广告业界动态,大型系统架构,模型算法,都十分感兴趣。 注:相关网站建设技巧阅读请移步到建站教程频道。 (编辑:应用网_丽江站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |