测试/训练拆分 - 是否总是必要的(监督学习)?

数据挖掘 机器学习 数据集 机器学习模型
2022-03-06 01:21:15

我目前正在研究我的第一个机器学习模型(Palmer Penguins 数据集)。我将训练 3 个机器学习模型,每个模型都使用不同的模型架构(决策树、随机森林和梯度提升),并将它们相互比较。我知道,在我的特殊情况下,如果我想比较三种不同模型的准确性,则需要进行测试/训练拆分。但是,我们是否总是需要将数据集拆分为训练集和测试集?

让我们举一个随机森林算法的例子——我们可以使用 OOB 分数评估我们的模型,并在不执行训练/测试拆分的情况下执行实际测试。由于我们的训练集中已经有一堆实际上不会用于训练的样本,我认为将它们用于测试可能是一个好主意,而不是通过将训练集显式拆分为训练/测试来减少训练集放。我认为当我们有小数据集(例如 Palmer Penguins)时,当我们从训练中丢弃的每个样本都可能对模型性能产生重大影响时,这种方法可能特别有用。

所以这里又是一个问题——测试/训练拆分真的总是必要的吗?为什么它被认为是应该始终执行的事情?

2个回答

是的,当数据难以获得时,OOB 分数会很有帮助。如果您的数据集很小,您可以使用 OOB 来评估模型。

但另一个更好的选择是拆分数据并应用嵌套 cv来评估模型并同时进行超参数调整。这样,即使您的数据集很小,您也将利用整个数据

到目前为止,我还没有遇到仅使用 OOB 分数来构建和评估模型的示例。

如果我错了,请有人纠正我。

干杯!

是的!!!,拥有单独的训练和测试数据很重要,因为如果我们不这样做(如果我们没有单独的训练和测试数据),就有可能过度拟合。

一般来说,在任何机器学习任务中,我们处理的数据都是群体的一个子集(我们无法访问的更大的数据集!!!)。所以,如果我们没有测试数据,那么这是极不可能的来判断模型是否在看不见的数据上工作,因此我们不能将其部署为一般用途(最后我们需要部署模型以供实际使用)。

我一直是机器学习模型,并且已经看到有时模型在训练数据上运行良好 -95% 到 100% 的准确度,但是当在测试数据上测试相同的模型时,它显示出 45%-60% 的准确度,这是非常高的低的!!!。

希望我已经清除了您的疑问...随时联系我以获取进一步的查询...