MATLAB偏最小二乘回歸(PLSR)和主成分回歸(PCR)分析光譜數據|附代碼數據

2023-06-13     tecdat拓端

原標題:MATLAB偏最小二乘回歸(PLSR)和主成分回歸(PCR)分析光譜數據|附代碼數據

全文連結:http://tecdat.cn/?p=2655

最近我們被客戶要求撰寫關於偏最小二乘回歸(PLSR)和主成分回歸(PCR)的研究報告,包括一些圖形和統計輸出。

此示例顯示如何在matlab中應用偏最小二乘回歸(PLSR)和主成分回歸(PCR),並討論這兩種方法的有效性

當存在大量預測變量時,PLSR和PCR都是對因變量建模的方法,並且這些預測變量高度相關或甚至共線性。兩種方法都將新的預測變量(稱為成分)構建為原始預測變量的線性組合,但它們以不同的方式構造這些成分。PCR創建成分來解釋預測變量中觀察到的變異性,而根本不考慮因變量。另一方面,PLSR確實將因變量考慮在內,因此通常會導致模型能夠使用更少的成分來適應因變量。

加載數據

加載包括401個波長的60個汽油樣品的光譜強度及其辛烷值的數據集。

set(gcf,'DefaultAxesColorOrder',jet(60));xlabel('Wavelt Inde'); ylabel('Oct'); axis('tiht');grid on

點擊標題查閱往期內容

Matlab中的偏最小二乘法(PLS)回歸模型,離群點檢測和變量選擇

左右滑動查看更多

01

02

03

04

使用兩個擬合數據

使PLSR模型擬合10個PLS成分和一個因變量。

為了充分擬合數據,可能需要十個成分,但可以使用此擬合的診斷來選擇具有更少成分的更簡單模型。例如,選擇成分數量的一種快速方法是將因變量中解釋的方差百分比繪製為成分數量的函數。

在實踐中,在選擇成分數量時可能需要更加謹慎。例如,交叉驗證是一種廣泛使用的方法,稍後將在本示例中進行說明。目前,上圖顯示具有兩個成分的PLSR解釋了觀察到的大部分方差y。計算雙組分模型的擬合因變量。

接下來,擬合具有兩個主要成分的PCR模型。第一步是X使用該pca函數執行主成分分析,並保留兩個主成分。然後,PCR只是這兩個成分的因變量的線性回歸。當變量具有非常不同的可變性時,通常首先通過其標準偏差來規範每個變量。

從某種意義上說,上圖中的比較並不合理 - 通過觀察雙組分PLSR模型預測因變量的程度來選擇成分數(兩個),並且沒有說明為什麼PCR模型應該限制相同數量的成分。然而,使用相同數量的成分,PLSR做得更好。實際上,觀察上圖中擬合值的水平分布,使用兩個分量的PCR幾乎不比使用常數模型好。回歸的r方值證實了這一點。

比較兩種模型的預測能力的另一種方法是在兩種情況下將因變量繪製成兩個預測變量。

如果不能以交互方式旋轉圖形,有點難以看到,但上面的PLSR圖顯示了緊密分散在平面上的點。另一方面,下面的PCR圖顯示點幾乎沒有線性關係。

請注意,儘管兩個PLS成分是觀察到的更好的預測因子,但下圖顯示它們解釋的方差比例比PCR中使用的前兩個主成分少。

PCR曲線一致性較高的事實表明,為什麼使用兩種成分的PCR相對於PLSR在擬合時表現很差。PCR構建成分以便最好地解釋X,因此,前兩個成分忽略了數據擬合中觀察到的重要信息y。

擬合更多成分

隨著在PCR中添加更多成分,它必然會更好地擬合原始數據y,這僅僅是因為在某些時候,大多數重要的預測信息X將存在於主要成分中。例如,使用10個成分時,兩種方法的殘差遠小於兩個成分的殘差。

交叉驗證

在預測未來變量的觀察結果時,選擇成分數量以減少預期誤差通常很有用。簡單地使用大量成分將很好地擬合當前觀察到的數據,但這是一種導致過度擬合的策略。過於擬合當前數據會導致模型不能很好地推廣到其他數據,並對預期誤差給出過度樂觀的估計。

