作者:陈功
1.起源
朋友圈广告项目于2015年1月对外发布,我们第一个非商业广告是龙哥想出来的创意,大家应该都有印象,为我们的“与众不同”奠定了基调,也为后面的商业广告预热了气氛。
第一批投放商业广告有三个,分别是宝马,可乐,Vivo手机。在发布当天便引起了广大网友的热烈讨论,不少网友以“你刷到了哪一条”进行调侃,甚至有网友将三则广告集合在一起评论:“开宝马,喝可乐,用vivo才是人生赢家”,“看到宝马广告的是土豪,看到vivo的是中产,看到可乐的是屌丝,啥都没有看到的,很抱歉,你已经被抛弃了”……
当时很多人问我广告系统到底是什么样的?是不是整个系统只是几行代码随机投放一个广告给用户就好?下面我将大致介绍一下朋友圈广告系统的架构,研发中遇到的问题,以及联合团队小伙伴们做出的一些优化。
2.系统总览
这是朋友圈广告后台系统的主要模块图,下面将挑选部分展开分析。
3.社交计算
朋友圈广告与传统广告最大的不同就在于引入了社交元素,而如何将社交元素与广告选择结合起来,是我们要思考的问题。
量化指标
要解决问题,首先就得有一个指标去衡量好坏。前一段时间,尼尔森对Facebook的Feeds广告进行了用户调研,发现当用户看到一个有好友互动的广告之后,对广告品牌的记忆率和认知度有68%的提升。其实这也是一个很自然的感觉,那么就首先定一个与之相关指标:扩散度。
系统实现
首先,要注意到朋友圈广告的生命周期都是短的,所以如果采用离线数据计算再反推到在线系统之上的方案,就会使得整个投放阶段效果很差。其次,广告系统对延时要求非常高,如果每次直接拉取每个好友的实际评论情况,也不切实际。因此,最终选择了用户互动信息实时写入到每个好友身上。
这里会遇到2个工程上的问题:
微信的用户好友数据都是分布存储在不同的IDC上的,如何实时将各个IDC间数据打通。
有的微信用户可能有几千个好友,如果一个个写,就算是扔到异步队列也效率太低了。
其他因素
只是看用户好友的评论与点赞次数,这个就足够了吗?显然是不行,下面列出3个主要要考虑的要素:
用户之间的亲密度
好友的权威影响力
评论的正面影响这其中涉及到数据挖掘,自然语言处理的应用,以及如何与在线系统打通,鉴于篇幅,后面有机会再深入展开。
4.广告质量预估
朋友圈广告的展现形式,决定它有很多关注点,并不像传统广告只关注点击那一个动作。下面将我们要考虑的因素列出来,这是一个多目标预测问题,
这么多目标,传统常见的多目标预测方法可能是训练出多个模型,但是这样在线系统使用时候就面临一个时耗的问题。所以我们的经验是根据训练数据累积预测不同行为,离线模型可以直接训练出综合的质量因子。使用神经网络和多元线性回归融合。
那么在预测时候,需要考虑哪些因素呢?下面给出一个Features的大类:
5.速度控制
这个也是朋友圈广告与传统效果广告不同的地方。传统广告,当一个用户看到之后,90%以上的用户在一个小时之内就会点击(公众号广告为例),并且不会延迟太久。