【问题标题】:How to properly use plsr() in R?如何在 R 中正确使用 plsr()?
【发布时间】:2017-07-19 21:45:28
【问题描述】:

我正在学习 plsrin 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 倍交叉验证?

【问题讨论】:

  • plsr 是您定义的函数还是来自包?
  • 没有。它是pls库下的内置(偏最小二乘回归)函数。

标签: r cross-validation


【解决方案1】:

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

【讨论】:

  • 我想我明白了。谢谢@Matt
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-14
  • 2011-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-25
相关资源
最近更新 更多