交叉驗證是一種更加統計上合理的方法,用於選擇PLSR或PCR中的成分數量。它通過不重複使用相同的數據來擬合模型和估計預測誤差來避免過度擬合數據。因此,預測誤差的估計不會樂觀地向下偏差。

pls可以選擇通過交叉驗證來估計均方預測誤差(MSEP),在這種情況下使用10倍CV。

plsreg(X,y,10,'CV',10);

對於PCR,crossval結合用於計算PCR的平方誤差之和,可以再次使用10倍交叉驗證來估計MSEP。

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載荷選擇了相同的變量。其他數據可能並非如此。

有問題歡迎下方留言!

點擊文末 「閱讀原文」

獲取全文完整資料。

本文選自《偏最小二乘回歸(PLSR)和主成分回歸(PCR)分析光譜數據》。

點擊標題查閱往期內容

R語言實現偏最小二乘回歸法 partial least squares (PLS)回歸

Matlab中的偏最小二乘法(PLS)回歸模型,離群點檢測和變量選擇

R語言實現偏最小二乘回歸法 partial least squares (PLS)回歸

R語言中的block Gibbs吉布斯採樣貝葉斯多元線性回歸R語言Lasso回歸模型變量選擇和糖尿病發展預測模型

R語言實現貝葉斯分位數回歸、lasso和自適應lasso貝葉斯分位數回歸分析

Python貝葉斯回歸分析住房負擔能力數據集

Python用PyMC3實現貝葉斯線性回歸模型

R語言區間數據回歸分析

R語言用LOESS(局部加權回歸)季節趨勢分解(STL)進行時間序列異常檢測

PYTHON用時變馬爾可夫區制轉換(MRS)自回歸模型分析經濟時間序列

R語言隨機森林RandomForest、邏輯回歸Logisitc預測心臟病數據和可視化分析

基於R語言實現LASSO回歸分析

Python用PyMC3實現貝葉斯線性回歸模型

使用R語言進行多項式回歸、非線性回歸模型曲線擬合

R語言中的偏最小二乘回歸PLS-DAR語言生態學建模:增強回歸樹(BRT)預測短鰭鰻生存分布和影響因素

R語言實現偏最小二乘回歸法 partial least squares (PLS)回歸

Matlab中的偏最小二乘法(PLS)回歸模型,離群點檢測和變量選擇

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

R語言如何找到患者數據中具有差異的指標?(PLS—DA分析) R語言中的block Gibbs吉布斯採樣貝葉斯多元線性回歸R語言Lasso回歸模型變量選擇和糖尿病發展預測模型

R語言實現貝葉斯分位數回歸、lasso和自適應lasso貝葉斯分位數回歸分析

Python貝葉斯回歸分析住房負擔能力數據集

Python用PyMC3實現貝葉斯線性回歸模型

R語言區間數據回歸分析

R語言用LOESS(局部加權回歸)季節趨勢分解(STL)進行時間序列異常檢測

PYTHON用時變馬爾可夫區制轉換(MRS)自回歸模型分析經濟時間序列

R語言隨機森林RandomForest、邏輯回歸Logisitc預測心臟病數據和可視化分析

基於R語言實現LASSO回歸分析

Python用PyMC3實現貝葉斯線性回歸模型

使用R語言進行多項式回歸、非線性回歸模型曲線擬合

R語言中的偏最小二乘回歸PLS-DA

R語言生態學建模:增強回歸樹(BRT)預測短鰭鰻生存分布和影響因素

R語言生態學建模:增強回歸樹(BRT)預測短鰭鰻生存分布和影響因素

R語言實現偏最小二乘回歸法 partial least squares (PLS)回歸

Matlab中的偏最小二乘法(PLS)回歸模型,離群點檢測和變量選擇

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

R語言如何找到患者數據中具有差異的指標?(PLS—DA分析)

文章來源: https://twgreatdaily.com/zh-sg/dff8d7ab2a5d47852d1e3c69c541c0ea.html