如何在经过训练的SVD模型上验证测试集?

时间:2019-05-23 10:36:07

标签: python machine-learning artificial-intelligence svd

我正在关注有关使用奇异值分解(SVD)的Python电影推荐中的矩阵分解的教程:  here

使用 SVD ,使用SVD将数据集近似为三个分量:

MainThread

  • 因此,您从左侧(M)转到三个部分,然后再次返回,
  • 现在您可以使用大约
  • M作为推荐矩阵。

现在,我想在此矩阵上使用训练/测试验证集,因为您需要找到M的最佳k(数字)近似值。

如何将一个单独的测试集应用到经过训练的模型上,以获得对看不见的测试集的预测? 数学/算法是什么? 谢谢

1 个答案:

答案 0 :(得分:1)

适合任何机器学习模型的标准过程如下:

  • 您将数据集随机分为三个部分:训练集(数据的60%),验证集(数据的20%),测试集(20%)。
  • 您仅使用 训练数据来训练任何模型
  • 您使用验证集选择超参数并在不同模型中选择最佳参数
  • 您可以在测试集上评估模型,以了解模型将如何在看不见的新数据上运行

因此,您应执行以下步骤:

  • 将数据集分为这三个部分(如果您使用的是sklearn,则可以像here一样使用train_test_split
  • 您以不同的k值运行SVD,并在验证集上评估这些近似值的性能,然后选择具有最低RMSE值的k(如本教程所述)
  • 将所选模型应用于测试集,以查看其在看不见的数据上的表现

如果您的数据集较小,而不是拆分为3个数据集,则可以拆分以进行训练和测试,并使用cross validation来微调k