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


原文 | http://tecdat.cn/?p=22319 
來源 | 拓端數據部落公眾號
 

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

步驟

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

建立PLS回歸模型

這個例子說明了如何使用基准近紅外數據建立PLS模型。

  1.  
     
  2.  
    plot(X'); % 顯示光譜數據。
  3.  
    xlabel('波長指數');
  4.  
    ylabel('強度');

參數設定

  1.  
     
  2.  
    A=6; % 潛在變量(LV)的數量。
  3.  
    method='center'; % 用於建立PLS模型的X的內部預處理方法
  4.  
    PLS(X,y,A,method); % 建立模型的命令

 

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; % 交叉驗證的次數

  1.  
     
  2.  
    plot(CV.RMSECV) % 繪制每個潛在變量(LVs)數量下的RMSECV值
  3.  
    xlabel('潛在變量(LVs)數量') % 添加x標簽
  4.  
    ylabel('RMSECV') % 添加y標簽

 

返回的值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)數量');
 

MCCV

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

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

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

  1.  
    A=6;
  2.  
    method='center';
  3.  
    F=mc(X,y,A,method,N,ratio);
  4.  
     

結果解釋。

predError:每個抽樣中的樣本預測誤差
MEAN:每個樣本的平均預測誤差
STD:每個樣本的預測誤差的標准偏差 

plot(F) % 診斷圖

 

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

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

  1.  
     
  2.  
    A=6;
  3.  
    fold=5;
  4.  
    car(X,y,A,fold);
  5.  
     

結果解釋。

optLV:最佳模型的LV數量
vsel:選定的變量(X中的列)。 

plotcars(CARS); % 診斷圖

 

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

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

  1.  
    load corn_m51; % 示例數據
  2.  
    width=15; % 窗口大小
  3.  
    mw(X,y,width);
  4.  
    plot(WP,RMSEF);
  5.  
    xlabel('窗口位置');

 

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

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

  1.  
    N=500;
  2.  
    method='center';
  3.  
     
  4.  
    UVE

  1.  
     
  2.  
    plot(abs(UVE.RI))

 

結果解釋。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.  
     

  1.  
     
  2.  
    xlabel('變量序號');
  3.  
    ylabel('選擇概率'); 

 

結果解釋:

模型結果是一個矩陣,儲存了每一個相互關系中的選擇變量。
概率:每個變量被包含在最終模型中的概率。越大越好。這是一個衡量變量重要性的有用指標。


最受歡迎的見解

1.R語言多元Logistic邏輯回歸 應用案例

2.面板平滑轉移回歸(PSTR)分析案例實現

3.matlab中的偏最小二乘回歸(PLSR)和主成分回歸(PCR)

4.R語言泊松Poisson回歸模型分析案例

5.R語言回歸中的Hosmer-Lemeshow擬合優度檢驗

6.r語言中對LASSO回歸,Ridge嶺回歸和Elastic Net模型實現

7.在R語言中實現Logistic邏輯回歸

8.python用線性回歸預測股票價格

9.R語言如何在生存分析與Cox回歸中計算IDI,NRI指標


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM