MATLAB偏最小二乘回歸(PLSR)和主成分回歸(PCR)分析光譜數(shù)據(jù)|附代碼數(shù)據(jù)
全文鏈接:http://tecdat.cn/?p=2655
最近我們被客戶(hù)要求撰寫(xiě)關(guān)于偏最小二乘回歸(PLSR)和主成分回歸(PCR)的研究報(bào)告,包括一些圖形和統(tǒng)計(jì)輸出。
此示例顯示如何在matlab中應(yīng)用偏最小二乘回歸(PLSR)和主成分回歸(PCR),并討論這兩種方法的有效性
當(dāng)存在大量預(yù)測(cè)變量時(shí),PLSR和PCR都是對(duì)因變量建模的方法,并且這些預(yù)測(cè)變量高度相關(guān)或甚至共線性。兩種方法都將新的預(yù)測(cè)變量(稱(chēng)為成分)構(gòu)建為原始預(yù)測(cè)變量的線性組合,但它們以不同的方式構(gòu)造這些成分。PCR創(chuàng)建成分來(lái)解釋預(yù)測(cè)變量中觀察到的變異性,而根本不考慮因變量。另一方面,PLSR確實(shí)將因變量考慮在內(nèi),因此通常會(huì)導(dǎo)致模型能夠使用更少的成分來(lái)適應(yīng)因變量。
加載數(shù)據(jù)
加載包括401個(gè)波長(zhǎng)的60個(gè)汽油樣品的光譜強(qiáng)度及其辛烷值的數(shù)據(jù)集。
set(gcf,'DefaultAxesColorOrder',jet(60));xlabel('Wavelt Inde'); ylabel('Oct'); axis('tiht');grid on

點(diǎn)擊標(biāo)題查閱往期內(nèi)容

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

左右滑動(dòng)查看更多

01

02

03

04

使用兩個(gè)擬合數(shù)據(jù)
使PLSR模型擬合10個(gè)PLS成分和一個(gè)因變量。
為了充分?jǐn)M合數(shù)據(jù),可能需要十個(gè)成分,但可以使用此擬合的診斷來(lái)選擇具有更少成分的更簡(jiǎn)單模型。例如,選擇成分?jǐn)?shù)量的一種快速方法是將因變量中解釋的方差百分比繪制為成分?jǐn)?shù)量的函數(shù)。

在實(shí)踐中,在選擇成分?jǐn)?shù)量時(shí)可能需要更加謹(jǐn)慎。例如,交叉驗(yàn)證是一種廣泛使用的方法,稍后將在本示例中進(jìn)行說(shuō)明。目前,上圖顯示具有兩個(gè)成分的PLSR解釋了觀察到的大部分方差y。計(jì)算雙組分模型的擬合因變量。
接下來(lái),擬合具有兩個(gè)主要成分的PCR模型。第一步是X使用該pca函數(shù)執(zhí)行主成分分析,并保留兩個(gè)主成分。然后,PCR只是這兩個(gè)成分的因變量的線性回歸。當(dāng)變量具有非常不同的可變性時(shí),通常首先通過(guò)其標(biāo)準(zhǔn)偏差來(lái)規(guī)范每個(gè)變量。

從某種意義上說(shuō),上圖中的比較并不合理 - 通過(guò)觀察雙組分PLSR模型預(yù)測(cè)因變量的程度來(lái)選擇成分?jǐn)?shù)(兩個(gè)),并且沒(méi)有說(shuō)明為什么PCR模型應(yīng)該限制相同數(shù)量的成分。然而,使用相同數(shù)量的成分,PLSR做得更好。實(shí)際上,觀察上圖中擬合值的水平分布,使用兩個(gè)分量的PCR幾乎不比使用常數(shù)模型好?;貧w的r方值證實(shí)了這一點(diǎn)。
比較兩種模型的預(yù)測(cè)能力的另一種方法是在兩種情況下將因變量繪制成兩個(gè)預(yù)測(cè)變量。

如果不能以交互方式旋轉(zhuǎn)圖形,有點(diǎn)難以看到,但上面的PLSR圖顯示了緊密分散在平面上的點(diǎn)。另一方面,下面的PCR圖顯示點(diǎn)幾乎沒(méi)有線性關(guān)系。

請(qǐng)注意,盡管兩個(gè)PLS成分是觀察到的更好的預(yù)測(cè)因子,但下圖顯示它們解釋的方差比例比PCR中使用的前兩個(gè)主成分少。

