训练/测试拆分类似于原始数据集和彼此

机器算法验证 机器学习 交叉验证
2022-03-21 19:02:04

我正在建模一个连续变量(例如,每个客户的平均数量)。该变量具有一些不对称分布:例如 Gamma/Tweedie/ 等。

假设我在构建模型后无法进行交叉验证:我所能做的就是从初始数据集中选择一次(80%/20%)训练/测试子集,然后使用训练集训练模型。

问题是当使用伪随机变量生成 80% 时,我的训练测试可能与原始数据集不正确相似。另一个问题是训练集和测试集不能彼此相似。

有谁知道如何正确地将数据拆分为训练/测试,以便训练/测试的每个部分彼此相似并进行初始分布?

我知道通常我应该在选择模型参数时使用交叉验证来克服这类问题,但是没有它有什么可以做的吗?我找到了一些关于 KLIEP 算法的信息,但我不确定它是否适用于上述情况。

我将不胜感激任何评论/阅读链接。

2个回答

我们总是可以对样本进行分层,以使两组之间基础变量的分布相似;分层抽样是确保随机子组具有相似统计特性的标准方法。如果我们使用 R,它们是提供分层抽样的多个包;例如,软件包splitstackshapestratification具有许多现成的功能。分层抽样方法大多源于调查统计和生态学,因此可能希望看到像 Shao(2003)Bootstrap 对抽样调查的影响”这样的论文,以更好地了解引导(调查)样本的潜在影响。我还找到了联合国粮农组织(联合国粮食及农业组织)渔业技术文件 434,关于适用于渔业科学的抽样方法:一本手册,可读性极强且切中要害(特别参见第 4 节“分层随机抽样”)

有一些技术可以在控制组和治疗组之间进行精确的协变量平衡,这些技术也可能适用,但几乎可以肯定的是,它们用于选择保留组是一种过度杀戮。尽管如此,它们可能作为诊断工具很有用。

除了@usεr11852 的回答:

  • 如果您可以进行随机但具有所需分布匹配属性的训练/测试拆分,则可以重复/迭代:这是一种称为集合验证的重采样技术,类似于交叉验证和自举验证。

  • 对于单个感兴趣的连续变量,有非随机交叉验证方案,如百叶窗分割,您可以根据连续变量对样本进行排序,然后分配具有相同样本编号的组。模数k. 这在各组之间留下了轻微的系统差异。

  • 对于多个这样的协变量,聚类方法如 k-means(使用通常被认为是弱点:k-means 倾向于产生类似大小的球形簇)或 Kohonen 图已用于分层。

  • Duplex 算法(Snee: Validation of Regression Models: Methods and Examples, Technometrics 1977 (Kennard-Stone 算法的一种变体)将单个拆分为训练集和测试集。
    如果您需要选择用于训练和测试的大量数据点(例如,大量可用的测量值,但参考值很昂贵)。