如何在 R 中正确使用 plsr()?
How to properly use plsr() in R?
我正在学习 plsr
R 并遇到了几个让我感到困惑的不同例子。我已经通过以下两种方式看到了两种安装和找到最佳组件数量的方法。我只想知道哪一个是正确的方法和首选?
1) 假设我们有一个名为 data 的数据框,它分为训练数据 data.train
和测试数据 data.test
。然后plsr拟合为
plsr.fit = plsr(formula, data = data.train, validation = "CV", scale = TRUE)
summary(plsr.fit)
然后根据最小的 CV
值得到 ncomp
值。
2) 没有任何数据分割,简单地将模型拟合到完整数据中
plsr(formula, data = data, validation = "CV", scale = TRUE)
summary(plsr.fit)
然后根据最小的 CV
值得到 ncomp
值。
我感到困惑的部分是第一种方法。由于 validation = "CV"
已经包含并且它会自动应用 10 倍 CV,为什么模型适合训练数据,而不是完整数据?在这种情况下,训练数据不会再次分为训练数据和测试数据,并自动应用 10 折交叉验证吗?
当您 运行 交叉验证时,您仍然适合您正在使用的数据集。除非将模型与从未见过的数据进行比较,否则无法真正测试模型的准确性。这就是为什么您通常将数据分成大约 80% 用于 "training"(包括交叉验证或您选择的任何其他方法)和 20% 用于 "testing" after cross -验证。
我正在学习 plsr
R 并遇到了几个让我感到困惑的不同例子。我已经通过以下两种方式看到了两种安装和找到最佳组件数量的方法。我只想知道哪一个是正确的方法和首选?
1) 假设我们有一个名为 data 的数据框,它分为训练数据 data.train
和测试数据 data.test
。然后plsr拟合为
plsr.fit = plsr(formula, data = data.train, validation = "CV", scale = TRUE)
summary(plsr.fit)
然后根据最小的 CV
值得到 ncomp
值。
2) 没有任何数据分割,简单地将模型拟合到完整数据中
plsr(formula, data = data, validation = "CV", scale = TRUE)
summary(plsr.fit)
然后根据最小的 CV
值得到 ncomp
值。
我感到困惑的部分是第一种方法。由于 validation = "CV"
已经包含并且它会自动应用 10 倍 CV,为什么模型适合训练数据,而不是完整数据?在这种情况下,训练数据不会再次分为训练数据和测试数据,并自动应用 10 折交叉验证吗?
当您 运行 交叉验证时,您仍然适合您正在使用的数据集。除非将模型与从未见过的数据进行比较,否则无法真正测试模型的准确性。这就是为什么您通常将数据分成大约 80% 用于 "training"(包括交叉验证或您选择的任何其他方法)和 20% 用于 "testing" after cross -验证。