PCR曲線一致性較高的事實(shí)表明,為什么使用兩種成分的PCR相對(duì)于PLSR在擬合時(shí)表現(xiàn)很差。PCR構(gòu)建成分以便最好地解釋X,因此,前兩個(gè)成分忽略了數(shù)據(jù)擬合中觀察到的重要信息y。
擬合更多成分
隨著在PCR中添加更多成分,它必然會(huì)更好地?cái)M合原始數(shù)據(jù)y,這僅僅是因?yàn)樵谀承r(shí)候,大多數(shù)重要的預(yù)測(cè)信息X將存在于主要成分中。例如,使用10個(gè)成分時(shí),兩種方法的殘差遠(yuǎn)小于兩個(gè)成分的殘差。
交叉驗(yàn)證
在預(yù)測(cè)未來(lái)變量的觀察結(jié)果時(shí),選擇成分?jǐn)?shù)量以減少預(yù)期誤差通常很有用。簡(jiǎn)單地使用大量成分將很好地?cái)M合當(dāng)前觀察到的數(shù)據(jù),但這是一種導(dǎo)致過(guò)度擬合的策略。過(guò)于擬合當(dāng)前數(shù)據(jù)會(huì)導(dǎo)致模型不能很好地推廣到其他數(shù)據(jù),并對(duì)預(yù)期誤差給出過(guò)度樂(lè)觀的估計(jì)。
交叉驗(yàn)證是一種更加統(tǒng)計(jì)上合理的方法,用于選擇PLSR或PCR中的成分?jǐn)?shù)量。它通過(guò)不重復(fù)使用相同的數(shù)據(jù)來(lái)擬合模型和估計(jì)預(yù)測(cè)誤差來(lái)避免過(guò)度擬合數(shù)據(jù)。因此,預(yù)測(cè)誤差的估計(jì)不會(huì)樂(lè)觀地向下偏差。
pls可以選擇通過(guò)交叉驗(yàn)證來(lái)估計(jì)均方預(yù)測(cè)誤差(MSEP),在這種情況下使用10倍CV。
plsreg(X,y,10,'CV',10);
對(duì)于PCR,crossval結(jié)合用于計(jì)算PCR的平方誤差之和,可以再次使用10倍交叉驗(yàn)證來(lái)估計(jì)MSEP。
?sum(crossval(@?pcrsse,X,y,'KFold',10),1)/?n;
PLSR的MSEP曲線表明兩個(gè)或三個(gè)成分好。另一方面,PCR需要四個(gè)成分才能獲得相同的預(yù)測(cè)精度。

事實(shí)上,PCR中的第二個(gè)成分會(huì)增加模型的預(yù)測(cè)誤差,這表明該成分中包含的預(yù)測(cè)變量的組合與其沒(méi)有很強(qiáng)的相關(guān)性y。再次,這是因?yàn)镻CR構(gòu)建成分來(lái)解釋X,而不是y。
模型簡(jiǎn)約
因此,如果PCR需要四個(gè)成分來(lái)獲得與具有三個(gè)成分的PLSR相同的預(yù)測(cè)精度,那么PLSR模型是否更加簡(jiǎn)約?這取決于您考慮的模型的哪個(gè)方面。
PLS權(quán)重是定義PLS分量的原始變量的線性組合,即,它們描述了PLSR中的每個(gè)分量依賴(lài)于原始變量的權(quán)重。

類(lèi)似地,PCA載荷描述了PCR中每個(gè)成分依賴(lài)于原始變量的強(qiáng)度。

對(duì)于PLSR或PCR,可以通過(guò)檢查每個(gè)成分最重要的變量來(lái)為每個(gè)成分提供有意義的解釋。例如,利用這些光譜數(shù)據(jù),可以根據(jù)汽油中存在的化合物解釋強(qiáng)度峰值,然后觀察特定成分的權(quán)重挑選出少量這些化合物。從這個(gè)角度來(lái)看,更少的成分更易于解釋?zhuān)⑶矣捎赑LSR通常需要更少的成分來(lái)充分預(yù)測(cè)因變量,因此會(huì)導(dǎo)致更簡(jiǎn)約的模型。
另一方面,PLSR和PCR都導(dǎo)致每個(gè)原始預(yù)測(cè)變量的一個(gè)回歸系數(shù)加上截距。從這個(gè)意義上講,兩者都不是更簡(jiǎn)約,因?yàn)闊o(wú)論使用多少成分,兩種模型都依賴(lài)于所有預(yù)測(cè)變量。更具體地,對(duì)于這些數(shù)據(jù),兩個(gè)模型都需要401個(gè)光譜強(qiáng)度值以進(jìn)行預(yù)測(cè)。
然而,最終目標(biāo)可能是將原始變量集減少到仍然能夠準(zhǔn)確預(yù)測(cè)因變量的較小子集。例如,可以使用PLS權(quán)重或PCA載荷來(lái)僅選擇對(duì)每個(gè)成分貢獻(xiàn)最大的那些變量。如前所示,來(lái)自PCR模型擬合的一些成分可主要用于描述預(yù)測(cè)變量的變化,并且可包括與因變量不強(qiáng)相關(guān)的變量的權(quán)重。因此,PCR會(huì)導(dǎo)致保留預(yù)測(cè)不必要的變量。
對(duì)于本例中使用的數(shù)據(jù),PLSR和PCR所需的成分?jǐn)?shù)量之間的差異不是很大,PLS權(quán)重和PCA載荷選擇了相同的變量。其他數(shù)據(jù)可能并非如此。
有問(wèn)題歡迎下方留言!

