货运实验偏差校正方法:异常值处理

货运场景下,通常通过ab实验来评估策略的效果,订单通常被分到两个组,对其中的一个组施加策略,称为实验组;对另一个组不施加策略,称为对照组。数据科学家通过测算和比较实验组和对照组的一系列指标来评估策略的效果。

同质化处理是货运ab实验数据处理很重要的环节,同质化处理是数据科学家为了保证在不施加策略的情况下,每个组的一系列指标没有显著差异而进行的一系列数据处理手段。

极端值(过高的统计值)会影响组与组的同质性,进而影响实验结论的科学性和准确性。

在货运场景下,GTV(Gross Transaction Volume)配对率是ab实验重要评价指标,订单金额较大的订单无论落到实验组或对照组会影响ab实验分流同质性,该文章通过提出一种基于卡方统计量的极端值处理方法来解决该问题。

一、 同质性问题描述

在货运场景下,一笔订单由用户下单后,最终的结果可能成交,也可能不成交,如果订单成交即称为配对。成交的订单总额称为配对GTV,用户下单的订单总额称为下单GTV。在保证公平性的前提下,在货运的ab实验中,数据科学家通过对比实验组和对照组的GTV配对率(=配对GTV/下单GTV)来评估策略的效果。

订单金额过高的订单,即极端金额订单,无论落到哪个实验分组都会影响实验分组的同质性,目前缺乏一种公认的极值剔除法来解决极端值带来的同质性问题。

二、 基于卡方统计量的异常值处理

2.1 流程概述

为了解决上述同质性问题,我们可以提出一种货运场景ab实验中剔除极端值流量的同质性处理方法,操作步骤大致如下:

  1. 数据预处理:准备实验数据,确定流量划分的维度(以货运场景为例例如城市、车型等等),确定剔除阈值的待选值列表
  2. 计算:在每个维度下,依据给定的计算方式,确定最佳阈值
  3. 校验:校验过滤流量是否大于总流量的0.01%,如不满足,返回上一步重选

选择完成:输出每个维度下的最佳剔除阈值

2.2 具体操作步骤和流程图

  1. 准备实验数据,根据是否施加策略,将数据划分为实验组和对照组;结合业务场景确定要处理同质性的指标,常见的例如订单金额等等。
  2. 确定指标的筛选阈值列表,通常给出10个左右的待选值;确定流量的划分维度,在货运场景下,常见的维度有:城市等级、车型、大区等等。
  3. 按照前两步中给定的阈值列表和维度,将流量划分为 k*n个类别,并统计需要处理同质性的指标的取值。
  4. 计算按照给定阈值剔除极端流量后,剩余流量的卡方统计量,得到k*n个值,将计算结果跟卡方统计量的理论值作差后取绝对值,得到评估指标 δi,j (i=1,2,...,k j=1,2...,n)。
  5. 当 δi,j 取最小值时,将当前的阈值作为该维度的筛选阈值。
  6. 对选出的阈值进行校验,看剔除流量是否大于总流量的 0.01%(也可根据业务场景确定其他临界值),如果剔除流量小于 0.01%,则选择完成;如果剔除流量大于 0.01%,则将当前阈值从待选列表中去除,重复步骤5,直至选出最合理的阈值。

整个阈值选择方法的流程图如下所示:

三、 案例分析

例如,为了探究分城市等级的过滤阈值,对货运平台的订单量分城市等级将订单金额进行分桶,统计落到每个桶里的订单量,并计算实验组和对照组的卡方统计量(chisq)的值。

待选择的阈值 list为 {4千元,6千元,8千元,1万元,1.2万元,1.4万元,1.6万元,1.8万元},对于每个城市等级{S, A, B, C, D},我们需要计算一个最优的过滤阈值,来保证过滤后实验组和对照组的GTV同质性较好,这个同质性我们用卡方统计量来作为量化参考,卡方统计量(chisq)的值越小,说明实验组、对照组GTV越同质。

随着阈值提升,各城市等级的卡方统计量的值chisq都会提升,卡方统计量的临界值也会提升(这里取显著性水平0.05,自由度n-1,n为分桶个数,为表中最右边一列的值)。△chisq为(chisq-理论值)的绝对值大小,这个值越小,说明GTV越同质。

在这个场景下,挑选阈值的标准是:

  • 卡方统计量和理论值的绝对值差距(△chisq)越小越好,满足△chisq < 10
  • 过滤订单量不要超过万分之一

A、B、C、D级城市,按以上两条标准,可确定阈值为 1万元,6千元,6千元,4千元。

S级城市由于极端金额订单出现概率高,将过滤订单量比例用全国流量进行矫正后确定阈值为 1万元。

图中标橙色的部分为阈值待选值

四、 总结

同质性问题是货运ab实验环节中常见问题,极端值的出现会对指标评估的科学性造成影响。

本文首次提出了货运ab实验中一种基于卡方统计量的极值剔除方法,能较好的保证货运实验的同质性,能较好的解决极端值影响实验回收效果的问题,提高了ab实验的科学性。

相关推荐
阿豪学编程3 小时前
LeetCode724.:寻找数组的中心下标
算法·leetcode
墨韵流芳4 小时前
CCF-CSP第41次认证第三题——进程通信
c++·人工智能·算法·机器学习·csp·ccf
csdn_aspnet4 小时前
C# 求n边凸多边形的对角线数量(Find number of diagonals in n sided convex polygon)
开发语言·算法·c#
凌波粒5 小时前
LeetCode--349.两个数组的交集(哈希表)
java·算法·leetcode·散列表
AI先驱体验官6 小时前
智能体变现:从技术实现到产品化的实践路径
大数据·人工智能·深度学习·重构·aigc
paeamecium6 小时前
【PAT甲级真题】- Student List for Course (25)
数据结构·c++·算法·list·pat考试
Book思议-6 小时前
【数据结构】栈与队列全方位对比 + C 语言完整实现
c语言·数据结构·算法··队列
SteveSenna6 小时前
项目:Trossen Arm MuJoCo
人工智能·学习·算法
NAGNIP6 小时前
一文搞懂CNN经典架构-DenseNet!
算法·面试
道法自然|~6 小时前
BugCTF黄道十二宫
算法·密码学