数据漂移?训练集测试集分布差异?用featexp解决

数据漂移是指由于时间的变动,之前的数据集的分布与现在的数据集的分布不一致,导致之前的模型不能很好的对现在的数据进行预测的情况。简单点说就是随着时间的推移,数据分布变了,基于以前的数据训练好的模型不好用了。

目前市面上常用的解决方法:

论文地址:https://arxiv.org/pdf/2004.03045.pdf
这个方法的好处是万一你只有少数当前时间段的数据,不足以用它来重新分割训练集测试集从而训练一个新的模型,你还有另一条路可以走。那就是从你原先的训练集里面选出与当前的数据尽可能接近的数据作为验证集,然后做K折交叉验证,使得训练出来的模型接可能的可以评估当前的数据。

核心点就是如何从原先的训练集里面挑选出一部分与当前数据的分布最为接近的数据作为验证集,that is the problem。对抗性验证用的方法就是新增一个标签(is_test),训练一个二分类模型来预测这个标签值,预测结果是概率值(有多大概率属于测试集)给预测结果根据概率值排序后选择最后20%的数据。具体的实现过程可以自行百度或者看论文。

推荐的一种新方法featexp

先看效果图:

看不懂?我稍微解释下就懂了

一个图中的折线图的横坐标展示的是当前这个变量的分箱区间,纵坐标表格每个区间里的数据的标签值的平均,比如某个变量分了5个区间,那就会出现5个点,每个点的值表示这个区间内所有数据原先的标签值求和再取平均。把所有的点连线就是这个变量的分布趋势。

先对训练集中的某个变量分析,画出这个图,然后对测试集中这个变量也用同样的方法画出这个图,就可以很直观的知道这个变量在训练集和测试集里面的分布是否一致(既折线的趋势是否一致)。

二个图是对数据集中每个变量做一个量化分析,trend_changes表示图中的折线有几次斜率正负号反向,有3次正负号的变换那么trend_changes就等于3。很好理解:如果训练集和测试集中的trend_changes数一样,那么就就较高的概率分布一致,为了更加精确的表示每个变量在训练集和测试集中的趋势相关度,featexp内置了直接计算趋势相关度(trend_correlation)的方法,调用它,传入训练集,测试集就可以直接展示出来。

最后要说的是,featexp可以做的事远不止数据漂移,具体能做哪些事可以参考这份中文教程,非常简单粗暴!

中问教程地址:https://www.jiqizhixin.com/articles/2018-11-06-7

featexp源码地址:https://github.com/abhayspawar/featexp

打完收工,谢谢观看!

Original: https://blog.csdn.net/chengyu950526/article/details/119860423
Author: chengyu950526
Title: 数据漂移?训练集测试集分布差异?用featexp解决

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/665348/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球