點(diǎn)擊文末?“閱讀原文”
獲取全文完整資料。
本文選自《偏最小二乘回歸(PLSR)和主成分回歸(PCR)分析光譜數(shù)據(jù)》。
點(diǎn)擊標(biāo)題查閱往期內(nèi)容
R語(yǔ)言實(shí)現(xiàn)偏最小二乘回歸法 partial least squares (PLS)回歸
Matlab中的偏最小二乘法(PLS)回歸模型,離群點(diǎn)檢測(cè)和變量選擇
R語(yǔ)言實(shí)現(xiàn)偏最小二乘回歸法 partial least squares (PLS)回歸
R語(yǔ)言中的block Gibbs吉布斯采樣貝葉斯多元線性回歸R語(yǔ)言Lasso回歸模型變量選擇和糖尿病發(fā)展預(yù)測(cè)模型
R語(yǔ)言實(shí)現(xiàn)貝葉斯分位數(shù)回歸、lasso和自適應(yīng)lasso貝葉斯分位數(shù)回歸分析
Python貝葉斯回歸分析住房負(fù)擔(dān)能力數(shù)據(jù)集
Python用PyMC3實(shí)現(xiàn)貝葉斯線性回歸模型
R語(yǔ)言區(qū)間數(shù)據(jù)回歸分析
R語(yǔ)言用LOESS(局部加權(quán)回歸)季節(jié)趨勢(shì)分解(STL)進(jìn)行時(shí)間序列異常檢測(cè)
PYTHON用時(shí)變馬爾可夫區(qū)制轉(zhuǎn)換(MRS)自回歸模型分析經(jīng)濟(jì)時(shí)間序列
R語(yǔ)言隨機(jī)森林RandomForest、邏輯回歸Logisitc預(yù)測(cè)心臟病數(shù)據(jù)和可視化分析
基于R語(yǔ)言實(shí)現(xiàn)LASSO回歸分析
Python用PyMC3實(shí)現(xiàn)貝葉斯線性回歸模型
使用R語(yǔ)言進(jìn)行多項(xiàng)式回歸、非線性回歸模型曲線擬合
R語(yǔ)言中的偏最小二乘回歸PLS-DAR語(yǔ)言生態(tài)學(xué)建模:增強(qiáng)回歸樹(shù)(BRT)預(yù)測(cè)短鰭鰻生存分布和影響因素
R語(yǔ)言實(shí)現(xiàn)偏最小二乘回歸法 partial least squares (PLS)回歸
Matlab中的偏最小二乘法(PLS)回歸模型,離群點(diǎn)檢測(cè)和變量選擇
偏最小二乘回歸(PLSR)和主成分回歸(PCR)
R語(yǔ)言如何找到患者數(shù)據(jù)中具有差異的指標(biāo)?(PLS—DA分析)?R語(yǔ)言中的block Gibbs吉布斯采樣貝葉斯多元線性回歸R語(yǔ)言Lasso回歸模型變量選擇和糖尿病發(fā)展預(yù)測(cè)模型
R語(yǔ)言實(shí)現(xiàn)貝葉斯分位數(shù)回歸、lasso和自適應(yīng)lasso貝葉斯分位數(shù)回歸分析
Python貝葉斯回歸分析住房負(fù)擔(dān)能力數(shù)據(jù)集
Python用PyMC3實(shí)現(xiàn)貝葉斯線性回歸模型
R語(yǔ)言區(qū)間數(shù)據(jù)回歸分析
R語(yǔ)言用LOESS(局部加權(quán)回歸)季節(jié)趨勢(shì)分解(STL)進(jìn)行時(shí)間序列異常檢測(cè)
PYTHON用時(shí)變馬爾可夫區(qū)制轉(zhuǎn)換(MRS)自回歸模型分析經(jīng)濟(jì)時(shí)間序列
R語(yǔ)言隨機(jī)森林RandomForest、邏輯回歸Logisitc預(yù)測(cè)心臟病數(shù)據(jù)和可視化分析
基于R語(yǔ)言實(shí)現(xiàn)LASSO回歸分析
Python用PyMC3實(shí)現(xiàn)貝葉斯線性回歸模型
使用R語(yǔ)言進(jìn)行多項(xiàng)式回歸、非線性回歸模型曲線擬合
R語(yǔ)言中的偏最小二乘回歸PLS-DA
R語(yǔ)言生態(tài)學(xué)建模:增強(qiáng)回歸樹(shù)(BRT)預(yù)測(cè)短鰭鰻生存分布和影響因素
R語(yǔ)言生態(tài)學(xué)建模:增強(qiáng)回歸樹(shù)(BRT)預(yù)測(cè)短鰭鰻生存分布和影響因素
R語(yǔ)言實(shí)現(xiàn)偏最小二乘回歸法 partial least squares (PLS)回歸
Matlab中的偏最小二乘法(PLS)回歸模型,離群點(diǎn)檢測(cè)和變量選擇
偏最小二乘回歸(PLSR)和主成分回歸(PCR)
R語(yǔ)言如何找到患者數(shù)據(jù)中具有差異的指標(biāo)?(PLS—DA分析)