作者:maolilai 腾讯IEG数据分析工程师
1
背景
在游戏业务运营中,经常会碰到关键指标出现异常,比如某个业务的活跃下降了,收入下滑了、某个运营活动点击用户下降、活动参与用户下降等等。针对这些问题都需要case by case去分析哪些因素可能影响到了这些关键指标的异动,需要要花大量的时间。本文主要介绍一种基于Adtributor实现的异动分析系统,用于日常游戏业务在经营分析中快速查找可能影响到关键指标的分析系统的实现。
2
挑战
在游戏业务运营中,都针对通用的各种指标进行监控,每天业务运营同学都会看各种指标,根据业务的运营经验来看业务可能在哪些玩法、场景出现问题,根据关键的指标进行衡量。有时候为了进行进一步拆分需要花费大量的时间;如果涉及的维度多,组合的方式就更多。
这里只针对归因进行说明。
当前业界的归因算法很多:
目前我们实现是基于一维的角度进行分析,比如年龄、性别等,另外还可以根据指标进行拆分或者衍生新的特征,比如:我们发现年龄这个特征对DAU异动比较大,可以进一步拆分:
通过这种方式进行衍生或者拆分指标,基于Adtributor可以快速实现针对某些系统的异动快速实现分析。
3
算法
Adtributor是微软在2014年最早提出来的,《Adtributor: Revenue Debugging in Advertising Systems》,算法的核心主要是两个方面:惊喜度surprise,解释力EP。
Adtributor对异常KPI的所有维度和元素,根据当前的数值和参考的数值,计算EP值和S值 ,
S值 :
根据惊喜度计算出,针对关键的指标,计算所有维度下的所有元素和参考值的差异,即计算每个元素的Sij(m),
然后进行求和得到S值,然后找出哪些维度可能存在异常,比如在年龄分布上和参考的数值不一样,差异大。
根据S值进行降序排序,找出最意外的维度。
EP值:计算每个维度下每个元素在该分析的指标上的变化总数的占比,比如分模式的累积参与人数波动100w,每个元素和参考元素的差异,除于波动值100w,找出贡献最大的元素。
EP值是针对单个维度进行衡量每个元素的重要程度。
简单来说,就是针对单个维度进行归因分析,根据S值找出最大的异常维度,根据EP值给出解释说明。
4
实现逻辑
输入数据:
CREATE TABLE {:sgamecode}_mid_act_step1_adtributor2(
dtstatdate STRING COMMENT '统计日期',
gamecode string COMMENT '业务ID',
vtype STRING COMMENT '维度:比如年龄等',
vtag STRING COMMENT '特征,比如1-10,10-20',
newnum STRING COMMENT '当前阶段每个特征的数值,和tag一一对应',
oldnum STRING COMMENT '参考阶段每个特征的数值,和tag一一对应'
)
按照此格式输入(支持输入千万级以上的数据,计算速度快)。
输出为:KL散度、S值、EP值明细;
5
应用
基于单个业务,针对活跃或者收入波动进行归因,最终通过仪表盘进行展示或者通过微信日报进行推送。
不足:
近期热文
让我知道你在看