我是这么做指标异动分析的。

博客介绍了Adtributor算法在异常问题归因中的应用,旨在解决分析师在异常排查上的痛点。通过案例分析展示了算法如何处理量值和率值指标,快速定位异常源头。该算法遵循奥卡姆剃刀原则,找出最大波动的维度和元素。尽管存在局限性,如维度拆解依赖人工,无法考虑因素间的关联,但能有效释放人力进行更高级别的分析工作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

现在异常排查类的需求非常多,会占用分析师比较多的人力精力,从排查思路、提取数据、统计分析再到分享原因,而且一般异动分析还相对紧急。可是从分析师的角度考虑,异动分析,对个人价值并不高,并且对业务的发展价值也很一般,属于紧急不重要的象限。

所以希望能够用数据产品来解决异常排查类的分析,包含AB实验的不满足预期、发版的不满足预期、指标的不满足预期,从而释放人力,去做更有价值的策略分析。

最近学习了行业上一些常见的根因分析算法,其中之一是微软的Adtributor,行业上应用比较多。

一、关于Adtributor算法的基本介绍

解决了什么问题

对异常问题进行归因,定位到具体的维度和维度下的具体元素

能解决什么指标的问题

  • 量值指标,具有可加性,比如页面访问PV、收入、内容/APP分发量

  • 率值指标,从量值指标衍生而来,比如CPM、下载的应用启动率

使用的原则

  • 奥卡姆剃刀:形式尽可能的简单

  • 找出最令人吃惊的元素(实际值和预测/对照相差最大的维度及元素)

  • 贪婪算法:尽可能解释指标的异动

算法的基本思维简述

  •  计算每个维度下对绝对波动的贡献度

    • 比如我的日常收入由工资1000、投资500构成,结果这个月工资变成了1400、投资变成了800。那总波动是700,其中工资贡献了波动的400/700,投资波动贡献了300/700。显然,收入的绝对贡献更高

  • 计算哪个构成元素最令人惊讶

    • 上述例子中,我的收入变化只有400/1000,而我的投资收入却改变了300/500,所以相对变化它要高的多,最令我吃惊

  • 然后会优先给到惊喜度高、能解释波动的元素作为归因因子

算法的局限性

  • 限制于人的维度拆解,如果可能的因素不在里面,它也没办法

  • 会优先在一个维度里寻找可能的原因,难以考虑因素之间的关联关系

  • 量值类型/率值类型都要可叠加?

原来的算法截图:

    

二、关于两种指标类型的实战案例

量值类指标的分析步骤详细举例(以下数据和产品纯属虚构):

背景:这里面的指标是分发量,可累加。维度是产品的模块。

Adtributor算法使用的指标:EP、Surprise是算法中需要计算和使用的两个指标,公式如下图中所示:

以下维度是用户年龄

算法详细步骤:

从上面看到,结果还是十分准确的,和肉眼分析出来的是一样的~

率值类指标的分析步骤详细举例(以下数据和产品纯属虚构):

这是衍生指标的分母(和上面量值指标的计算没有任何区别)

这是衍生指标的分子(和上面量值指标的计算没有任何区别)

这里是衍生指标,它的EP和Surprise和量值指标的计算公式有所不同,会同时考虑到分子和分母

可以看到大盘整体的激活率指标降低了12.4%,但是拆开看各个模块,激活率都没有变化。但是通过肉眼观看分子分母,我们能够知道,分发模块的分发占比变化很大

算法最终输出的结果,也是和我们肉眼看到的模块是一致的

算法能够定位到相关的维度(以及下面的元素),最终还需要人给出根本原因。

### 异动归因项目的实现方法和技术方案 #### 技术背景 异动归因的核心目标是对某一时间段内的数据波动进行深入分析,找出可能的原因并量化其影响。这通常涉及到多维度数据分析、因果推断以及机器学习算法的应用。以下是基于已有研究和实践总结的技术实现路径。 --- #### 方法一:基于决策树模型的异动检测与归因 决策树是一种常用的分类回归工具,在异动归因场景下可以用来识别哪些特征组合最可能导致数据波动。具体流程如下: 1. **构建训练集** 将历史数据按照时间序列切分为正常时期和异常时期两部分,提取各维度(如国家、渠道、端型、曝光档位)作为输入变量,标记是否存在异动作为输出标签[^1]。 2. **选择合适的评估标准** 使用基尼指数或信息增益来衡量每个分裂点的重要性,从而筛选出对异动贡献最大的维度及其取值范围。 3. **验证模型效果** 利用交叉验证技术检验模型泛化能力,并调整超参数以提高预测精度。最终得到一棵能够清晰展示关键驱动因子关系的决策树结构。 ```python from sklearn.tree import DecisionTreeClassifier, export_text # 构建决策树模型 model = DecisionTreeClassifier(max_depth=5) model.fit(X_train, y_train) # 输出规则解释 tree_rules = export_text(model, feature_names=list(X.columns)) print(tree_rules) ``` --- #### 方法二:利用加法分解框架解析大盘指标变化 对于复杂的大盘级指标,可以通过加法分解的方式将其拆解成若干子项的变化总和。这种方法不仅有助于理解总量层面的趋势,还能进一步细化到具体的细分领域。 1. **定义基本公式** 设总体指标 \( D \) 可表示为多个维度下的局部贡献之和,则有: \[ D = \sum_{i=1}^{n} d_i \] 当前期对比后期的整体差异可写: \[ \Delta D = \sum_{i=1}^{n} (\Delta d_i + v_i * \Delta s_i ) \] 其中 \( \Delta d_i \) 表示第 i 维度数量上的改变,\( v_i \) 是该维度对应的单位价值,而 \( \Delta s_i \) 描述的是结构比例方面的偏移程度[^3]。 2. **实施步骤** - 收集基础统计数据; - 计算每一步单独作用所带来的增量效应; - 合计各项结果得出总的变动幅度。 --- #### 方法三:结合内外部因素综合考量 除了单纯依靠内部系统记录外,还需要关注外部宏观环境对企业经营状况产生的间接干扰。例如市场趋势转变、竞争对手动态调整或者消费者行为模式迁移等因素都可能是潜在诱因之一[^2]。 同样地,某些特殊事件也可能引发短期剧烈震荡,比如促销节日带来的流量高峰或是突发公共卫生危机造成的供应链中断等问题都需要纳入考虑范畴之内[^4]。 --- #### 工具选型建议 为了高效完成上述任务,推荐采用以下几种主流开源软件包: - Pandas/Numpy: 处理大规模表格类资料的基础库。 - Scikit-Learn/XGBoost/LightGBM: 开发高级ML Pipeline必备组件。 - Matplotlib/Seaborn/Tableau: 展示可视化图表增强沟通效率的有效手段。 ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值