专栏名称: CSDN
CSDN精彩内容每日推荐。我们关注IT产品研发背后的那些人、技术和故事。
目录
相关文章推荐
新浪科技  ·  【李彦宏:#百度2025年初发布新版大模型# ... ·  3 天前  
新浪科技  ·  #华为MateX6开启预订#,你会考虑购买折 ... ·  5 天前  
36氪  ·  新品牌AUDI诞生,新合资时代到来 ·  6 天前  
51好读  ›  专栏  ›  CSDN

微博商业数据挖掘方法

CSDN  · 公众号  · 科技媒体  · 2017-03-27 11:18

正文

作者:康乐,微博商业产品部算法技术专家,中科院博士,曾就职于搜狗,新浪微博。负责过广告和用户反作弊算法,Feed流分发控制算法,商业数据挖掘算法等领域,对相关的算法工作有长期实战经验和系统方法论。 
责编:郭芮,关注大数据领域,寻求报道或投稿请联系[email protected]。 
本文为《程序员》原创文章,未经允许不得转载,更多精彩文章请订阅2017年《程序员》。

本文主要介绍微博商业数据挖掘的体系及方法,但并不注重模型和算法这些细节,而是阐述数据如何贴近、支持和引导业务,如何建立合理的评价体系,以及如何围绕这两点建设数据挖掘架构。

业务及产品

微博广告生态的复杂程度在业界数一数二。由于微博本身的开放性,微博广告客户天生就有如下多样性:

类型

  • 电商类型:投放方式大多比较传统,投放目标主要是注册或购买;

  • App类型:投放目标主要是App下载或者用户唤醒;

  • O2O:投放目标包括电话、到店、销售线索等;

  • 媒体/品牌类:投放目标主要是带粉,扩大影响力和传播范围。

投放方式

不同客户对微博广告产品这项营销工具的理解和应用程度相去甚远,有一部分客户已经能熟练使用不同的自助广告产品,设置不同的创意模板,撰写有针对性的创意来达到不同的营销目的,甚至经常使用时间和空间上的组合营销形式,这些客户通常效果较好,粘性也很强;但也有一部分客户还停留在传统联盟广告的时代,投放方式比较单一,对创意的生成欠缺足够思考,效果也不尽人意。客户梯度共同构成了微博广告生态,最直接的后果就是——优秀的广告与毫无吸引力的广告并存。

定向要求

由于微博的强账号属性以及由此带来的用户画像挖掘方面的潜力,客户对广告定向工具的要求非常精细。主要包括如下几类定向条件:

  • 基础定向:用户的年龄,性别,城市,手机型号等;

  • 兴趣定向:用户感兴趣的实体类目,甚至兴趣关键词;

  • 关系定向:指定大号或竞品的粉丝投放;

  • 状态定向:指定处于某一人生状态的用户,比如车房、婚恋阶段;

  • 情景定向:一类粒度非常细的实时触发类投放,这类需求经常来自于SCRM(社交客户关系管理)之类的业务,譬如客户可以指定投放给跟他的某条微博有互动的所有用户,或是正在首都机场的所有用户。


图1 广告客户对微博广告的细分需求

微博推出了多种计算广告产品来满足多样化需求,并且还在持续迭代和改进。每一种广告产品专门抽象一大类投放需求,有不同的广告模板、计费方式、定向条件、投放平台以及专业人员配备。这是近两年微博商业化顺畅进行的主因。


图2 主要微博广告产品矩阵

商业数据体系

广告投放业务对数据的需求主要是流量细分及描述反馈,因此微博商业数据挖掘体系也是以流量细分,即通常说的以用户画像为核心来建设。周边辅助的数据挖掘模块主要包括:

  • 内容挖掘:微博用户的一切属性都由他们的行为及其客体来描述,而这些用户行为(包括转发、评论、关注、赞、点击短链/视频)和客体(微博、广告主、大号)构成了微博产品的绝大部分,因此内容挖掘一直都是商业数据挖掘的重点工作。

  • 关系挖掘:包括所有用户跟客体对象之间联系方式的挖掘。关系挖掘的难点主要是发现在每一个业务场景下,不同关系的产生对于广告效果的意义及影响。

  • App数据挖掘:微博作为开放平台接入了相当数量的第三方App,用户使用这些App的行为记录能帮助我们获取他们作为自然人的信息,用于判断用户在实际生活中的某些状态。另外,用户的App喜好能够直接帮助App类广告进行投放。

  • LBS数据挖掘:微博的签到数据能帮助判断用户的某些状态,同时也能满足部分客户在投放上的某些需求,比如O2O类的客户会更加关心附近的本地用户。

