拓端tecdat|Matlab中的偏最小二乘法(PLS)回歸模型,離群點(diǎn)檢測(cè)和變量選擇
原文 |?http://tecdat.cn/?p=22319?
來源 |?拓端數(shù)據(jù)部落公眾號(hào)
?
本文建立偏最小二乘法(PLS)回歸(PLSR)模型,以及預(yù)測(cè)性能評(píng)估。為了建立一個(gè)可靠的模型,我們還實(shí)現(xiàn)了一些常用的離群點(diǎn)檢測(cè)和變量選擇方法,可以去除潛在的離群點(diǎn)和只使用所選變量的子集來 "清洗?"你的數(shù)據(jù)。
步驟
建立PLS回歸模型
PLS的K-折交叉驗(yàn)證
PLS的蒙特卡洛交叉驗(yàn)證(MCCV)。
PLS的雙重交叉驗(yàn)證(DCV)
使用蒙特卡洛抽樣方法進(jìn)行離群點(diǎn)檢測(cè)
使用CARS方法進(jìn)行變量選擇。
使用移動(dòng)窗口PLS(MWPLS)進(jìn)行變量選擇。
使用蒙特卡洛無信息變量消除法(MCUVE)進(jìn)行變量選擇
進(jìn)行變量選擇
建立PLS回歸模型
這個(gè)例子說明了如何使用基準(zhǔn)近紅外數(shù)據(jù)建立PLS模型。
plot(X'); ? ? ? ? ? ? ? % 顯示光譜數(shù)據(jù)。
xlabel('波長(zhǎng)指數(shù)');
ylabel('強(qiáng)度');

參數(shù)設(shè)定
A=6; ? ? ? ? ? ? ? ? ? ?% 潛在變量(LV)的數(shù)量。
method='center'; ? ? ? ?% 用于建立PLS模型的X的內(nèi)部預(yù)處理方法
PLS(X,y,A,method); ?% 建立模型的命令
?


pls.m函數(shù)返回一個(gè)包含成分列表的對(duì)象PLS。結(jié)果解釋。
regcoef_original:連接X和y的回歸系數(shù)。
X_scores:X的得分。
VIP:預(yù)測(cè)中的變量重要性,評(píng)估變量重要性的一個(gè)標(biāo)準(zhǔn)。
變量的重要性。
RMSEF:擬合的均方根誤差。
y_fit:y的擬合值。
R2:Y的解釋變異的百分比。?
PLS的K折交叉驗(yàn)證
說明如何對(duì)PLS模型進(jìn)行K折交叉驗(yàn)證
clear;
A=6; ? ? ? ? ? ? ? ? ? ? ? ? ?% LV的數(shù)量
K=5; ? ? ? ? ? ? ? ? ? ? ? ? ?% 交叉驗(yàn)證的次數(shù)

plot(CV.RMSECV) ? ? ? ? ? ? ? % 繪制每個(gè)潛在變量(LVs)數(shù)量下的RMSECV值
xlabel('潛在變量(LVs)數(shù)量') ? ? ? ? ?% 添加x標(biāo)簽
ylabel('RMSECV') ? ? ? ? ? ? ?% 添加y標(biāo)簽


返回的值CV是帶有成分列表的結(jié)構(gòu)數(shù)據(jù)。結(jié)果解釋。
RMSECV:交叉驗(yàn)證的均方根誤差。越小越好
Q2:與R2含義相同,但由交叉驗(yàn)證計(jì)算得出。
optLV:達(dá)到最小RMSECV(最高Q2)的LV數(shù)量。?
蒙特卡洛交叉驗(yàn)證(MCCV)的PLS
說明如何對(duì)PLS建模進(jìn)行MCCV。與K-fold CV一樣,MCCV是另一種交叉驗(yàn)證的方法。
% 參數(shù)設(shè)置
A=6;
method='center';
N=500; ? ? ? ? ? ? ? ? ? ? ? ? ?% Monte Carlo抽樣的數(shù)量
% 運(yùn)行mccv.
plot(MCCV.RMSECV); ? ? ? ? ? ? ?% 繪制每個(gè)潛在變量(LVs)數(shù)量下的RMSECV值
xlabel('潛在變量(LVs)數(shù)量');
?

MCCV

MCCV是一個(gè)結(jié)構(gòu)性數(shù)據(jù)。結(jié)果解釋。
Ypred:預(yù)測(cè)值
Ytrue:真實(shí)值
RMSECV:交叉驗(yàn)證的均方根誤差,越小越好。
Q2:與R2含義相同,但由交叉驗(yàn)證計(jì)算得出。?
PLS的雙重交叉驗(yàn)證(DCV)
說明如何對(duì)PLS建模進(jìn)行DCV。與K-fold CV一樣,DCV是交叉驗(yàn)證的一種方式。
% 參數(shù)設(shè)置
N=50; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? % Monte Carlo抽樣的數(shù)量
dcv(X,y,A,k,method,N);
DCV

使用蒙特卡洛抽樣方法的離群點(diǎn)檢測(cè)
說明離群點(diǎn)檢測(cè)方法的使用情況
A=6;
method='center';
F=mc(X,y,A,method,N,ratio);


結(jié)果解釋。
predError:每個(gè)抽樣中的樣本預(yù)測(cè)誤差
MEAN:每個(gè)樣本的平均預(yù)測(cè)誤差
STD:每個(gè)樣本的預(yù)測(cè)誤差的標(biāo)準(zhǔn)偏差?
plot(F) % 診斷圖

注:MEAN值高或SD值高的樣本更可能是離群值,應(yīng)考慮在建模前將其剔除。
使用CARS方法進(jìn)行變量選擇。
A=6;
fold=5;
car(X,y,A,fold);

結(jié)果解釋。
optLV:最佳模型的LV數(shù)量
vsel:選定的變量(X中的列)。?
plotcars(CARS); % 診斷圖

注:在這幅圖中,頂部和中間的面板顯示了選擇變量的數(shù)量和RMSECV如何隨著迭代而變化。底部面板描述了每個(gè)變量的回歸系數(shù)(每條線對(duì)應(yīng)一個(gè)變量)如何隨著迭代而變化。星形垂直線表示具有最低RMSECV的最佳模型。
使用移動(dòng)窗口PLS(MWPLS)進(jìn)行變量選擇
load corn_m51; ? ? ? ? ? ? ? ? ? ? ?% 示例數(shù)據(jù)
width=15; ? ? ? ? ? ? ? ? ? ? ? ? ? % 窗口大小
mw(X,y,width);
plot(WP,RMSEF);
xlabel('窗口位置');
注:從該圖中建議將RMSEF值較低的區(qū)域納入PLS模型中。
使用蒙特卡洛無信息變量消除法(MCUVE)進(jìn)行變量選擇
N=500;
method='center';
UVE

plot(abs(UVE.RI))

結(jié)果解釋。RI:UVE的可靠性指數(shù),是對(duì)變量重要性的測(cè)量,越高越好。
進(jìn)行變量選擇
A=6;
N=10000;
method='center';
FROG=rd_pls(X,y,A,method,N);
N: 10000
Q: 2
model: [10000x700 double]
minutes: 0.6683
method: 'center'
Vrank: [1x700 double]
Vtop10: [505 405 506 400 408 233 235 249 248 515]
probability: [1x700 double]
nVar: [1x10000 double]
RMSEP: [1x10000 double]

xlabel('變量序號(hào)');
ylabel('選擇概率');?

結(jié)果解釋:
模型結(jié)果是一個(gè)矩陣,儲(chǔ)存了每一個(gè)相互關(guān)系中的選擇變量。
概率:每個(gè)變量被包含在最終模型中的概率。越大越好。這是一個(gè)衡量變量重要性的有用指標(biāo)。

最受歡迎的見解
1.R語言多元Logistic邏輯回歸 應(yīng)用案例
2.面板平滑轉(zhuǎn)移回歸(PSTR)分析案例實(shí)現(xiàn)
3.matlab中的偏最小二乘回歸(PLSR)和主成分回歸(PCR)
4.R語言泊松Poisson回歸模型分析案例
5.R語言回歸中的Hosmer-Lemeshow擬合優(yōu)度檢驗(yàn)
6.r語言中對(duì)LASSO回歸,Ridge嶺回歸和Elastic Net模型實(shí)現(xiàn)
7.在R語言中實(shí)現(xiàn)Logistic邏輯回歸
8.python用線性回歸預(yù)測(cè)股票價(jià)格
9.R語言如何在生存分析與Cox回歸中計(jì)算IDI,NRI指標(biāo)