关于水库取样的问题

数据挖掘 机器学习 数据挖掘 大数据 采样
2022-02-23 19:53:20

我有一个关于水库采样的一般性问题。当我使用这种方法对一个非常大的数据集进行采样以训练机器学习分类算法时,我很好奇如何使我的管道对样本间类分布的波动具有鲁棒性。

例如,假设我正在研究一个二元分类问题。我想采样一个相对较小的数据子集来评估我的算法,所以我使用了水库采样。然而,在我看来(我认为我可能是错的)我可能会偶然抽取一个样本,其中类分布与在更大的数据群体中看到的有显着不同。如果这是一个正确的推论,谁能告诉我如何纠正这种情况?如果水库采样不是答案,那么在这种情况下我可以利用哪些其他程序(除了使用分布式环境)?

我正在学习,所以一些解释、提示和方向将不胜感激。

2个回答

将类视为您要抽样的变量。

您的“水库样本”应该仍然与从您的数据中统一提取一样好。

是的,可能会有波动,特别是如果您有小样本。如果您对单个观察进行采样,则该样本中的类分布将是一个类的 100%,这是没有办法的。;-)

如果您使用ROC 曲线评估分类器的有效性,则不必太担心类偏斜:

ROC 曲线有一个吸引人的特性:它们对类别分布的变化不敏感。如果测试集中正例与负例的比例发生变化,则 ROC 曲线不会改变。

如果您使用 R,ROCR 包非常适合构建 ROC 曲线(以及许多其他指标)。