2017-07-19 689 views
0

我在R中学习plsr,遇到了几个不同的例子,这些例子让我感到困惑。我看到了以下两种方法拟合和找到最佳组件的两种方法。我只想知道哪一种是正确的方式,并且首选?如何在R中正确使用plsr()?

1)假设我们有一个称为数据的数据帧,它被分成列车数据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倍简历,为什么该模型适合训练数据而不是完整数据?是不是在这种情况下,训练数据会再次分成训练和测试数据,并自动应用10倍交叉验证?

+0

“plsr”是您定义的函数,还是来自程序包? – bouncyball

+0

不是,它是内置(偏最小二乘回归)函数,它在'pls'库下。 –

回答

2

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

+0

我想我明白了。谢谢@Matt –