一 前言
唯一不变的是变化,在拥抱它前,请事先探知、归因、并充分准备。
在相对完善的指标体系建设背景下,我们需要通过指标以及指标波动的解读来描述、追踪、推动业务。当一个指标波动时,我们首先需要从业务视角判断其波动是否异常,即异动检测,其次判断异常背后的原因是什么,即异动归因。
归因的方法有多种,这篇文章的重点是指标拆解,也是我们做业务分析时最常用到的方法。我们的目的是解放人力,将指标拆解实现自动化,一方面可以加快业务迭代速度,快速定位问题;另一方面可以对可能产生异动的维度进行全局量化,增强可比性,明确下一步的业务行动点的优先级。自动化异变归因的目的是为了尽快判断并抓住机遇,寻求以数据驱动作为灯塔指引业务航向。
二 目的
将目标指标定义为
, 波动为
,其中
是当月的数据,
为上个月(同比/环比)的数据。
其中,
表示指标(或维度)
对于
的贡献度(contribution)。
另外,贡献的拆解算法是根据组合方式不同决定,集合
组成
的方式包括:
-
加法 (例,各渠道uv加和)
-
乘法 (例,已知rpm=cpc*ctr下,算出cpc、ctr分别对rpm的贡献)
-
比率型指标(例,各广告计划的cpf, 或者各个渠道的cpuv等)
三 贡献率的拆解方法
1 加法拆解
已知
目标波动
贡献等于
,证明见附录。
举例针对绝对值指标的维度拆解都是加法拆解。绝对量指标的同比/环比变化,就是各个分指标变化的加权求和,例如访问uv总和等于各渠道uv加总, 那么总uv的变化下钻贡献率等于各渠道分别的变化除以上个月的总uv数。
2 乘法拆解
已知
目标波动
贡献等于
, 证明见附录。
其中
是当月的数据
,
为上个月(同比/环比)的数据,
为平均对数权重:
以全站商品详情页的浏览量(ipv)为例,其变动涉及流量、承接页到商品详情页的转化(uv-d转化)、商品详情页用户人均浏览量(人均pv),分别对应了用户增长、搜推场景承接以及私域用户活跃度等业务域或用户行为指标。借此对全站ipv的构成链路进行静态乘法拆解:
同时,我们可以计算各乘积因子对目标指标变化的贡献率
,衡量3个指标的重要性:
是平均对数权重,
3 比率型指标拆解
当分析比率指标进行维度下钻,分项对整体的贡献,受两个因素影响
-
分项的相对数指标波动贡献 ,即当期与基期的分项规模一致时,分项指标带来的变化:
分项的指标波动贡献 = 指标同比变化值 * 上期基数占比
-
分项的结构变化 ,即当期与基期分项规模变化部分的指标变化:
分项的结构变化 = 占比同比变化值 * (分项本期指标 - 整体上期指标 )
, 其中是当月的数据,为上个月(同比/环比)的数据。 , 证明见附录。
举例 以承接页到商品详情页的转化率(uv-d转化率rate)为例,
,流量渠道可分为付费、免费、自然、其他,每种渠道的uv-d转化率为
,各渠道的商详页访问人数(duv)占比用
表示,各渠道人数(uv)占比用
,如果uv-d转化率同比下跌,我们想定位出哪个渠道出现了问题;各渠道的贡献
是怎么样计算为:
4 实例应用
根据上文提到的不同指标的计算方法,支持全类型指标下钻求贡献的场景, 可根据先验业务输入搭建多层的归因逻辑模型, 层层下钻,最终将指标波动定位。
图二:计算贡献率之后的数据结果样式
第一层拆解,借助用户动线,将存在异动变化的指标ipv构成链路进行乘法拆解,如下:
这里帮助我们定位到可能导致指标异动的关键节点,这有助于我们将问题定位到具体业务域,例如是uv的问题,转化的问题,还是人均ipv的问题?
第二层拆解,对关键节点处的多个维度进行下钻,将问题定位到某些维度的某些水平上,同时避免陷入辛普森悖论等陷阱,这有助于我们形成具体业务域有所行动, 例如如果是转化的问题,究竟是哪个渠道的转化减少了?
下图“异动分析拆解流程图”是根据先验的业务输入搭建的归因模型,根据其框架得以进行贡献率拆解与问题定位:
红色表示的链路指标或维度代表对总值下跌贡献率较大,经过一层一层的拆解定位到app端自然流量中转化的降低导致总转化下降。
基于流量跨端调控以及流量预算减投的业务背景,我们现将对ipv贡献最大的uv/duv根据端型、流量渠道类型、流量渠道、国家四个维度进行贡献率拆解。
在本实例中,通过本文对贡献率拆解方法与业务人工看数得到的问题定位基本一致,该方法可以实现异动贡献率量化与提效的目的,具体核心结论如下:
结论一 (第一层拆解)ipv下降主要影响因素是uv-d转化率的波动。
结论二 (第二层拆解)uv-d比率的波动主要由APP端与WAP端导致,两种端型贡献持平。
结论三 (第三/四层拆解)APP端的自然流量和wap端的付费流量是uv-d总比率波动的主要贡献维度。
结论四 (第五层拆解)APP端self-visit中美国对uv-d比率的波动贡献较大。
通过建立多层归因下钻维度模型, 用自动化的方式层层剥析,从而能尽求完善且正确的归因到某个维度,从而节省人力,提高准确和科学性。
四 多层下钻归因方案—决策树
本节重点在拆解求出贡献率之后,如何探查异动。我们已经把不同维度下,每个维值的贡献率求出, 下一步的目的是求出贡献最大(有异动的)的维度维值组合,测三种拆解方案,包括逐层下钻(同上文3.4的下钻方式)、多层同步下钻、 决策树模型,发现决策树模型效果最好。这里决策树输入为不同的维值组合,输出为贡献率,做的是回归预测。
主要做法是求贡献率的熵,找到信息增益最高切割方法。这里自然而然想到决策树模型,通过贪心算法,切割数据空间, 找到贡献率绝对值最高的维度组合空间。图四长方形整体表示数据空间,
表示两个维度,其下角标表示维度下的维值。下图具象的看出通过不同维值的组合,把数据空间切割成不同块,用不同的颜色代表。
图四:决策树对数据空间的切割可视化
1 剪枝
决策树存在过拟合的问题, 为了解决这个问题,我们决定了剪枝的方法,采用后剪枝(Post-pruning)。后剪枝就是先把整颗决策树构造完毕,然后自底向上的对非叶结点进行考察,若将该结点对应的子树换为叶结点能够带来泛华性能的提升,则把该子树替换为叶结点。
后剪枝的方法包括:REP-错误率降低剪枝, PEP-悲观剪枝, CCP-代价复杂度剪枝, MEP-最小错误剪枝。
我们借鉴了CCP—代价复杂度的方法。选择节点表面误差率增益值大的层级的非叶子节点,删除该非叶子节点的左右子节点,若有多个非叶子节点的表面误差率增益值相同小,则选择非叶子节点中子节点数最多的非叶子节点进行剪枝。这个算法的参数为
, 表示算法的复杂度:
其中,
表示的是结点
的方差(近似加权熵的概念:impurity,下文都泛称为熵,计算公式
),
是结点的子树
的熵的总和,
为决策树结点个数 。
高,表示结点往下分的信息增益高。图五表示异动维数的个数与决策树层结点熵的平均数的关系:以黄线为例, 当异动的维数为2时,决策树在第二层的熵最高,从第二层往后,再往下分熵越小,信息增益少,过拟合明显。从折线明显看到,熵的拐点在第二层,决策树最大深度等于2。
我们从图五的事例启发,按照CPP的方法, 找跃层增益较大的“拐点”,找到合适的
进行剪枝。
五 模型表现
1 模拟数据
我们模拟的维度和维值如下,共4个维度(两两独立), 涉及维值共40个,4个维度维值组合(笛卡尔积 31*2*3*4=744)共744个。模拟的时间对比为月环比,模拟指标为广告消耗。
无异动数据:用白噪音
模拟无异动的维度组合的时间序列,见图六
图六:无异动的时间序列
有异动数据:用随机游走的累积和来模拟异动,公式如下,见图七
图七(a):有异动的时间序列1
2 模型评估
在上图四个维度(国家、渠道、端型、曝光档位),指定特定的维度和维值在3月有异动,通过决策树模型,测试是否找到正确异动点。模拟case考虑的主要是可能存在异动的真实情况:
1. 某个PID数据录入异常,会影响单维度的异动(仅那个PID的数据)。
2. 某个渠道且某个端型的减投,会影响多个维度组合的异动。由于指标异动涉及的业务繁杂,不同团队在不同方向的优化,影响到不同的维值组合。
例一:异动维度在两处
a. 国家=伊拉克, 渠道=免费, 端型='WAP', 曝光档位=[5:100]
b. 国家=法国, 渠道=免费, 端型='PC', 曝光档位=[0:5]
将贡献度算出,数据输入决策树模型, 结果见图八,可以看出决策树精确的找到异动的数据(共精确找到7个维值,共8个), 且这两组标红数据对于异动的贡献绝对值最大。我们自定义树结构找父节点的方法,自动剪掉冗余分支,只截取重点枝干呈现。
例二:异动维度在一处,只异动一个维度在付费上
通过剪枝,模型成功找到一维信息,避免提供太多噪音令用户混淆。
更多
表一包含更多维值组合案例, 以及模型表现,包括F1-score,模型输出的结果,和特征重要性。已探索11个案例,平均F1-score达到91.9%。
| Positive Prediction | Negative Prediction
Positive Class | True Positive (TP) 34 | False Negative (FN) 6
Negative Class | False Positive (FP) 0 | True Negative (TN) 0
Precision = 34 / (34 + 0) = 100%
Recall = 34 / (34 + 6) = 85%
F-1 Score Overall = 91.9%
|
|
|
模型结果1:模型输出(结果可视化展现,自动剪掉冗余分支,只截取贡献高的枝干呈现)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
法国 -> APP -> 付费 ->贡献率为 0.88
|
|
|
|
|
法国 -> (5.0, 100.0] -> APP -> 付费 ->贡献率为 0.90
|
|
|
|
|
非伊拉克 -> 法国 -> (5.0, 100.0] ->贡献率为 0.14
伊拉克 -> PC -> 非付费 ->贡献率为 0.87
|
|
|
|
|
非法国 -> 伊拉克 -> (5.0, 100.0] ->贡献率为 0.14
法国 -> APP -> 非免费 ->贡献率为 0.87
|
|
|
|
|
非美国-> 非法国-> 伊拉克-> (5.0, 100.0]->贡献率为 0.14
非美国-> 法国-> APP-> 付费->贡献率为 0.84
美国-> APP-> 非付费->贡献率为 0.84
|
APP : 1.218 美国 : 0.936 付费 : 0.907 法国 : 0.863 伊拉克 : 0.035 (5.0, 100.0]: 0.033 土耳其 : 0.000
|
六 局限
但此方法论还是有其局限性的,主要在于归因变量(下钻维度)有限,大多数情况下是按照业务的理解和先验的经验来判断。本方法只能识别业务已经认可的拆解维度和链路定位,拆解到的指标或维度都是已知业务系统内的指标,诸如工程问题、宏观政策等因素难以识别,需要辅以定性分析。具体来说,我们看到pv下降,下意识要去从渠道下钻,主要原因是我们因为渠道作为变量,是和pv数有正向(或者因果)关系的。举个极端的例子,有可能是服务器的故障,导致全平台的pv下跌。这样的潜在变量,如果和常用下钻变量彼此相互独立的条件下,是无法通过此方法论探查得到的。我们后续的工作将重点放在对相互独立的指标和相关事件的角度做进一步更全面的因果推断算法研究。
七 技术产品化
我们工作中月报和周报中通常分析的方法与此类似,不同的是,因为人力有限,数据庞杂,往往下钻维度和层数局限,比率类型指标不知道如何下钻等等,导致科学性和严谨性很难保持。这套方法实现了自动化,保证计算的准确性,节省人日。我们将此技术沉淀在内部数据产品“象数”上。象数中心是ICBU数据驱动的基石产品,是集数据资产定义与管理、A/B实验、洞察分析于一体的数据平台。它提供的核心价值在于好找、敢用、持续保鲜的数据资产,大规模、可信的端到端实验能力,以及因果、异动等智能化的分析工具。
八 附录
已知
贡献等于
,
已知
贡献等于
,
目标波动
, 其中是当月的数据,为上个月(同比/环比)的数据。
贡献等于
算法得到的贡献率依旧相互独立,符合MECE原则,且通过分别观测
和
有助于我们避开辛普森悖论带来的陷阱。
备注:
符合mece原则证明:相互独立:
和
的计算公式中不涉及其他分项的完全穷尽。
参考
-
Ang, Beng W., F. Q. Zhang, and Ki-Hong Choi. "Factorizing changes in energy and environmental indicators through decomposition." Energy 23.6 (1998): 489-495.
-
Ang B W . The LMDI approach to decomposition analysis: a practical guide[J]. Energy Policy, 2005, 33(7):867-871.
-
《波动解读—指标拆解的加减乘除双因素》
https://zhuanlan.zhihu.com/p/412117828
开源 Elasticsearch技术训练营