【数学建模】偏最小二乘回归分析(PLSR)
PLSR的基本原理與推導(dǎo),我在這篇博客中有講過。
0.
偏最小二乘回歸集成了多元線性回歸、主成分分析和典型相關(guān)分析的優(yōu)點,在建模中是一個更好的選擇,并且MATLAB提供了完整的實現(xiàn),應(yīng)用時主要的問題是:注意檢驗,各種檢驗參數(shù):有關(guān)回歸的檢驗以及有關(guān)多元分析的檢驗
系數(shù)眾多,容易混淆
要清楚原理才能寫好論文
注意matlab函數(shù)plsregress的眾多返回值
例如累計貢獻度,建模時最好列出表格1.
問題:
自變量組 X = [x1,x2…xn] (n組自變量)
因變量組 Y = [y1,y2,…yp] (p組因變量)
考慮到X、Y內(nèi)部之間的多重相關(guān)性,可以使用PLSR建立Y對X的多元回歸模型。這是一種多對多回歸的模型。
偏最小二乘回歸的實現(xiàn)步驟:
X、Y標(biāo)準(zhǔn)化。若考慮標(biāo)準(zhǔn)化的不對等特性,考慮實現(xiàn)對應(yīng)分析。
求相關(guān)系數(shù)矩陣。可以把X、Y統(tǒng)一放到一個增廣矩陣中,實現(xiàn)求列向量之間的相關(guān)系數(shù)矩陣(corrcoef實現(xiàn)無需標(biāo)準(zhǔn)化,直接使用原始數(shù)據(jù))
求主成分對。(求出自變量與因變量的成分,類似于典型相關(guān)分析)這里對數(shù)其實是min(n-1,p)。求出<u1,v1>、<u2,v2>… 實際上,u、v是原始變量標(biāo)準(zhǔn)化后的線性組合、即投影。
計算貢獻率表格。計算前k個主成分u對原始變量X的貢獻率、v對Y的貢獻率(函數(shù)直接返回結(jié)果)。
根據(jù)貢獻率表格,選取k個主成分對。一般累計貢獻率達(dá)到90%合適。
求出原始變量X對這k個主成分u的回歸方程以及Y對u的(不是v!)回歸方程。
根據(jù)6的結(jié)果,可以求出因變量組Y與自變量組X的回歸方程,但這其實是標(biāo)準(zhǔn)化了的(常數(shù)項一定是0),進一步可以還原為真實原始變量的回歸方程,這也是我們所要求得的。
模型的解釋與檢驗。首先得進行一個回歸檢驗:判定系數(shù)R方的檢驗(接近于1)。計算每一個回歸方程的R方,可以列出表格。
之后進行交叉有效性檢驗:交叉系數(shù)Qh方 = 1 – (PRESS(h) / SS(h-1))。這是從主成分分析的角度的檢驗,即檢驗提取的k個主成分。(這個檢驗比較復(fù)雜,詳細(xì)看推導(dǎo))2.
MATLAB實現(xiàn)命令:
[XL,YL,XS,YS,BETA,PCTVAR,MSE,stats] = plsregress(X,Y,ncomp)
param:
X: 標(biāo)準(zhǔn)化后的原始X數(shù)據(jù),每行一個數(shù)據(jù)組,每列是一項指標(biāo),即一個自變量
Y:標(biāo)準(zhǔn)化后的原始Y數(shù)據(jù),每行一個數(shù)據(jù)組,每列是一項指標(biāo),即一個因變量
ncomp:選取的主成分對數(shù)
return:
XL:自變量的負(fù)荷量矩陣。維度是(自變量數(shù)*ncomp)。每行是原始數(shù)據(jù)X對主成分u的回歸表達(dá)式的系數(shù)
YL:因變量的負(fù)荷量矩陣。維度是(自變量數(shù)*ncomp)。每行是原始數(shù)據(jù)Y對主成分u的回歸表達(dá)式的系數(shù)
XS:對應(yīng)于主成分u的得分矩陣(得分說的是主成分的值)。每列是一個主成分得分向量。
如:每一列是一個主成分ui的值!列數(shù)是主成分?jǐn)?shù)。
說明:主成分u1是個列向量.
YS:對應(yīng)于主成分v的得分矩陣。每列是一個v對原始數(shù)據(jù)Y的線性組合的系數(shù)
BETA:最終的回歸表達(dá)式系數(shù)矩陣。每一列對應(yīng)的,是一個yi對X的回歸表達(dá)式系數(shù)。
PCTVAR:兩行的矩陣。
第一行的每個元素代表著自變量提出主成分,相應(yīng)主成分u的貢獻率。(特征值之比,詳細(xì)見主成分推導(dǎo))
第二行的每個元素代表著因變量提出主成分,相應(yīng)主成分v的貢獻率。這個貢獻率其實是主成分對原始變量的解釋能力大下。
MSE:兩行的矩陣。剩余標(biāo)準(zhǔn)差矩陣。第一行的第j個元素對應(yīng)著自變量與他的前j-1個提出成分之間的剩余標(biāo)準(zhǔn)差。第二行對應(yīng)因變量。
stats:返回4個值。結(jié)構(gòu)體:stats。
W — A p-by-ncomp matrix of PLS weights so that XS = X0*W.
W = aXS。 W每行是一個主成分得分向量的系數(shù),如:
T2 — The T2 statistic for each point in XS.
Xresiduals — The predictor residuals, that is, X0-XS*XL'.
Yresiduals — The response residuals, that is, Y0-XS*YL'.
3.
案例實現(xiàn):
求Y對X的偏最小二乘回歸方程:
原始數(shù)據(jù):
(前三列為X變量,后兩列為Y變量,共20組樣本。以下數(shù)據(jù)保存為pz.txt與matlab源文件同一文件夾下)
191 36 50 5 162 60 189 37 52 2 110 60 193 38 58 12 101 101 162 35 62 12 105 37 189 35 46 13 155 58 182 36 56 4 101 42 211 38 56 8 101 38 167 34 60 6 125 40 176 31 74 15 200 40 154 33 56 17 251 250 169 34 50 17 120 38 166 33 52 13 210 115 154 34 64 14 215 105 247 46 50 1 50 50 193 36 46 6 70 31 202 37 62 12 210 120 176 37 54 4 60 25 157 32 52 11 230 80 156 33 54 15 225 73 138 33 68 2 110 431 % PLSR 偏最小二乘 2 3 clc,clear 4 ab0 = load('pz.txt'); 5 mu = mean(ab0);%均值 6 sig = std(ab0);% 標(biāo)準(zhǔn)差 7 rr = corrcoef(ab0) %相關(guān)系數(shù)矩陣 8 ab = zscore(ab0); %數(shù)據(jù)標(biāo)準(zhǔn)化 9 a = ab(:,[1:3]); %標(biāo)準(zhǔn)化的X 10 b = ab(:,[4:end]); %標(biāo)準(zhǔn)化的Y 11 % pls命令需要標(biāo)準(zhǔn)化變量 12 [XL,YL,XS,YS,BETA,PCTVAR,MSE,stats] = plsregress(a,b) 13 contr = cumsum(PCTVAR,2) %每行累計求和,即計算累計貢獻率 14 XL 15 YL 16 XS 17 YS 18 xw = aXS %自變量提出主成分系數(shù),每列對應(yīng)一個成分,這個就是stats.W 19 yw = bYS %因變量提出的主成分系數(shù) 20 ncomp = input('輸入主成分個數(shù)') 21 [XL2,YL2,XS2,YS2,BETA2,PCTVAR2,MSE2,stats2] = plsregress(a,b,ncomp) 22 n = size(a,2);% n是自變量個數(shù) 23 m = size(b,2); 24 %求原始數(shù)據(jù)回歸方程常數(shù)項 25 beta3(1,:) = mu(n+1:end) - mu(1:n)./sig(1:n)*BETA2([2:end],:).*sig(n+1:end); 26 %求原始數(shù)據(jù)x1,x2...xn的系數(shù),每一列是一個回歸方程 27 beta3([2:n+1],:) = (1./sig(1:n))'*sig(n+1:end).*BETA2([2:end],:) 28 bar(BETA2','k') %畫直方圖求解結(jié)果(部分)
假設(shè)采用2個主成分
ncomp =
2
系數(shù):
XL2 =-4.1306 0.0558
-4.1933 1.0239
2.2264 3.4441
YL2 =2.1191 -0.9714
2.5809 -0.8398
0.8869 -0.1877主成分得分(每列一個主成分):
XS2 =-0.1036 -0.2050
-0.1241 -0.0577
-0.1463 0.1807
0.1110 0.2358
-0.0785 -0.3927
-0.0369 0.0249
-0.2263 0.0263
0.1199 0.0730
0.2765 0.2263
0.1874 -0.0577
0.0588 -0.2428
0.1198 -0.2420
0.1913 0.2625
-0.7077 0.2635
-0.1327 -0.3375
-0.1208 0.1803
-0.0633 0.0707
0.1933 -0.2712
0.1690 -0.1291
0.3131 0.3917
YS2 =-1.2834 0.1794
-4.6311 1.3388
-0.2845 -0.6256
-1.2265 0.6851
1.6002 -1.0788
-4.5120 1.5408
-2.9777 -0.0114
-2.7548 1.5473
3.9469 -0.4253
10.4846 -2.6373
1.4139 -0.6681
4.8549 -1.1547
5.2890 -1.0550
-7.6800 -0.1989
-5.1793 1.2090
4.5405 -2.0460
-6.4973 2.0374
4.2728 -0.6046
5.5489 -1.3537
-4.9251 3.3215標(biāo)準(zhǔn)化數(shù)據(jù)回歸方程系數(shù)(可以看到常數(shù)項系數(shù)是0)
BETA2 =0.0000 0.0000 0.0000
-0.0773 -0.1380 -0.0603
-0.4995 -0.5250 -0.1559
-0.1323 -0.0855 -0.0072貢獻率:
PCTVAR2 =0.6948 0.2265
0.2094 0.0295剩余標(biāo)準(zhǔn)差:
MSE2 =2.8500 0.8699 0.2242
2.8500 2.2531 2.1689
stats2 =W: [3x2 double]
T2: [20x1 double]
Xresiduals: [20x3 double]
Yresiduals: [20x3 double]最終的回歸方程系數(shù)矩陣,每列一個方程:
beta3 =47.0375 612.7674 183.9130
-0.0165 -0.3497 -0.1253
-0.8246 -10.2576 -2.4964
-0.0970 -0.7422 -0.0510畫出回歸系數(shù)直方圖:
還可以用預(yù)測的方法做精度分析,在此略過。
總結(jié)
以上是生活随笔為你收集整理的【数学建模】偏最小二乘回归分析(PLSR)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【数据相关】如何进行数据标注(1)
- 下一篇: MySQL 分库分表 dble简单使用