我可以对训练和测试数据使用假设检验吗?

Can I use hypothesis Testing on Train and Test data?

我想知道在拆分数据集后是否可以对训练和测试数据使用假设检验。

我的 objective 是检查两个数据样本组是否均衡、分布等,从而为 ML 模型的应用提供良好的环境。

如果是这样,我希望 H0(零假设)被接受,即我希望测试数据是训练数据的“缩影”

我希望 H1(备择假设)被接受,即为了检查我的 ML 环境的“基础”,我应该期望发现两个样本之间的差异?

假设我的数据点有超过 1000 个数据点,它们服从高斯分布并且是独立的,Z 检验会是一个好的策略吗?

是的,您可以 运行 一个假设检验,从本质上“验证”来自“相同分布”的 testtrain 数据。为此,您可以实施一个假设检验来设置:

H_0: Train and test data come from the same distribution
H_1: Train and test data come do not come from the same distribution

为此,您不必对数据的形状做出假设(例如,它来自高斯分布),只需选择适合您正在处理的数据类型的测试(分类、数字连续、数字离散等)。例如,您可以应用 Kolmogorov–Smirnov test or the Kruskal–Wallis test (both are implemented in scipy.stats, e.g. the scipy.stats.kstest)。我不推荐 Z-test (或者实际上 t-test ),因为它通常用于比较两个样本的 means 是否相同,并不是说它们一定来自相同的分布。

需要注意的是,虽然你提到 testtrain 数据好像你是在一个维度上比较它们,但如果你有多个 features/columns,每对列应该单独比较。举一个现实生活中的例子,从学校“大概随机”选出的一部分学生可能与其他学生具有相同的身高(或来自“相同的身高分布”),但他们的成绩可能与其他学生完全不同他们。

最后,请注意,在正式的假设检验语言中,您不能“接受”原假设,而只能“拒绝它”(请参阅​​交叉验证的 here)。