在长期业务实践中,我们最终将用户画像体系分为如下3个部分:

  • 基础数据:描述用户的一些基本信息,包括年龄、性别、常驻城市、手机型号、活跃度等。大部分信息可以直接获取或简单统计获取,有时需要对数据的准确性加以算法修正;

  • 兴趣数据:主要描述“用户对什么感兴趣”;

  • 情景数据:主要描述“用户是什么人”。


图3 微博商业数据体系

用户数据的计算有一套完整的高复用低耦合的数据模块体系来支撑,最终成形的数据挖掘架构如图4所示。


图4 微博商业数据挖掘架构

评价体系

四层评价

微博商业数据挖掘工作第一大重点是评价体系的建设。据我们了解,这是很多数据挖掘部门忽视的地方。我们建立了一个四层级的评价体系:

1.效果级:挖掘的结果可以直接用线上广告投放效果提升来评价。这是最强的一级评价。

示例:目前为止,只有兴趣挖掘能够使用这一级评价。

2.Ground Truth级:Ground Truth有一个规模足够的数据集来当作标注集和交叉验证的测试集,可以使用监督学习算法来做分类。这个Ground Truth数据集被当作最终可信的评估标准,也用于交叉验证。

示例:用户性别。微博所有用户都有自己填写的性别属性,但并非100%可信。但微博有很多实名认证的用户,这部分用户的性别是可信的,因此我们以这些用户作为标注,来修正那些没有实名认证的用户性别数据。

3.Case级:不具备统计意义的标准数据集,即无法获得标注数据,但对于分类的结果,少部分能够通过人工到微博用户的页面上去判断是否准确。这种情况只能通过规则来挖掘。

示例:常住城市。挖掘用户常住城市只能使用用户的IBS信息及IP地址,其余的特征对这个标签的贡献度都极其有限,因此只能使用规则来判定,然后对规则分类的结果抽样后,人工去用户微博页面上检验。只有大约5%的用户能够通过微博页面(博文、照片等信息)来人工判断他的常住城市。

4.Logic级:当以上三个级别的评价条件都不具备,只能评价逻辑完备性。即挖掘规则逻辑是否是当前情况下最合理的。

示例:差旅状态。用户当前位置不在常驻城市即判定为差旅状态,不做任何验证(但不做任何验证的情况极少,通常Case级和Logic级的评价很难完全分开,通常是偏Case或是偏Logic,总要同时看逻辑完备性和Case检验)。


图5 数据挖掘四层评价


评价体系建设

对于评价有如下原则:

  1. 任何一项数据挖掘工作都必须在开展之前确定具体评价方法,并且让这项工作的相关人员(包括PM)都知晓并认可这种评价方法。

  2. 尽可能把一项数据挖掘工作的评价方法往上一个层级推。

这是评价体系建设的重点,意味着不仅只有算法和模型工作可以不断迭代,评价方法本身也可以迭代。这项工作的重要性可能比模型的研发还要重要,如果大部分工作的评价只能停留在Case级甚至Logic级的话,整个数据挖掘体系很快就会无以为继,变得没有意义,因为这种工作的迭代余地很小,且没有方向。

我们花大量的时间解决Ground Truth数据,方法一般有两种:

  1. 引入第三方数据。这是一项长期进行的重要工作。任何互联网平台在数据上都有自己的长处和短板,微博的短板是缺少足够细分垂直领域的用户数据。因此一直致力于引入各种用户现世数据和垂直领域数据。

  2. 在现有数据的基础上用规则过滤正样本。通过规则找到一个召回率较低但准确率很高的集合作为正样本,就可以把评价推高到Ground Truth级。

除了兴趣标签外,能直接用效果来评价的数据并不多,而且业务层面的假设太多,我们在实践中仅用来参考。例如性别数据,对某些已知的强性别选择的广告行业(例如美妆),可以通过线上效果来间接判定数据准确率,但这种不够直接的方法很少采用,因为中间因素太多,自洽性不强。

在这个评价体系下,数据工程师并不对兴趣标签之外挖掘结果的广告效果负责。如果用户使用了这些定向工具有好的效果,那很好,如果效果不好,数据工程师是不会就这个标签本身来进行效果优化的,因为这根本不是评价方向,这类标签在业务中的位置不处于效果的反馈环上。工程师只对兴趣标签做效果优化。

除兴趣标签之外的数据挖掘流程如图6。


图6 数据挖掘方法流程

兴趣挖掘

兴趣挖掘并没有Ground Truth可以验证,因为兴趣本身就是一个非客观、难以界定的描述。在微博商业体系内,兴趣是如下定义的:

  1. 用户如果对某类别的事物感兴趣:用户在指定广告投放场景里对这类广告的预估转化概率/点击率较高。

  2. 如果不能指定具体广告投放场景,兴趣的意思是:用户对这类内容的历史关注/互动率较高。

