【数学建模】偏最小二乘回归分析(PLSR)
PLSR的基本原理與推導,我在這篇博客中有講過。
0.
偏最小二乘回歸集成了多元線性回歸、主成分分析和典型相關分析的優點,在建模中是一個更好的選擇,并且MATLAB提供了完整的實現,應用時主要的問題是:注意檢驗,各種檢驗參數:有關回歸的檢驗以及有關多元分析的檢驗
系數眾多,容易混淆
要清楚原理才能寫好論文
注意matlab函數plsregress的眾多返回值
例如累計貢獻度,建模時最好列出表格1.
問題:
自變量組 X = [x1,x2…xn] (n組自變量)
因變量組 Y = [y1,y2,…yp] (p組因變量)
考慮到X、Y內部之間的多重相關性,可以使用PLSR建立Y對X的多元回歸模型。這是一種多對多回歸的模型。
偏最小二乘回歸的實現步驟:
X、Y標準化。若考慮標準化的不對等特性,考慮實現對應分析。
求相關系數矩陣。可以把X、Y統一放到一個增廣矩陣中,實現求列向量之間的相關系數矩陣(corrcoef實現無需標準化,直接使用原始數據)
求主成分對。(求出自變量與因變量的成分,類似于典型相關分析)這里對數其實是min(n-1,p)。求出<u1,v1>、<u2,v2>… 實際上,u、v是原始變量標準化后的線性組合、即投影。
計算貢獻率表格。計算前k個主成分u對原始變量X的貢獻率、v對Y的貢獻率(函數直接返回結果)。
根據貢獻率表格,選取k個主成分對。一般累計貢獻率達到90%合適。
求出原始變量X對這k個主成分u的回歸方程以及Y對u的(不是v!)回歸方程。
根據6的結果,可以求出因變量組Y與自變量組X的回歸方程,但這其實是標準化了的(常數項一定是0),進一步可以還原為真實原始變量的回歸方程,這也是我們所要求得的。
模型的解釋與檢驗。首先得進行一個回歸檢驗:判定系數R方的檢驗(接近于1)。計算每一個回歸方程的R方,可以列出表格。
之后進行交叉有效性檢驗:交叉系數Qh方 = 1 – (PRESS(h) / SS(h-1))。這是從主成分分析的角度的檢驗,即檢驗提取的k個主成分。(這個檢驗比較復雜,詳細看推導)2.
MATLAB實現命令:
[XL,YL,XS,YS,BETA,PCTVAR,MSE,stats] = plsregress(X,Y,ncomp)
param:
X: 標準化后的原始X數據,每行一個數據組,每列是一項指標,即一個自變量
Y:標準化后的原始Y數據,每行一個數據組,每列是一項指標,即一個因變量
ncomp:選取的主成分對數
return:
XL:自變量的負荷量矩陣。維度是(自變量數*ncomp)。每行是原始數據X對主成分u的回歸表達式的系數
YL:因變量的負荷量矩陣。維度是(自變量數*ncomp)。每行是原始數據Y對主成分u的回歸表達式的系數
XS:對應于主成分u的得分矩陣(得分說的是主成分的值)。每列是一個主成分得分向量。
如:每一列是一個主成分ui的值!列數是主成分數。
說明:主成分u1是個列向量.
YS:對應于主成分v的得分矩陣。每列是一個v對原始數據Y的線性組合的系數
BETA:最終的回歸表達式系數矩陣。每一列對應的,是一個yi對X的回歸表達式系數。
PCTVAR:兩行的矩陣。
第一行的每個元素代表著自變量提出主成分,相應主成分u的貢獻率。(特征值之比,詳細見主成分推導)
第二行的每個元素代表著因變量提出主成分,相應主成分v的貢獻率。這個貢獻率其實是主成分對原始變量的解釋能力大下。
MSE:兩行的矩陣。剩余標準差矩陣。第一行的第j個元素對應著自變量與他的前j-1個提出成分之間的剩余標準差。第二行對應因變量。
stats:返回4個值。結構體:stats。
W — A p-by-ncomp matrix of PLS weights so that XS = X0*W.
W = aXS。 W每行是一個主成分得分向量的系數,如:
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.
案例實現:
求Y對X的偏最小二乘回歸方程:
原始數據:
(前三列為X變量,后兩列為Y變量,共20組樣本。以下數據保存為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);% 標準差 7 rr = corrcoef(ab0) %相關系數矩陣 8 ab = zscore(ab0); %數據標準化 9 a = ab(:,[1:3]); %標準化的X 10 b = ab(:,[4:end]); %標準化的Y 11 % pls命令需要標準化變量 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 %自變量提出主成分系數,每列對應一個成分,這個就是stats.W 19 yw = bYS %因變量提出的主成分系數 20 ncomp = input('輸入主成分個數') 21 [XL2,YL2,XS2,YS2,BETA2,PCTVAR2,MSE2,stats2] = plsregress(a,b,ncomp) 22 n = size(a,2);% n是自變量個數 23 m = size(b,2); 24 %求原始數據回歸方程常數項 25 beta3(1,:) = mu(n+1:end) - mu(1:n)./sig(1:n)*BETA2([2:end],:).*sig(n+1:end); 26 %求原始數據x1,x2...xn的系數,每一列是一個回歸方程 27 beta3([2:n+1],:) = (1./sig(1:n))'*sig(n+1:end).*BETA2([2:end],:) 28 bar(BETA2','k') %畫直方圖求解結果(部分)
假設采用2個主成分
ncomp =
2
系數:
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標準化數據回歸方程系數(可以看到常數項系數是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剩余標準差:
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]最終的回歸方程系數矩陣,每列一個方程:
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畫出回歸系數直方圖:
還可以用預測的方法做精度分析,在此略過。
總結
以上是生活随笔為你收集整理的【数学建模】偏最小二乘回归分析(PLSR)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【数据相关】如何进行数据标注(1)
- 下一篇: 怎么创建具有真实纹理的CG场景岩石?