当前位置:网站首页 > 技术博客 > 正文

交叉验证的



如果基础生成过程产生依赖样本组,则 i.i.d. 假设将被打破。

这种数据分组是特定于领域的。例如,当从多个患者那里收集医疗数据时,从每个患者那里采集多个样本。并且这种数据很可能依赖于单个组。在我们的示例中,每个样本的患者 ID 将是其组标识符。

在这种情况下,我们想知道在特定组集上训练的模型是否能很好地推广到未见过的组。为了衡量这一点,我们需要确保验证折叠中的所有样本都来自在配对训练折叠中完全没有表示的组。

以下交叉验证拆分器可用于执行此操作。样本的分组标识符通过参数指定。

分组 k 折叠

是 k 折叠的变体,它确保同一组不会同时出现在测试集和训练集中。例如,如果数据是从不同的受试者那里获得的,每个受试者有多个样本,并且如果模型足够灵活以从高度特定于个人的特征中学习,它可能无法推广到新的受试者。 使检测这种过度拟合情况成为可能。

假设你有三个受试者,每个受试者都有一个从 1 到 3 的关联数字

每个受试者都在不同的测试折叠中,并且同一受试者永远不会同时出现在测试集和训练集中。请注意,由于数据不平衡,折叠的大小并不完全相同。如果必须在折叠之间平衡类比例, 是更好的选择。

这是交叉验证行为的可视化。

与 类似,来自 的测试集将构成所有数据的完整分区。与 不同, 根本没有随机化,而 在 时是随机化的。

StratifiedGroupKFold

是一种交叉验证方案,它结合了 和。其想法是尝试在保持每个组在一个拆分内的同时,保留每个拆分中类的分布。当你的数据集不平衡时,这可能很有用,因此仅使用 可能会产生倾斜的拆分。

示例

以下是针对不均匀组的交叉验证行为的可视化

留一组出

是一种交叉验证方案,其中每个拆分都保留属于一个特定组的样本。组信息通过一个数组提供,该数组对每个样本的组进行编码。

因此,每个训练集都由除与特定组相关的样本之外的所有样本组成。这与 的 相同,也与 等于传递给 参数的唯一标签数量的 相同。

例如,在多个实验的情况下, 可用于创建基于不同实验的交叉验证:我们使用除一个实验之外的所有实验的样本创建训练集

另一个常见的应用是使用时间信息:例如,组可以是样本的收集年份,从而允许针对基于时间的拆分进行交叉验证。

留 P 组出

与 类似,但它会从每个训练/测试集中移除与 个组相关的样本。所有可能的 个组组合都会被移除,这意味着当 时,测试集会重叠。

Leave-2-Group Out 的示例

分组随机拆分

迭代器类似于 和 的组合,它会生成一系列随机分区,其中每个拆分都会保留一组组。每个训练/测试拆分都是独立进行的,这意味着连续的测试集之间没有保证的关系。

这是一个使用示例

这是交叉验证行为的可视化。

当需要 的行为,但组的数量足够大,以至于生成所有可能的 个组被保留的分区将非常昂贵时,此类很有用。在这种情况下, 提供了由 生成的训练/测试拆分的随机样本(有放回)。

版权声明


相关文章:

  • 数据库中有哪些索引?2025-08-25 13:01:01
  • ddos攻击软件教程2025-08-25 13:01:01
  • linux给用户添加组2025-08-25 13:01:01
  • 乐高ev3机器人搭建与编程pdf2025-08-25 13:01:01
  • vue3使用vue2组件2025-08-25 13:01:01
  • linux磁盘管理fdisk2025-08-25 13:01:01
  • 指向成员函数的指针不能在类定义之外定义2025-08-25 13:01:01
  • c语言中fprintf函数的用法2025-08-25 13:01:01
  • 发那科cx36接口做什么用的2025-08-25 13:01:01
  • 适配器模式的实现原理2025-08-25 13:01:01