在数据挖掘比赛中,很重要的一个技巧就是要确定训练集与测试集特征是否同分布,这也是机器学习的一个很重要的假设。但很多时候我们知道这个道理,却很难有方法来保证数据同分布,这篇文章就分享一下我所了解的同分布检验方法。

一、KS检验
KS是一种非参数检验方法,可以在不知道数据具体分布的情况下检验两个数据分布是否一致。当然这样方便的代价就是当检验的数据分布符合特定的分布事,KS检验的灵敏度没有相应的检验来的高。在样本量比较小的时候,KS检验作为非参数检验在分析两组数据之间是否不同时相当常用。
具体操作方法如下:
1. 画出数据的累积分段图
举个例子,对于数据集 {1.26, 0.34, 0.70, 1.75, 50.57, 1.55, 0.08, 0.42, 0.50, 3.20, 0.15, 0.49, 0.95, 0.24, 1.37, 0.17, 6.98, 0.10, 0.94, 0.38},先对其排序为 {0.08, 0.10, 0.15, 0.17, 0.24, 0.34, 0.38, 0.42, 0.49, 0.50, 0.70, 0.94, 0.95, 1.26, 1.37, 1.55, 1.75, 3.20, 6.98, 50.57}。其中比0.24小的一共有4个,占数据集的 1/5,所以0.24的累积分布值是0.2,依次类推我们可以画出累积分布图。

2. 对于累积分布图取Log变换


本文介绍了数据同分布的五种检测方法:KS检验、Overlap Rate、KL散度、KDE核密度估计和利用机器学习模型检测。详细阐述了每种方法的原理和在Python中的实现,帮助确保训练集和测试集的一致性。

2087

被折叠的 条评论
为什么被折叠?



