简易gini系数原理
简易gini系数原理简易gini系数简易gini系数原理系数原理简易gini系数原理简易gini系数原理,
参考链接:https://zhuanlan.zhihu.com/p/671228423
某个维度的粒度越细,且头部top维值贡献度越大,就越可能是指标异常的最主要原因。因此该系数对于维度内波动更加敏感。
| 三组贡献度数据 | 维度值1 | 维度值2 | 维度值3 | 维度值4 | 维度值5 | 维度值6 | 维度值7 | 维度值8 | 维度值9 | 维度值10 | 维度值11 | 简易基尼系数 |
| X维度 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 | ||
| 贡献度平方 | 0.01 | 0.01 | 0.01 | 0.01 | 0.01 | 0.01 | 0.01 | 0.01 | 0.01 | 0.01 | 0.9 | |
| Y维度 | 0.9 | 0.01 | 0.01 | 0.01 | 0.01 | 0.01 | 0.01 | 0.01 | 0.01 | 0.01 | 0.01 | |
| 贡献度平方 | 0.81 | 0.0001 | 0.0001 | 0.0001 | 0.0001 | 0.0001 | 0.0001 | 0.0001 | 0.0001 | 0.0001 | 0.0001 | 0.189 |
| Z维度 | 0.8 | 0.1 | 0.02 | 0.02 | 0.02 | 0.02 | 0.02 | |||||
| 贡献度平方 | 0.64 | 0.01 | 0.0004 | 0.0004 | 0.0004 | 0.0004 | 0.0004 | 0.348 |
假设我们对某个一级指标的异常原因进行拆解,比如销售额或者毛利额等等,拆分的维度可以是销售渠道或省市地区,也可以按照商品的品类、新老客等。假设有 n 种拆分维度,那么就需要生成 n 个维度对应的中间表,然后针对每个维度下面的每一个维度值Xi,去计算指标变化,才能得到其贡献度。
为了精准地找到指标异常的原因,面临的问题是只拆单个维度,只能得到该维度的结论,定位不到精准的问题所在。如果拆解的维度太细,比如把所有的维度都进行组合,那每一项的贡献度又太小,还是无法得到主要的原因。所以这里需要层层的下钻和穷举,在各种维度组合中搜索我们想要的结论。
假设目前有 n 种拆分维度,那么就需要首先建立2个中间表,建立中间表的过程中要确保口径一致,并满足数仓规范,工作量是非常大的。建好这些中间表之后,再分别调用拆解算法的API计算相应的贡献度,这就产生了非常大的计算和存储消耗,即维度爆炸的问题。
6. 指标拆解维度爆炸问题优化

为了解决维度爆炸的问题,对实现方案进行了以下优化:
优化1:把维度拆解的流程转变为基于贡献度聚合。前文中提到,因为贡献度具有可加性,首先调用一次算法计算最细粒度的末级指标的贡献度,然后需要哪个维度的贡献度,就用它去做 group by 条件对贡献度求和。这样能够省略中间表的 IO 过程,只需要一次算法调用,在集群上执行求和操作也会比调用指标拆解算法快得多。
上述是针对一级指标进行的异常诊断,我们实际业务中还需要对二级指标进行诊断,这种方法只需要再对贡献度做一次归一化即可,不需要重复计算,可以针对一级、二级指标同时进行异常诊断。

优化2:根据实际业务需要限制维度组合实现剪枝。具体包括两个操作,第一个是对维度进行分组,对于具有天然层次关系的维度,比如一级渠道和二级渠道,如果拆到二级渠道,其实一级渠道信息已经有了,就不用对一级渠道和二级渠道进行冗余的组合了,只需要对于跨组的维度进行组合就可以了。第二个是限制维度组合的维数,因为在归因诊断分析的时候,实际业务不会关注到特别复杂的维度上去,一般由两三个维度组合起来就够用了。
优化3:基于维度基尼系数排序,确定最佳维度,实现异常精准定位。有了剪枝后的若干拆分度以及对应的维值贡献度,如何才能优中选优,定位到主要原因呢?直观的想法就是某个维度的粒度越细,且头部top维值贡献度越大,就越可能是指标异常的最主要原因。基尼系数是比较适合这个场景的度量方式,用1减每一部分的贡献度的平方和越小,说明拆分维度越合理。
上图右侧举了1个例子,针对某次销量异常,第一种按商品维度去拆,因为每个商品的贡献度太小,所以基尼系数非常大。第二种按照二级渠道的粒度去拆,粒度比较粗,算出来的基尼系数可能是一个比较大的值。第三种按照一级行业叉乘二级渠道去算,基尼系数很有可能更小,因为二级渠道再下钻一层,有的部分出现了正的贡献度,有的部分出现了负的贡献度。正的贡献度就是对于指标的波动有正向积极作用的部分,负向贡献度就是有负向作用的。在这个例子中可以看到拆分维度行业1叉乘渠道1贡献度60%,被归为主因,也是比较符合我们认知的。所以通过基尼系数我们能够找到较为合理的拆分维度和导致指标异常的主因。
关注公众号「水沐教育科技」,在手机上阅读所有教程,随时随地都能学习。内含一款搜索神器,免费下载全网书籍和视频。

微信扫码关注公众号