主成分回歸(PCR)和最小二乘回歸(PLS)


主成分回歸(principal components regression, PCR

#使用 p1s 庫中的 pcr ()渴數實現主成分回歸 (PCR)

#install.packages("pls")

library(pls)

set.seed(2)

pcr.fit=pcr(Salary~., data=Hitters,scale=TRUE,validation="CV") #設最 validation = "CV" 可以使得pcr ()函數使用十折的交叉驗證計算每個可能的主成分個數M所對應的交叉驗證誤差。

summary(pcr.fit)

 

validationplot(pcr.fit,val.type="MSEP") #使用 validatìonplot ()函數作出交叉驗證得分的圖像,MSE是均方誤差

 

結果分析:從程序結果可以看到,當使用 M=16 個成分時,交叉驗證誤差最小。這個取值稍小於M=19 , M=19PCR 模型相當於簡單最小二乘估計,因為此時在 PC模型使用了所有的成分,並沒有降低數據的維度。 且是,從圖像可以看到當模型中只納入一個成分時,交叉驗證誤基本相同。這表明使用僅納入少量成分的模型就足夠了。

set.seed(1)

pcr.fit=pcr(Salary~., data=Hitters,subset=train,scale=TRUE, validation="CV") #在訓練集上使用 PCR,並評價該方法在測試集上的使用情況。

validationplot(pcr.fit,val.type="MSEP")

 

結果分析:當使用M=7個成分時,交叉驗證誤差最小。

pcr.pred=predict(pcr.fit,x[test,],ncomp=7)

mean((pcr.pred-y.test)^2) #計算測試集MSE

 

pcr.fit=pcr(y~x,scale=TRUE,ncomp=7) #在整個數據集上使用交叉驗證選擇出的成分個數M=7擬合PCR 模型。

summary(pcr.fit)

 

偏最小二乘回歸(partial least squares,PLS)

#使用 plsr ()函數可以擬合偏最小二乘回歸模型,該函數也在pls庫中,其句法與pcr () 函數的句法相似。

set.seed(1)

pls.fit=plsr(Salary~., data=Hitters,subset=train,scale=TRUE, validation="CV")

summary(pls.fit)

 

validationplot(pls.fit,val.type="MSEP")

 

結果分析:當使用M=2個成分時,交叉驗證誤差最小。

pls.pred=predict(pls.fit,x[test,],ncomp=2)

mean((pls.pred-y.test)^2)

 

pls.fit=plsr(Salary~., data=Hitters,scale=TRUE,ncomp=2) #使用了交叉驗證選取的 M=2 個成分在整個數據集上建立 PLS 模型。

summary(pls.fit)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM