如何在R中正确使用plsr()?

时间:2017-07-19 13:38:46

标签: r cross-validation

我在R中学习plsr并遇到几个让我困惑的不同例子。我已经看到了两种方法,通过以下两种方式拟合和找到最佳数量的组件。我只是想知道哪一种是正确的方式而是首选的?

1)假设我们有一个名为data的数据框,它被分成训练数据data.train和测试数据data.test。然后plsr适合

plsr.fit = plsr(formula, data = data.train, validation = "CV", scale = TRUE)
summary(plsr.fit)

然后根据最小ncomp值获取CV值。

2)没有任何数据拆分,只需将模型拟合为完整数据

plsr(formula, data = data, validation = "CV", scale = TRUE)
summary(plsr.fit)

然后根据最小ncomp值获取CV值。

我感到困惑的部分是第一种方法。由于已经包含validation = "CV"并且它会自动应用10倍CV,为什么模型适合培训数据而不是完整数据?是不是在这种情况下,列车数据将再次分成训练和测试数据并自动应用10倍交叉验证?

1 个答案:

答案 0 :(得分:2)

当您运行交叉验证时,您仍然适合您正在使用的数据集。除非将它与未曾见过的数据进行比较,否则无法真正测试模型的准确性。这就是为什么你通常将数据分成大约80%用于“培训”(包括交叉验证或你选择的任何其他方法)和20%用于在交叉验证后“测试”