热门话题
#
Bonk 生态迷因币展现强韧势头
#
有消息称 Pump.fun 计划 40 亿估值发币,引发市场猜测
#
Solana 新代币发射平台 Boop.Fun 风头正劲
Andrew Ng 的团队曾在一篇研究论文中犯了一个大错误。
这个错误是由于随机拆分数据造成的。
以下是具体发生了什么(以及解决方案):
通常使用随机拆分生成训练集和验证集。
然而,在许多情况下,这对模型构建可能是致命的。
考虑构建一个为图像生成标题的模型。
由于语言的固有特性,每张图像可以有许多不同的标题。
- 图像-1 → 标题-1,标题-2,标题-3,等等。
- 图像-2 → 标题-1,标题-2,标题-3,等等。
查看这个 👇

如果我们使用随机拆分,相同的数据点(图像)将同时出现在训练集和验证集中。
因此,我们最终在模型训练过的实例上评估模型。
这是数据泄漏(也称为组泄漏)的一个例子,导致过拟合!

在 Andrew Ng 的论文中也发生了同样的事情,他们准备了一个医学数据集来检测肺炎。
- 总图像 = 112k
- 总患者 = 30k
由于随机拆分,同一患者的图像在训练集和验证集中都有。
这导致了数据泄漏,验证分数看起来比实际要好得多。
这是他们的初始论文👇

组别洗牌分割解决了这个问题。
有两个步骤:
1) 将所有与一张图像对应的训练实例分组。
2) 分组后,整个组(一个图像的所有示例)必须随机分配到训练集或验证集中。
这将防止组泄漏。

如果你使用 Sklearn,GroupShuffleSplit 实现了这个想法。
作为一个例子,考虑我们有以下数据集:
- x1 和 x2 是特征。
- y 是目标变量。
- group 表示分组标准。
查看这个 👇

首先,我们从sklearn导入GroupShuffleSplit并实例化该对象。
接下来,该对象的split()方法让我们执行分组拆分。它返回一个生成器,我们可以解包它以获得以下输出:
- “A”和“C”组中的数据点一起出现在训练集中。
- “B”组中的数据点一起出现在验证/测试集中。
查看这个👇

几天后,Andrew Ng 的团队在使用相同的组随机分割策略后更新了论文,以确保相同的患者不会同时出现在训练集和验证集中。
👉 轮到你了:你之前遇到过这个问题吗?

11.85K
热门
排行
收藏

