此示例顯示如何在matlab中應用偏最小二乘迴歸(PLSR)和主成分迴歸(PCR),並討論這兩種方法的有效性。當存在大量預測變量時,PLSR和PCR都是對響應變量建模的方法,而且這些預測變量高度相關或甚至共線。兩種方法都將新的預測變量(稱爲組件)構建爲原始預測變量的線性組合,但它們以不一樣的方式構造這些組件。PCR建立組件來解釋預測變量中觀察到的變異性,而根本不考慮響應變量。另外一方面,PLSR確實將響應變量考慮在內,所以一般會致使模型可以使用更少的組件來適應響應變量。函數
加載包括401個波長的60個汽油樣品的光譜強度及其辛烷值的數據集。spa
使用該plsregress功能使PLSR模型適用於10個PLS組件和一個響應。blog
爲了充分擬合數據,可能須要十個組件,但可使用此擬合的診斷來選擇具備更少組件的更簡單模型。例如,選擇組件數量的一種快速方法是將響應變量中解釋的方差百分比繪製爲組件數量的函數。rem
在實踐中,在選擇組件數量時可能須要更加謹慎。例如,交叉驗證是一種普遍使用的方法,稍後將在本示例中進行說明。目前,上圖顯示具備兩個成分的PLSR解釋了觀察到的大部分方差y。計算雙組分模型的擬合響應值。get
接下來,擬合具備兩個主要組分的PCR模型。第一步是X使用該pca函數執行主成分分析,並保留兩個主成分。而後,PCR只是這兩個組分的響應變量的線性迴歸。當變量具備很是不一樣的可變性時,一般首先經過其標準誤差來規範化每一個變量是有意義的,可是,這裏沒有作到。it
從某種意義上說,上圖中的比較並不合理 - 經過觀察雙組分PLSR模型預測響應的程度來選擇組分數(兩個),而且沒有理由爲何PCR模型應該限制在相同數量的組件。然而,使用相同數量的組件,PLSR在安裝方面作得更好y。實際上,觀察上圖中擬合值的水平散射,使用兩個份量的PCR幾乎不比使用常數模型好。兩次迴歸的r平方值證明了這一點。class
比較兩種模型的預測能力的另外一種方法是在兩種狀況下將響應變量繪製成兩個預測變量。變量
若是不能以交互方式旋轉圖形,有點難以看到,但上面的PLSR圖顯示了一個緊密分散在平面上的點。另外一方面,下面的PCR圖顯示了點雲,幾乎沒有線性關係的指示。方法
請注意,儘管兩個PLS組分是觀察到的更好的預測因子y,但下圖顯示它們解釋了觀察到的差別X比PCR中使用的前兩個主要組分少。im
PCR曲線一致性較高的事實代表,爲何使用兩種成分的PCR相對於PLSR在擬合時表現如此糟糕y。PCR構建組件以便最好地解釋X,所以,前兩個組件忽略了數據中適合觀察到的重要信息y。
適合更多組件
隨着在PCR中添加更多組件,它必然會更好地擬合原始數據y,這僅僅是由於在某些時候,大多數重要的預測信息X將存在於主要組件中。例如,下圖顯示,使用10個組件時,兩種方法的殘差差別遠小於兩個組件的殘差差別。
在預測將來對預測變量的觀察結果時,選擇組件數量以減小預期偏差一般頗有用。簡單地使用大量組件將很好地擬合當前觀察到的數據,但這是一種致使過分擬合的策略。過於擬合當前數據會致使模型不能很好地推廣到其餘數據,並對預期偏差給出過分樂觀的估計。
交叉驗證是一種更加統計上合理的方法,用於選擇PLSR或PCR中的組分數量。它經過不重複使用相同的數據來適應模型和估計預測偏差來避免過分擬合數據。所以,預測偏差的估計不會樂觀地向下誤差。
plsregress 能夠選擇經過交叉驗證來估計均方預測偏差(MSEP),在這種狀況下使用10倍CV。
[X1,Y1,Xs,Ys,β,pctVar,PLSmsep] = plsregress(X,y,10,'CV',10);
對於PCR,crossval結合用於計算PCR的平方偏差之和的簡單函數,能夠再次使用10倍交叉驗證來估計MSEP。
PCRmsep = sum(crossval(@ pcrsse,X,y,'KFold',10),1)/ n;
PLSR的MSEP曲線代表兩個或三個組件的工做盡量好。另外一方面,PCR須要四個份量才能得到相同的預測精度。
事實上,PCR中的第二個組成部分會增長模型的預測偏差,這代表該組成部分中包含的預測變量的組合與其沒有很強的相關性y。再次,這是由於PCR構建組件來解釋變異X,而不是y。
所以,若是PCR須要四個組件來得到與具備三個組件的PLSR相同的預測精度,那麼PLSR模型是否更加簡約?這取決於您考慮的模型的哪一個方面。
PLS權重是定義PLS份量的原始變量的線性組合,即,它們描述了PLSR中的每一個份量依賴於原始變量以及在什麼方向上的強度。
相似地,PCA加載描述了PCR中每一個組分依賴於原始變量的強度。
對於PLSR或PCR,能夠經過檢查每一個組件最重要的變量來爲每一個組件提供物理上有意義的解釋。例如,利用這些光譜數據,能夠根據汽油中存在的化合物解釋強度峯值,而後觀察特定組分的重量挑選出少許這些化合物。從這個角度來看,更少的組件更易於解釋,而且因爲PLSR一般須要更少的組件來充分預測響應,所以會致使更簡約的模型。
另外一方面,PLSR和PCR都致使每一個原始預測變量的一個迴歸係數加上截距。從這個意義上講,二者都不是更簡約,由於不管使用多少組件,兩種模型都依賴於全部預測變量。更具體地,對於這些數據,兩個模型都須要401個光譜強度值以進行預測。
然而,最終目標多是將原始變量集減小到仍然可以準確預測響應的較小子集。例如,可使用PLS權重或PCA加載來僅選擇對每一個組件貢獻最大的那些變量。如前所示,來自PCR模型擬合的一些組件可主要用於描述預測變量的變化,而且可包括與響應不強相關的變量的大權重。所以,PCR能夠致使保留預測沒必要要的變量。
對於本例中使用的數據,PLSR和PCR所需的組件數量之間的差別不是很大,PLS權重和PCA負載彷佛選擇了相同的變量。其餘數據可能並不是如此。
有問題歡迎下方留言!