检查顾问提供的模型的准确性

数据挖掘 机器学习 预测建模 交叉验证 准确性
2021-10-11 00:24:43

我的公司最近聘请了一家咨询公司来开发一个预测模型来检测有缺陷的作品。

我知道有很多方法可以验证模型,例如使用 k-fold 交叉验证,我相信顾问公司会在将模型提交给我们之前进行验证。

但是,在雇主方面,我如何检查顾问公司开发的模型的准确性?

有人建议我可以把2000-2015的数据交给咨询公司,2016的数据留给我们自己查。但是,在 2016 年数据上具有良好准确性的模型并不意味着它在未来具有良好的预测能力。在我看来,保留 2016 年的数据进行检查似乎就像添加了一个额外的测试集进行验证,在我看来,这是不必要的,因为我已经进行了“k-fold”交叉验证。

有人可以建议雇主可以做些什么来检查顾问的模型吗?

3个回答

交叉验证可用于参数调整或模型选择,但它不评估模型的性能。

在开发模型时,您在训练、验证和测试之间划分数据。在最好的情况下,测试只在最后使用一次来对模型进行评分。绝对应该保留 2016 年的数据

如果您提供所有数据,则很容易让模型“背诵”您的预期数据,但它不会很好地推广到未来几年。这是过拟合。唯一知道的方法是在未知数据上测试它,这里,2016

用于衡量模型性能,交叉验证可以衡量的不仅仅是平均准确度,您可以选择您的特征来回答最佳准确度分数

我同意保留 2016 年数据以检查外部机构工作的建议。如果不检查代码,您就无法确定 k 折交叉验证过程是否已正确执行。

使用 2016 年保留集的另一个好处是,您可以查看在过去几年的数据上训练的模型是否在未来几年的数据中运行良好。随着 Y 和 X 之间的真实关系发生变化,新的一年可能会出现概念漂移。在交叉验证中,每个折叠与训练数据集属于同一时间段。

很多人建议保留 2016 年的数据,但作为测试集应该保留什么取决于预测的内容。如果有缺陷的作品不依赖于日期/时间,并且模型中没有使用日期/时间,那么为您的测试保留一个随机样本(至少是日期/时间)可能是有意义的。

如果您有要避免从中推断的特征,则按这些特征进行拆分,例如,如果您的项目有一些常见的“位置”属性,您可能希望按位置标识进行拆分,因为您想使用模型制作新位置的预测(即使您的目标类别与现有位置相关,作为单热特征的位置也不会对新位置有任何预测价值)。

理想情况下,咨询公司将在这里帮助您确定您不想在预测中使用的数据集中的相关性,因为它们可能会影响您在生产中使用模型时想要的泛化。如果识别出任何这样的事情,那么它清楚地表明使用该功能来拆分测试数据。如果没有这个问题,那么你也可以随机拆分。