在前一种情况下,兴趣标签是一个可预估的最优化问题,是CTR/CVR预估体系的一部分,可以做出不同粒度的兴趣标签来,而且往往不止一套。如果有N种计算广告产品,每种广告产品可以有M种预定义的转化行为,线上的兴趣标签理论上最多可以有N x M套。标签数据的评价方式直接用线上效果评价,可以持续迭代。

在后一种情况下,兴趣标签只是一个解释性问题,在评价体系里处于最底层,实际上无法迭代。但这种兴趣标签的存在是必要的,因为并不是所有的应用场景都是广告投放,而且用特定产品的广告数据训练出的模型会比较偏,但某些场景(比如DMP的流量透视功能)需要一套不直接服务于投放效果、能完整描述用户群体的标签。因此我们根据关注和互动关系用简单统计的方法生成一版通用的兴趣标签。它只要求可解释性,所以规则越简单越好。一般禁止使用层次分析法,因为它对任何一层的评价都没有帮助。

内容兴趣


图7 微博内容兴趣标签计算


内容兴趣标签提供给除应用家之外的广告产品做定向工具。内容兴趣的做法如下:

  1. 划定一个微博上提供内容的大号列表,这个列表中用户贡献的原创内容能覆盖绝大多数被消费(阅读、互动)的原创内容。列表包括所有广告主。我们称这个列表为广义客户列表。

  2. 挖掘这些大号所提供内容的领域关键词,主要是相关性计算。

  3. 对这些大号进行聚类,然后人工整理聚类的结果,形成一个二级内容分类树。这个分类及领域关键词被称为大号的能力标签。微博上不生产的内容(比如工农业行业信息)对微博广告产品来说是无意义的,因此没有采用人工预先给出分类体系的方法。

  4. 用机器学习模型(FM或LR)来预估每个广告产品中,用户对每一类广告产生目标行为的概率,如果高于某个阈值,即看做该用户对该类别是有兴趣的。这是用于具体广告产品定向的做法。

  5. 在广告运营工作中我们经常针对某一个广告主做专属定向包,方法类似,只是特征是在用户-广告主这个粒度的。

  6. 如果需要不依赖具体广告产品的通用数据,直接统计每个用户对大号的关注关系,如果用户对某一类别的关注高于平均值,即看做对该类别是有兴趣的。

App兴趣

App兴趣标签是为应用家产品专门建立的。这项工作能够比较完整地表现微博商业数据挖掘中解决问题的思路。

App兴趣标签是应用家CVR预估体系的一部分。CVR预估体系被建设成一个漏斗式的,特征的粒度从粗到细。App兴趣标签是用户-App类别粒度的,模型中较多使用交叉特征,这一层的计算结果被包装成定向工具给客户使用;中间层的粒度是用户-App,作为一个隐式定向存在;最后一层则是线上的CVR预估模型,特征粒度是用户-广告-上下文,计算结果直接参与Rank。

在做CVR预估之前有两个数据问题。首先,应用家的功能支持广告客户指定效果目标行为:下载(推动没有安装这个App的用户下载)和唤醒(推动安装了这个App的用户重新进入该App成为当天日活)。因此至少需要知道每个用户是否安装了这些App,才能比较精准地投放。

解决这个问题的方法是:

  1. 以微博已有的数据为基础,引入第三方数据,获取尽可能多的用户安装App列表。

  2. 以1作为标注数据,预估那些1没有覆盖到的用户App安装情况。

另一个问题是,要做CVR预估就必须获取下载数据作为训练标注。但微博无法跟踪从广告点击跳转出去的用户后续行为(尤其是iOS环境下)。

解决的方法是:

  1. 跟第三方监控公司合作,获取部分客户App后续下载数据。

  2. 以1作为标注数据,预估那些1没有覆盖到的客户App后续下载情况。

这两个问题的解决方法如出一辙,都是先去找数据,找不到的部分再预估。预估的结果可以结合交叉验证,直接线上评价。

应用家数据挖掘体系如图8。


图8 App兴趣标签计算

情景挖掘

