天天看點

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

本文建立偏最小二乘法(PLS)回歸(PLSR)模型,以及預測性能評估。為了建立一個可靠的模型,我們還實作了一些常用的離群點檢測和變量選擇方法,可以去除潛在的離群點和隻使用所選變量的子集來 "清洗 "你的資料。

步驟

  • 建立PLS回歸模型
  • PLS的K-折交叉驗證
  • PLS的蒙特卡洛交叉驗證(MCCV)。
  • PLS的雙重交叉驗證(DCV)
  • 使用蒙特卡洛抽樣方法進行離群點檢測
  • 使用CARS方法進行變量選擇。
  • 使用移動視窗PLS(MWPLS)進行變量選擇。
  • 使用蒙特卡洛無資訊變量消除法(MCUVE)進行變量選擇
  • 進行變量選擇

建立PLS回歸模型

這個例子說明了如何使用基準近紅外資料建立PLS模型。

  1.  plot(X'); % 顯示光譜資料。
  2.  xlabel('波長指數');
  3.  ylabel('強度');
拓端資料tecdat|Matlab中的偏最小二乘法(PLS)回歸模型,離群點檢測和變量選擇

參數設定

  1.  A=6; % 潛在變量(LV)的數量。
  2.  method='center'; % 用于建立PLS模型的X的内部預處理方法
  3.  PLS(X,y,A,method); % 建立模型的指令
拓端資料tecdat|Matlab中的偏最小二乘法(PLS)回歸模型,離群點檢測和變量選擇
拓端資料tecdat|Matlab中的偏最小二乘法(PLS)回歸模型,離群點檢測和變量選擇

pls.m函數傳回一個包含成分清單的對象PLS。結果解釋。

regcoef_original:連接配接X和y的回歸系數。

X_scores:X的得分。

VIP:預測中的變量重要性,評估變量重要性的一個标準。

變量的重要性。

RMSEF:拟合的均方根誤差。

y_fit:y的拟合值。

R2:Y的解釋變異的百分比。 

PLS的K折交叉驗證

說明如何對PLS模型進行K折交叉驗證

  1.  clear;
  2.  A=6; % LV的數量
  3.  K=5; % 交叉驗證的次數
拓端資料tecdat|Matlab中的偏最小二乘法(PLS)回歸模型,離群點檢測和變量選擇
  1.  plot(CV.RMSECV) % 繪制每個潛在變量(LVs)數量下的RMSECV值
  2.  xlabel('潛在變量(LVs)數量') % 添加x标簽
  3.  ylabel('RMSECV') % 添加y标簽
拓端資料tecdat|Matlab中的偏最小二乘法(PLS)回歸模型,離群點檢測和變量選擇
拓端資料tecdat|Matlab中的偏最小二乘法(PLS)回歸模型,離群點檢測和變量選擇

傳回的值CV是帶有成分清單的結構資料。結果解釋。

RMSECV:交叉驗證的均方根誤差。越小越好

Q2:與R2含義相同,但由交叉驗證計算得出。

optLV:達到最小RMSECV(最高Q2)的LV數量。 

蒙特卡洛交叉驗證(MCCV)的PLS

說明如何對PLS模組化進行MCCV。與K-fold CV一樣,MCCV是另一種交叉驗證的方法。

1.  % 參數設定
2.  A=6;
3.  method='center';
4.  N=500;                          % Monte Carlo抽樣的數量
5.  % 運作mccv.
6.  plot(MCCV.RMSECV);              % 繪制每個潛在變量(LVs)數量下的RMSECV值
7.  xlabel('潛在變量(LVs)數量');      
拓端資料tecdat|Matlab中的偏最小二乘法(PLS)回歸模型,離群點檢測和變量選擇
MCCV      
拓端資料tecdat|Matlab中的偏最小二乘法(PLS)回歸模型,離群點檢測和變量選擇

MCCV是一個結構性資料。結果解釋。

Ypred:預測值

Ytrue:真實值

RMSECV:交叉驗證的均方根誤差,越小越好。

Q2:與R2含義相同,但由交叉驗證計算得出。 

PLS的雙重交叉驗證(DCV)

說明如何對PLS模組化進行DCV。與K-fold CV一樣,DCV是交叉驗證的一種方式。

1.   
2.  % 參數設定
3.   
4.  N=50;                                 % Monte Carlo抽樣的數量
5.  dcv(X,y,A,k,method,N);
6.  DCV      
拓端資料tecdat|Matlab中的偏最小二乘法(PLS)回歸模型,離群點檢測和變量選擇

使用蒙特卡洛抽樣方法的離群點檢測

說明離群點檢測方法的使用情況

  1.  A=6;
  2.  method='center';
  3.  F=mc(X,y,A,method,N,ratio);
拓端資料tecdat|Matlab中的偏最小二乘法(PLS)回歸模型,離群點檢測和變量選擇
拓端資料tecdat|Matlab中的偏最小二乘法(PLS)回歸模型,離群點檢測和變量選擇

結果解釋。

predError:每個抽樣中的樣本預測誤差

MEAN:每個樣本的平均預測誤差

STD:每個樣本的預測誤差的标準偏差 

plot(F) % 診斷圖      
拓端資料tecdat|Matlab中的偏最小二乘法(PLS)回歸模型,離群點檢測和變量選擇

注:MEAN值高或SD值高的樣本更可能是離群值,應考慮在模組化前将其剔除。

使用CARS方法進行變量選擇。

  1.  A=6;
  2.  fold=5;
  3.  car(X,y,A,fold);
拓端資料tecdat|Matlab中的偏最小二乘法(PLS)回歸模型,離群點檢測和變量選擇

結果解釋。

optLV:最佳模型的LV數量

vsel:標明的變量(X中的列)。 

plotcars(CARS); % 診斷圖      
拓端資料tecdat|Matlab中的偏最小二乘法(PLS)回歸模型,離群點檢測和變量選擇

注:在這幅圖中,頂部和中間的面闆顯示了選擇變量的數量和RMSECV如何随着疊代而變化。底部面闆描述了每個變量的回歸系數(每條線對應一個變量)如何随着疊代而變化。星形垂直線表示具有最低RMSECV的最佳模型。

使用移動視窗PLS(MWPLS)進行變量選擇

  1.  load corn_m51; % 示例資料
  2.  width=15; % 視窗大小
  3.  mw(X,y,width);
  4.  plot(WP,RMSEF);
  5.  xlabel('視窗位置');
拓端資料tecdat|Matlab中的偏最小二乘法(PLS)回歸模型,離群點檢測和變量選擇

注:從該圖中建議将RMSEF值較低的區域納入PLS模型中。

使用蒙特卡洛無資訊變量消除法(MCUVE)進行變量選擇

  1.  N=500;
  2.  method='center';
  3.  UVE
拓端資料tecdat|Matlab中的偏最小二乘法(PLS)回歸模型,離群點檢測和變量選擇
  1.  plot(abs(UVE.RI))
拓端資料tecdat|Matlab中的偏最小二乘法(PLS)回歸模型,離群點檢測和變量選擇

結果解釋。RI:UVE的可靠性指數,是對變量重要性的測量,越高越好。

進行變量選擇

1.  A=6;
2.  N=10000;
3.  method='center';
4.  FROG=rd_pls(X,y,A,method,N);
5.   
6.   
7.  N: 10000
8.  Q: 2
9.  model: [10000x700 double]
10.  minutes: 0.6683
11.  method: 'center'
12.  Vrank: [1x700 double]
13.  Vtop10: [505 405 506 400 408 233 235 249 248 515]
14.  probability: [1x700 double]
15.  nVar: [1x10000 double]
16.  RMSEP: [1x10000 double]
17.      
拓端資料tecdat|Matlab中的偏最小二乘法(PLS)回歸模型,離群點檢測和變量選擇
  1.  xlabel('變量序号');
  2.  ylabel('選擇機率'); 
拓端資料tecdat|Matlab中的偏最小二乘法(PLS)回歸模型,離群點檢測和變量選擇

結果解釋: