k折交叉验证后如何评估最终模型

机器算法验证 交叉验证
2022-02-04 19:59:53

正如这个问题及其答案所指出的,k 折交叉验证 (CV) 用于模型选择,例如在线性回归和神经网络之间进行选择。还建议在决定使用哪种模型后,应使用整个数据集训练最终预测器。我的问题是:我们如何评估最终的预测器?仅使用在 k 倍 CV 期间获得的k精度的平均值就足够了吗?

2个回答

在对数据的每一折 (90%) 进行训练时,您将对剩余的 10% 进行预测。使用这 10%,您将计算一个错误度量(例如,RMSE)。这为您留下:10 个 RMSE 值和 10 组相应的预测。有两件事可以做到这些结果:

  1. 检查 10 个 RMSE 值的平均值和标准差。k-fold 对您的数据进行随机分区,并且每个折叠的错误不应相差太大。如果是这样,则不能期望您的模型(及其特征、超参数等)在测试集上产生稳定的预测。

  2. 将您的 10 组预测聚合为 1 组预测。例如,如果您的训练集包含 1,000 个数据点,您将有 10 组 100 个预测 (10*100 = 1000)。当您将它们堆叠到 1 个向量中时,您现在会得到 1000 个预测:原始训练集中的每个观察值都有 1 个。这些被称为折叠预测。有了这些,您可以一次性计算整个训练集的 RMSE,如rmse = compute_rmse(oof_predictions, y_train)这可能是评估最终预测变量的最简洁的方法。

取k个准确度分数的平均值是宏观平均值。取 1000 个单独预测的平均值(如 cavaunpeu 的回答中所述)是一个微观平均值。两者都是合法的并且应该彼此大致相似,因此您可以使用更方便的任何一个 - 或者为了完整性而报告两者。