2017-07-19 693 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 –