个人背景:hello~大家好,我是Leo,目前在TOP3互联网大厂高级数据挖掘算法工程师。最近与大家分享一些工作中对数据方法论的感受与经验,欢迎大家与我交流讨论~
前言
做数据相关工作也有一段时间了,从数据分析到数据挖掘都积累了不少业务经验,并且一直在沉淀一些行业内比较先进的技术工具&方法论,但是一直没时间复盘。所以趁此机会一方面整理一下比较通用的数据方法论,一方面通过分享自己的业务经验给初入这个行业的同学一些insight。
因本文主要目的是分享一些业务sense和方法论,所以不会细讲各模型的算法细节,尽量采用白话进行分享,关于模型细节可以知乎或者CSDN搜,估计比我讲得专业多了。 有其它问题欢迎私聊.)
1 从事件模型说起:如何建立高效的数据指标体系
数据指标体系对于任何一个业务都是至关重要的,对于一个BI工程师来说,监控业务指标更是每日必做项目之一。如果你不用涉及到任何数据指标设计的工作,那么恭喜你,这章就不用看了;但是只要你需要关注指标口径,需要对数据进行深度挖掘,那么一个高效、清晰、可复用性高的数据指标体系就是至关重要的。
行业中有百度的user-event模型比较通用,为了简化理解,可以用4W1H来解释:
- Who(什么样的用户)
- When(在什么时候)
- Where(在什么地方)
- How(通过什么渠道/来源)
- What(做了什么事)
这样就可以把用户画像、行为动线、渠道归因等多个数据相关分析重点内容容纳在一个框架中。
一些关于事件的概念:
- 事件: 对用户行为的描述,通过数据分析方法和理论推导,能够相对完整的揭示用户行为的内在规律,基于此帮助企业实现多维交叉分析,帮助企业建立快速反应、适应变化的敏捷商业智能决策;
- 事件分析: 是基于事件的指标统计分析,并在分组、筛选等条件下进行下钻分析,以帮助了解用户使用产品的情况;
- 事件粒度: 事件+属性便可以更精确的描述一个行为的发生,那么换个角度想,其实事件+某些特有属性,便可以重新定义出一个特殊事件;
- 事件上报: 客户端具体上报的原则。
那么怎么样定义一个业务指标是否高效呢?我们站在三方视角进行解读:业务同学、技术同学和产品同学, 那么对于他们来说,一个不成熟的业务指标体系可能会有以下痛点:
业务同学视角:
- 找不到合适的表,自己取数堪比登珠峰;
- 在不同底层表中对比口径,效率低、确认成本高;
- 需求每更改一次,就得求着表owner改一次,久而久之,表owner烦不烦另当别论,表反正越来越臃肿了,提取效率变低,计算成本增加;
- 分析场景可能定义指标不明确、不清晰,导致数据方并不知道你想看什么玩意儿。
数据同学视角:
- 反复造轮子狂魔,计算成本居高不下,领导都要跪着求你别建新表了;
- 指标定义、命名混乱,不同表owner口径区别大,随便一扫发现200多个表有200多个口径,业务方懵了,你也懵了;
- 数据下游出口质量无法保障,除了业务同学和你懵了以外,下游消费方也懵了;
- 业务变化无法及时反应在数据底表中,导致最终所有人都懵了。
产品同学视角:
- 从生产到消费没有管控到位,缺乏标准化流程;
- 指标体系并未产品化、体系化,整体结构较为混乱。
以上均为目前比较常见的数据指标体系问题,为了解决这些问题,每个团队应当有自己的优化目标:
- 业务目标: 数据质量可强保障,数据出口可高度统一,数据更新可高时效,数据丰富度可支撑更多业务场景;
- 数据目标: 指标命名规范,计算口径统一,数据来源唯一,维度管理一致;
- 产品目标: 产品化/规范化指标体系生产-消费流程,全面指导数据指标体系对于业务目标的推动。
在以上不同目标的共同实现下,一个较为高效的数据指标体系框架就可以用于服务业务了。
2 浅谈数据挖掘视角的用户增长
本来想分享一些用户增长关键方法论,但是总感觉单讲理论有点虚,毕竟这样的文章网上一搜一大堆(数据入门同学可参考神策分享的通用方法论文档),基础概念大家都比较清楚,比如定义北极星指标啊,海盗指标(AARRR)啊,漏斗分析啊,留存流失分析啊。
然而事实上每个业务、每个产品都有自己特点,单用一套方法论肯定是不能完全覆盖的, 比如有些产品在公司中的定位就不是直接盈利点,而是服务工具,就像蚂蚁森林这种,它既然是一个公益性质的产品,肯定是不会通过用户直接带来现金流价值的,而是要重点培养用户心智,养成做公益和日常访问的习惯。
那么假设你是一个做数据的同学,然后还会一点算法,那么怎么从数据挖掘视角看待用户增长呢?
那么首先通过业务输入 ,我们能先验的得到一些和用户相关的关键业务指标,比如用户增长速率/用户窗口周期内的留存率与某些关键动作的相关性(一般也称为关键动作/顿悟时刻),那么这是从业务/BI视角可以出发看到的,此外通过专家经验我们也能定义一些规则来服务用户,比如我们知道用户喜欢双十一之前普发的红包。
那么除此之外我们还能做什么呢?
数据挖掘的本质就是要在现有现象和专家规则之外去寻找更多和用户相关的规律, 比如行为动线规律或者补充用户静态画像知识图谱。到这里大家可能会发现了,无论是从现有数据本身去发现一些现有业务问题还是通过专家经验去拍一些规则都是站在业务视角的,而数挖更多是关注用户本身的, 因为用户对于无论是业务侧制定的这些专家规则还是业务数据指标都是没有体感的,他当然不知道他的“顿悟时刻”是一个月内和产品互动几次,更不知道他一个月活跃多少天就是稳定盈利用户了,用户本身只关心他想用这个产品的时候体验好不好、功能多不多、对比竞品价格高不高。所以我认为区分BI和数挖的一个关键点就在于:
- BI是从业务角度透过现象看本质以满足业务目标,而数挖是在业务视角的基础上深入挖掘用户的真正意图和潜在需求以更了解用户。
下面简单说说我平时会用的一些挖掘方法:
- 行为动线挖掘(啤酒和尿布~) :这部分方法论其实和渠道归因有点类似,目标是为了挖掘出用户的频繁访问/购买路径以探索高效转移路径和低效转移路径,主要用的算法是Apriori关联规则算法和FP-growth算法进行频繁项挖掘(当然如果直接统计top10也可以),好像现在FP-growth有国外大佬直接用sql写出来过处理方法,感兴趣的同学去查一查。这里就不讲模型原理了,主要说一个小细节:关键访问节点一定要先剪枝再分析,无论是广度(有很大一部分页面访问UV很少,这部分其实没有太大分析价值,还占用计算空间)和深度(如果转移路径太长也不用分析了,一次转化30多个页面的用户我认为更可能是用户手误或者埋点上报错误……),这样能大大节省计算时间;
- 渠道归因算法 :主要用行业间比较先进的Shapley算法和Markov转移概率+蒙特卡洛模拟的方法进行渠道归因,其实渠道归因主要是用在广告投放上的,但也可以用来量化不同策略/事件对于业务的影响大小,实际中可以拿来进行精准的流量分配以尽可能早的下架一些通过CTR等指标看不出来的低价值营销策略;
- 标签传播算法 :也是用来给用户打标的算法,主要原理是通过刻画用户行为相似度,然后将最近的用户的标签进行相互传播(没错,和协同过滤非常像)以最终形成一个标签的“社区”,实际业务中我没咋用过这个算法,感兴趣的同学可以尝试尝试~
- 其它基础的推荐算法 :这部分倒不是说必须掌握啦,但是了解一下各种推荐算法的原理也蛮有助于理解用户的喜好和意图,以方便自己从更多角度进行用户标签的挖掘。此外,掌握一些推荐的原理去设计自己的实验,不也让业务方眼前一亮吗,比如别人都在一个一个的AB-test搞的焦头烂额,你一来直接一个多臂老虎机搞到一个全局最优,岂不美哉?
这部分差不多就这样啦,当然还有一些业务细节在这里就不方便详述了,感兴趣的同学可以私聊~
3 标签评估&质量保障
上一章有提到挖掘出来的用户标签,那么肯定不止一个团队在搞这个事情。假如有很多个团队都在做标签挖掘的事情(毕竟全中国目前没有任何一个公司能得到80%以上的完整用户画像,包括腾讯和阿里都做不到),那么如果你是一个标签中台的产品设计方或者技术保障方,你怎么说服大家哪些标签是可以用的,哪些是还需考察的呢?
所以这里小谈一下关于标签准确性评估和质量保障的问题,我初步把标签分为三类来看:事实类标签、挖掘类标签、意图类标签。
第一部分是事实类标签是比较好评估的, 基本都是通过公司本身现有资源得到的数据,无论是基本的用户画像还是业务相关指标,这些基本都是100%准确的,可以直接给下游复用的指标,所以这部分简单提一下就行。
第二部分是通过算法挖掘出来的刻画用户的一些标签, 其实严格意义上这部分也应该叫做事实类标签,但是是通过算法挖掘出来的标签,这部分必须得先进行评估后再确认上架给下游使用,评估方法比较多样:可以通过人工标注、问卷调查、交叉检验等方法来得到一个最终评分(这个评分也可以自己设计一下哈),再投放到平台上,这部分评估相对还是比较容易的,因为对于用户来说还是一个比较确定的画像,比如你有娃吗?你有车吗?你有房吗?得到的反馈相对也是比较正常好评估的,所以这部分只要把体系搭好,一般不会有什么大问题。
而第三部分是意图类标签是比较最有挑战的一部分, 因为意图类标签不仅我们自己可能描述都不太准确,而用户自己可能也不太清楚自己有什么意图,这样就很难双方对齐一致 ,你单纯去问用户也不太靠谱,比如我挖掘出来可能你现在是一个喜欢吃西餐胜过喜欢吃中餐的用户,然后你直接去问用户“你觉得自己相对于中餐,是不是更喜欢吃西餐?”,用户一想,我好像都差不多啊,再一想,我好像还是更喜欢吃西餐,再一想,不对我更喜欢吃中餐……这种比较模棱两可的描述,很难直接去得到这个标签的准确性。这里说一个可能的解决方案:从实际业务效果去看标签准确性,假如你投放一个营销策略打中这个你挖掘出来意图的人群表现特别好,那一定程度上也可以说明你的标签准确度。 当然如果有更好的方法也欢迎讨论~
我认为对于标签质量这方面无论是使用方还是开发方都应该有一个完整的认知 ,这样才算是对自己的业务结果负责,如果自己用的标签都不知道哪儿来的就一塞成个特征大宽表,哪怕训练效果好投放上线了,生产环境出问题的概率也会大大增加。所以作为做技术的专业人士,应当为自己的标签负责。
4 说在最后
最后说一下自己做用户增长的一点感受,那就是其实现在的算法没有你想象的那么万能。很多时候不是说你用的方法越高级效果就越好,绝大部分的业务状态都可以用非常浅显易懂的语言阐述清楚,你以为的指标波动可能只是业务方改了一个线上参数而已,和用户本身没有一丁点关系。任何一个产品都是有一个天然增长壁垒在那里的,因为自然有各种因素去制约它,你再怎么了解用户、再怎么明白他的意图,到了一个极限就是极限了,不会因为你用的算法高级而有什么改变。 使用专家规则可以让你到业务顶点的80%的位置,使用挖掘算法可以让你更上一层楼到业务顶点的90%的位置,使用推荐排序算法可以让你接近99%的位置,但是无论如何你也突破不了这个壁垒。理解了这一点,你才能对业务有更全面的认知。
我们无论是做标签的还是做挖掘的都是为了更理解用户 ,不,更好理解人类而存在的,事实上我们现在即使能得到比较好的排序效果,但其实很多时候我们都并不知道为什么会有这样的效果。用户理解,将会作为一个大课题,持续被一代一代的技术人深入探讨下去。
Leo
2022.01.22
欢迎加入CH&数据挖掘与分析,扫码加群或者添加作者好友,回复关键词【数据挖掘】或者【数据分析】,自动拉你进群,欢迎来交流学习数据挖掘、数据分析相关知识呀~
