我已经在回归中使用了我的整个数据集,我不应该将其用作预测模型吗?

机器算法验证 多重回归 造型 火车 训练测试拆分
2022-03-16 06:01:58

在我工作的医院,我们正在写一篇关于患者的哪些变量可以预测他们是否会回来进行随访的论文。我们包括了诸如年龄、性别、从他们家到医院的距离、受伤机制等变量。我们有大约 600 名患者要检查,因此我们运行了一个多元逻辑回归,结果是返回是/否,我们对数据集中的每个人(我们医院有这种情况的每个人)都这样做了。

好吧,我们写了这篇论文,然后有人决定我们应该尝试创建一个在线预测工具。你可以输入一个病人的变量,它会根据我们之前的回归模型返回关于病人是否会回来的猜测。为了帮助我创建一个在线预测工具,我使用 R 和 Shiny使用本教程,我注意到作者将他的数据分成训练和测试集

问题是:我从来没有这样做过。阅读诸如此类的评论我想我理解为什么有人会拆分他们的数据,但我现在的问题是:

我可以/应该怎么做?

  • 我已经使用了我所有的数据。是否最好删除我所做的一切,返回,拆分数据并重新开始?(我们没有发表论文或任何东西)
  • 我应该继续吗?可以为不拆分数据集提出论据吗?
4个回答

在这么少的情况下,训练/测试拆分没有帮助然后,您将失去训练模型的能力和测试它的精度。

你到目前为止所做的一切都很好。您可以通过在数据的多个引导样本上重复建模并评估这些模型在完整数据集上的性能来继续估计模型在预测方面的效果。这是评估建模过程性能的公认方法。

一个警告:“他们是否会回来进行后续访问”可能不是一个全有或全无的结果。如果您故意将考虑限制在固定时间段(例如 1 年)内返回,那可能没问题,但一般来说,您可能还对他们返回的时间感兴趣,并且您可能还想利用那些没有返回的人提供的信息尚未在该固定时间段内进行跟踪。对于这类事情,您需要使用生存模型而不是逻辑回归。

在我看来,如果可能的话,最好的做法是收集更多数据,然后使用这些数据检查您当前的模型以及您尝试过的前 5 个模型。

继续您引用的评论中的孩子学习乘法示例 - 您的每个模型都是不同的孩子。您设置了一个程序,该程序根据孩子对他们已经看到的数据执行乘法的能力进行排名。这个程序偏向于那些记住表格的人。最能学会如何乘法的孩子可能会排在(例如)第三位,甚至更低。因此,选择在您目前拥有的数据之外表现良好的模型的唯一方法是使用一组新数据(合适的命名为“测试”数据)对它们进行测试。

如果无法获得更多数据,您始终可以进行交叉验证。但是在这里你将不得不重新估计你的模型。您可以通过查看此站点上的相关答案来了解有关交叉验证的更多信息,但其想法是在仍然使用所有训练数据的同时模拟训练/测试拆分。

如果您甚至无法调整原始分析,那么最后最好的办法可能是选择使用最少变量的性能足够好的模型。例如,如果一个模型使用 30 个变量达到 76% 的准确率,而另一个模型仅使用 10 个变量达到 72% - 较小的模型不太可能“记住”数据。因此,我们希望该模型在新患者身上表现更好。

从十几个变量开始,然后多次尝试哪种模型效果最好,但二进制输出上只有 600 个数据点,您有严重的过度拟合风险。那是您的模型在您拥有的数据上运行良好,但它对新患者的预测能力可能不是很好。

您可以通过拆分数据来了解您的特定数据存在多少问题。我不会扔掉你所拥有的,但如果你在 R 中编写了这个程序,那么拆分数据并检查你是否有过拟合应该相对容易。

因此,将数据随机分为训练中的 500 名患者和测试中的 100 名患者,然后查看以下内容:

  • 这组 500 名患者的最佳模型与整组 600 名患者的最佳模型相同吗?
  • 它在测试用例上的表现比在训练用例上差多少?
  • 相对于仅使用作为最佳预测变量的单个变量的模型,您的复杂模型要好多少?

用不同的随机选择重复此操作,分成训练和测试。目标是了解您的模型是否仅适合您现有的数据,或者它是否实际上是预测未来患者行为的好工具。

我不同意这样的共识。我认为不是,因为我可以构建一个比你更好的模型:一个记住条目的哈希表

性能评估

从数据创建模型很好,这是第一步。但这本身是没有价值的:我们需要评估模型的性能(否则,随机模型可能会更好)。

为了评估模型的性能(并将其与随机猜测区分开来),我们需要一些数据。

过拟合

现在您可以使用与评估性能相同的数据。但这可能会导致偏差:您的模型可能过度拟合数据,并且在极端情况下,“记住”(哈希表)数据。备注:对于逻辑回归等功能较弱的模型,这确实不是问题)

低统计:交叉验证

如前所述,出路是使用不会真正减少使用的样本量的重采样方法:这可以通过使用引导方法或交叉验证来完成。它们有自己的优点和缺点,但在大多数实际情况下它们往往表现相似。

*我建议您进行交叉验证以获得估计,但是,任何技术都可以。

为什么你需要这个

对于您声称已开发模型的论文,提供模型性能的无偏估计似乎至关重要(为了完整性:或非常强大的理论动机)。

我知道这意味着您需要重做一些事情,但实际上应该不会很多。并且可能与更了解它的人联系也是值得的:如果您说您只是尝试了一下,那么您可能会遇到更多的陷阱(以及可能的改进)。数据科学家现在很流行;)