情景挖掘来源于一系列客户需求。在业务沟通中,经常接到客户类似如下的需求:

  1. 经常出入高级酒店和机场的用户;

  2. 宝马车主;

  3. 大学生;

  4. 在微博参与了某个指定话题(比如“#Angelababy大婚#”)的用户。

这些需求看似零乱,实际上都属于不同于“兴趣”的另一类问题,它需要知道“用户是什么人”。因此我们建设了情景挖掘体系来整合响应这类需求的工作。


图9 情景挖掘体系


情景引擎

最早建立情景引擎是为了满足某些DSP给大客户做SCRM的需求。客户需要运营社交网络上的粉丝和潜在客户,需要一些工具把消息分发给这些用户,比如:

  1. 把广告投放给微博里提及了“宝马”的用户;

  2. 发一条活动微博,然后把广告投放给跟这条微博互动的用户;

  3. 把广告投放给刚刚关注奔驰的用户。

针对这类需求我们实现了一个情景引擎,接入微博上所有主要用户行为数据,按行为类别(谓语行为)分类存储,抽取出其中的对象(宾语个体),一个情景就定义为谓语+宾语,经过一系列中间计算后,形成“用户-情景列表”索引格式的数据,实时更新到线上缓存供定向服务使用。

情景引擎用Storm接入实时数据,计算后分钟级别更新到线上缓存,大部分是工程问题。里面涉及到算法的地方主要有两处:

  1. 数据清洗。接入的线上数据有垃圾流量,比如在话题区刷广告的。需要建一个反垃圾模块。

  2. 关系扩展。计算出来的情景-用户列表通常会有极强的长尾分布,即头部的情景占据海量用户,但我们在广告投放时希望大部分情景都能有相当数量的覆盖用户。因此会丢弃掉大部分长尾数据,对分布的中间部分做基于相似性或相关性的算法扩充。

中长期情景挖掘

基于情景引擎长期积累的数据,我们在上层建立了中长期情景标签体系(对外称为人生状态标签)。

人生状态标签体系一共有20多个标签,涵盖用户的求学、旅行、车房、职业、婚恋、育儿等状态。这些标签都是各自独立挖掘,挖掘的算法完全由其评价方法而定,并没有通用方法,而评价方法完全取决于源数据情况。下面给出几个例子:

大学生标签:

根据发微博的内容过滤出一个准确率比较高的大学生用户集合(大学生在某些场景下发的微博会带有区分度非常高的关键词)。然后对16-25岁之间的用户建模,特征主要包括关注特征、App使用特征,IBS特征。用过滤的用户集合为正样本,随机取一个负样本集合进行训练。对所有16-25岁之间但不在样本集合中的用户进行预测,取一个预定的数量。

差旅标签:

当前用户的位置与用户常驻城市不符,即看做用户在差旅状态。

豪车车主:

根据用户行业/头衔、影响力、社交关系等信息制定过滤策略。到用户微博页上人工验证。

用预估的方法会有一个问题,即很难保证做出来的正样本训练集是无偏的。一般来说,能够满足某种过滤条件的数据总是有偏的,通常更偏向于更好更活跃的用户。但在后期评估中发现,只要注意在模型里尽量不使用规则里的那些特征,关系并不大。另外,训练集偏向更好的用户也不算大问题,因为计算结果本来就要求优先保证更好的用户,那些不活跃的、特征缺失严重的用户对业务的影响相对不重要一些。

人生状态标签跟兴趣标签看上去有类似的地方,但从评价方式和应用出发点来看完全不同。例如,“用户对婴儿用品感兴趣”跟“用户是婴儿父母”是两回事。从广告投放的角度出发,我们从来不把这两者混为一谈,我们对前者的效果负责,但不对后者的效果负责。

另外,我们认为人生状态标签这样的挖掘工作并非未来的方向,而是代表着一种传统广告业的思路。过多地依赖这种人能阅读和理解的,但却高度离散化的因素并非计算广告的思维方式。但这不意味着这样的工作没有意义,在新媒体广告领域,它在相当长的时期内都是必须存在的。

小结

在长期实践中,我们总结出数据挖掘工作中最重要的两点是:紧贴业务,确定评价。不能做到这两点的数据挖掘团队通常会工作得比较困难,做很多无用功。

紧贴业务意味着数据团队要从业务KPI中拆分出自己能贡献的一部分,这一部分能直接评价就不要间接评价,因此问题又回到评价上,这是数据工作的核心。

评价体系的建设是一项容易被忽视的重要工作,它包括评价方法和流程的建立和迭代,评价数据的获取和制作。其中数据获取必须要长期进行,现在业界数据合作及打通已经变成一种趋势,大家能够通过合作来获取自己缺乏的数据,只靠自己的数据很难把工作做完整。

微博在产品创新和商业化的道路上已经走了很久,试错和踩坑都不计其数,在利用自身优势基础上的内外部积累也开展得比较早,因此在数据挖掘领域足够接地气,足够开放,数据工作自身才能做得非常活,同时支持和引导广告业务的发展。