关于TFDV中L-infinity范数计算及0.01阈值设置的技术问询
关于TFDV中L-infinity范数与漂移阈值的解释
嘿,我来帮你拆解这个问题,先从你提到的L-infinity范数(也就是无穷范数)说起,再聊聊为什么会把阈值设为0.01:
一、L-infinity范数的计算方式(针对TFDV的分类特征场景)
你用的payment_type是典型的分类特征,TFDV里用L-infinity范数检测这类特征的漂移时,逻辑其实很直白:
- 先分别算出两个数据集(比如你的train_day1和train_day2)中每个分类标签的占比
- 对每个标签,计算两个数据集里占比的绝对差值
- L-infinity范数就是这些绝对差值里的最大值
举个例子:假设train_day1里payment_type的分布是:信用卡占60%、现金占30%、第三方支付占10%;train_day2里变成信用卡占59.5%、现金占30.2%、第三方支付占10.3%。那各个标签的差值分别是0.005、0.002、0.003,L-infinity范数就是0.005。
二、为什么把漂移阈值设为0.01?
这个阈值不是TFDV强制要求的固定值,完全是根据业务场景和对数据变化的敏感度来定的:
- 0.01意味着:只要
payment_type里任何一个分类的占比,在两天的数据集里变化超过1%,TFDV就会标记为漂移异常 - 选择1%的原因通常是认为:这种程度的变化已经足够值得警惕——可能是数据采集环节出了问题(比如某个渠道的样本漏采),也可能是真实的业务变化(比如新支付方式的推广、用户支付习惯的突然转变)
- 你完全可以根据自己的业务调整这个值:如果业务对数据变化更敏感(比如金融风控场景),可以把阈值设得更小(比如0.005);如果是对变化容忍度较高的场景,也可以调到0.05甚至更高
结合你的代码来看,这行代码就是专门给payment_type特征指定用L-infinity范数检测漂移,并且把触发异常的阈值设为1%:
tfdv.get_feature(schema, 'payment_type').drift_comparator.infinity_norm.threshold = 0.01
内容的提问来源于stack exchange,提问作者Sairam Reddy
相关产品推荐
相关产品推荐

