测试集的最小大小是多少?

数据挖掘 统计数据 交叉验证 测试
2021-10-03 11:21:19

可以在 95% 的置信度下使用大约 1000 个样本以及在 99% 的置信度下使用 3000 个样本来采样二进制值总体的平均值。

假设一个二元分类问题,为什么总是使用 80/20% 规则,而不是几千个样本的平均准确度可以以 > 95% 的置信度估计的事实?

4个回答

这是一个很好的问题,因为它对检验传统统计和机器学习的最佳实践具有启发性,因为它们结合在一起。

两个单独的规则/最佳实践 -

首先,您提到的两个项目应该分开检查而不是混为一谈,即它们应该按照您在问题中的建议仔细组合。

意义:您估计您希望超过 1000 个案例具有统计意义,并将进一步受益于超过 3000 个测试案例。

交叉验证:通过拆分数据(通常是 80% 训练 - 20% 测试)来执行交叉验证,以便可以评估偏差(~欠拟合)和方差(~过拟合)的测试。

将重要性与交叉验证相结合:现在我们知道我们希望在测试中具有重要性,因此我们需要超过 3000 条记录。我们还想执行交叉验证,所以为了让测试和训练数据都返回重要的结果,我们希望两者都至少有 3000 条记录。最好的情况是总共有 15,000 条记录。这样,数据可以拆分为 80/20,并且测试集仍然很重要。

假设您的数据集中只有 4000 条记录。在这种情况下,我会选择让我的训练数据显着,同时允许测试集降低到较低的显着性。

更严格:上面的所有内容都非常不稳定,缺乏统计严谨性。为此,我建议您参考另一个 Stack Exchange 问题中引用的几篇论文-

Dietterich,“用于比较监督分类学习算法的近似统计检验”

Salzberg, Data Mining and Knowledge Discovery, 1, 317–327 (1997), “关于比较分类器:要避免的陷阱和推荐的方法”

希望这可以帮助!

对于分类问题,请查看https://pdfs.semanticscholar.org/b10d/33a34a21d8806cb35509d6a79ff7827a4b24.pdf

所需的测试示例 N 的数量取决于您期望获得的错误率 E 和您想要的错误栏。这个想法是您需要看到足够多的错误才能获得足够小的误差条(如果您没有看到任何错误,则无法获得任何精度)。经验法则(公式 17):

 total number of errors seen = 100 = N E.
 So your size test set will be N = 100/E. 

定性解释(更多细节见论文):如果你的错误率是 E 并且你的大小测试集是 N,那么误差条与以下成正比:

 sigma = sqrt(E(1-E)/N) 

 ~= sqrt(E/N) if you have a small error rate.

假设您想使用 2 sigma 误差线(~95% 置信区间)DeltaE = 2 sigma。假设您想要一个相对误差 DeltaE/E = 0.1(一位有效数字)。然后:

 DeltaE/E ~= sqrt(E/N)/E = 0.1

求解 N 会产生您的大小测试集:

 N = 100/E

也许您的一些最佳预测变量不会经常出现(稀疏),如果您有 1000 万行,并且只采集 3000 个样本,那么您不会得到任何具有非常重要的稀疏结果的样本。您可以将邮政编码作为预测变量,并且美国有超过 43,000 个唯一邮政编码与 1000 万个样本相关联,您的 3,000 个样本最多只能获得大约 7% 的唯一邮政编码。这将很难准确衡量错误。

使用大小与数据相关的测试集(无论是 20% 或 30% 的保留,还是 10 倍交叉验证)的原因是为了比固定数量的样本有一个标准且更可靠的误差度量。

我认为你会想使用几千个样本作为测试集的唯一原因是在你的模型构建过程中使用更多的数据。如果是这种情况,像 10 倍这样的交叉验证会更有吸引力,因为它会使用您的所有数据,并让您了解模型性能的可变性。

我会玩一些具有 100,000 个左右样本的开放二进制数据集,然后自己尝试您的建议。多次运行两次模拟:一次训练 80%,测试 20%,每次都记录错误分类错误,另一种是训练 (n-5000),测试 5000,每次都记录错误分类错误时间。查看存储的错误并比较它们的平均值和标准偏差。我敢打赌,这 20% 会更加稳定。

这只是一个经验法则,您的测试集越大,您的性能测量就越准确。实际上,大多数人使用 k 折交叉验证来获得比 80/20 分割更好的性能估计。k 越高,您的估计器的方差越低。更好的是外卖交叉验证,但是这在计算上变得非常昂贵。如果您的模型中存在随机行为,那么更好的方法是多次重复 take-1-out 交叉验证,因为在同一组上进行训练会产生不同的模型。在这方面做出选择只是在估计的方差和训练模型的计算成本之间进行权衡。