我想在不设置域的情况下启用数值特征漂移。例如:我根据年龄对客户进行评分,在我的训练集中我有一个均匀分布的变量。现在,在我的服务数据中,所有客户都是 50 多岁(域不会捕捉到这种转变)。是否有任何选项来标记需要在 tfdv 重新培训的这种行为?
我尝试给 tfdv 两个分布 N(0,1) 和 N(10,1) 但没有检测到异常。
编辑:漂移仅适用于分类特征。
我想在不设置域的情况下启用数值特征漂移。例如:我根据年龄对客户进行评分,在我的训练集中我有一个均匀分布的变量。现在,在我的服务数据中,所有客户都是 50 多岁(域不会捕捉到这种转变)。是否有任何选项来标记需要在 tfdv 重新培训的这种行为?
我尝试给 tfdv 两个分布 N(0,1) 和 N(10,1) 但没有检测到异常。
编辑:漂移仅适用于分类特征。
TFDV 添加了一个新功能,允许我们检测数字特征的偏差。在 中指定jensen_shannon_divergence
阈值而不是infinity_norm
阈值skew_comparator
。
例子:
tfdv.get_feature(schema, 'total_actions').skew_comparator.jensen_shannon_divergence.threshold = 0.01
你可以在这里查看更多信息:https ://www.tensorflow.org/tfx/data_validation/get_started#checking_data_skew_and_drift
数字特征的漂移目前正在开发中,并将在 tfdv 的下一版本(0.24.1 之后)中得到支持。为此,您将不得不使用 JSD 而不是无限范数。
Drift Comparator
用于时间序列数据的种类,例如比较昨天和今天的数据。
在您的情况下,我认为您应该使用,因为它会发现和DataSkew Comparator
之间的分布/偏斜差异。该函数的代码如下所示:Training
Serving
serving_stats = tfdv.generate_statistics_from_tfrecord(data_location=serving_data_path)
tfdv.get_feature(schema, 'payment_type').skew_comparator.infinity_norm.threshold = 0.01
skew_anomalies = tfdv.validate_statistics(
statistics=train_stats, schema=schema, serving_statistics=serving_stats)
您可能需要使用阈值(提到为 0.01)来标记 Anamolies。