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