验证:数据拆分为训练数据集和测试数据集

机器算法验证 交叉验证
2022-04-09 19:50:13

我通过在测试数据集上进行测试来天真地验证我的二项式 logit 模型。我将可用数据(~2000 行)随机划分为训练(~1500)和验证(~500)数据集。

我现在在另一个线程 (Frank Harrell) 中阅读了一篇文章,这让我质疑我的方法:

除非您有超过 15,000 个观察值,否则数据拆分不是很可靠。换句话说,如果您再次拆分数据,准确度指标将与您在第一次拆分时获得的差异太大。

这种担忧有多严重,有什么办法可以解决?OP 谈到“重新采样”,但不确定它是如何在这里进行验证的。

编辑:根据@Bernhard 下面的评论添加上下文:

比较逻辑回归模型

1个回答

由于 Harrell 提到的问题(不可靠的袋外估计),您在上面提出的拆分样本验证在许多领域变得不那么流行了。我知道 Harrell 在他的教科书中提到了这一点,但其他参考资料是 Steyerberg “Clinical Prediction Models” p301,James 等人 “An Introduction to Statistical Learning” p175。

在生物医学领域,自举重采样因此成为标准。这是在 Harrell 的 rms 包中实现的,因此非常容易实现。但是您真的可以使用任何其他重采样方法,bootstap 刚刚变得流行,因为 Steyerberg 的一篇文章表明它是最有效的重采样方法(“预测模型的内部验证:逻辑回归分析的某些程序的效率”) .

值得一提的是,rms 包的好处是它可以轻松地让您在引导程序中包含一些变量选择(内置逐步选择选项)。对于大多数商业软件包来说,这可能很难实现。

我自己的感觉是差异被过分强调了。无论使用何种方法,我通常都会得到非常可靠/一致的结果。对于大样本量,差异实际上是不存在的。

引导验证 - 以及其他重采样方法 - 也很容易出错。通常只有一些模型构建阶段包含在 bootstrap 中,给出了不准确的估计。另一方面,很难搞乱拆分样本验证。鉴于拆分采样的表面有效性——我知道你没有搞砸——我更喜欢拆分样本,除非它是一个非常小的数据集。在许多情况下,模型构建过程也非常复杂,以至于不能真正包含在重采样方法中。

但是,如果您想在生物医学期刊上发表文章,并且您没有使用医疗保险规模的数据库,那么您将需要使用重采样方法 - 可能是自举。如果数据集很大,您可能仍然可以使用 k-fold 发布并节省一些处理时间。