通过混淆矩阵计算的测试和评分结果之间的差异(准确性、敏感性和特异性)

数据挖掘 机器学习 橘子
2021-09-21 15:34:31

我们正在使用 Orange 并且有 2 个文件(培训和测试)。我们应用不同的学习器(kNN、AdaBoost ...)并获得评估结果。但是我们对“测试和分数”窗口中的一些选项有一些疑问。

在此处输入图像描述 在此处输入图像描述

当我们应用“对训练数据进行测试”选项时,它是否会为每个学习者生成一个模型,然后将其应用于训练人群?

“测试数据测试”也是如此,它是否使用训练数据生成模型,并且此选项将其应用于测试人群?

因为当我们得到混淆矩阵并计算准确性、敏感性和特异性时,这些值与评估结果中的值不同。

2个回答

训练数据测试使用整个数据集进行训练,然后进行测试。这种方法实际上总是给出错误的结果。

所以,是的,在这种情况下,模型是在同一个数据集上学习和测试的。在大多数情况下,以这种方式学习的模型会过度拟合,并且在看不见的数据(例如,您的测试数据集)上表现不佳。

对测试数据进行测试:上述方法仅使用来自 Data 信号的数据。要输入带有测试示例的另一个数据集(例如来自另一个文件或在另一个小部件中选择的某些数据),我们在通信通道中选择分离测试数据信号并选择测试数据测试。

所以,第二个问题的答案也是“是的”:模型是Training在你的图表中标记的数据上训练的,然后在Testing数据上进行测试。数据的“质量”及其在训练和测试集中的分割方式将影响模型的性能。

关于“测试和分数”的橙色文档

对火车数据进行测试会给您带来很好的结果,但是在针对现实进行测试时,大多数情况下它会失败,因为对火车数据的测试会对火车数据本身进行测试并导致过度拟合。

您不应该依赖对火车数据的测试。为了使您的模型对看不见的数据具有鲁棒性,我建议使用交叉验证技术,例如 k-fold。它将大部分方差合并到您的模型中,因此实际上,模型能够按预期预测结果。与对训练数据的测试相比,准确性会略微降低,但它会使模型更加健壮和稳定。