R語言中的偏最小二乘回歸PLS-DA


原文鏈接:http://tecdat.cn/?p=8890

 

主成分回歸(PCR)的方法 本質上是使用第一個方法的普通最小二乘(OLS)擬合ķ​來自預測變量的主成分(PC)。這帶來許多優點:

  1. 預測變量的數量實際上沒有限制。  
  2. 相關的預測變量不會破壞回歸擬合。 

但是,在許多情況下,執行類似於PCA的分解要明智得多。

今天,我們將 在Arcene數據集上執行PLS-DA,  其中包含100個觀察值和10,000個解釋變量。

讓我們開始使用R

癌症/無癌標簽(編碼為-1 / 1)存儲在不同的文件中,因此我們可以將其直接附加到完整的數據集,然后使用公式語法來訓練模型。

# Load caret, install if necessary
library(caret)
arcene <- read.table("http://archive.ics.uci.edu/ml/machine-learning-databases/arcene/ARCENE/arcene_train.data", sep = " ",
 colClasses = c(rep("numeric", 10000), "NULL"))

# Add the labels as an additional column
arcene$class <- factor(scan("https://archive.ics.uci.edu/ml/machine-learning-databases/arcene/ARCENE/arcene_train.labels", sep = "\t"))

 ,現在的主要問題是:

  • 我們如何根據其血清的MS譜准確預測患者是否生病?
  • 哪種蛋白質/ MS峰最能區分患者和健康患者?

 關於預處理,我們將使用preProc參數以精確的順​​序刪除零方差預測變量,並對所有剩余的變量進行標准化。考慮樣本的大小(n= 100),我將選擇10倍的重復5倍交叉驗證(CV)–大量重復補償了因減少的折疊次數而產生的高方差–總共進行了50次准確性估算。 

# Compile cross-validation settings
set.seed(100)
myfolds <- createMultiFolds(arcene$class, k = 5, times = 10)
control <- trainControl("repeatedcv", index = myfolds, selectionFunction = "oneSE")

繪圖

此圖描繪了CV曲線,在這里我們可以學習從使用不同數量的LV(x軸)訓練的模型中獲得的平均准確度(y軸,%)。 

現在,我們 進行線性判別分析(LDA)進行比較。 我們還可以嘗試一些更復雜的模型,例如隨機森林(RF)。 

最后,我們可以比較PLS-DA,PCA-DA和RF的准確性。 

我們將使用caret :: resamples編譯這三個模型,並借用ggplot2的繪圖功能來比較三種情況下最佳交叉驗證模型的50個准確性估計值。

 

繪圖

顯然,長時間的RF運行並沒有轉化為出色的性能,恰恰相反。盡管三個模型的平均性能相似,但RF的精度差異要大得多,如果我們要尋找一個健壯的模型,這當然是一個問題。在這種情況下,PLS-DA和PCA-DA表現出最好的性能(准確度為63-95%),並且這兩種模型在診斷新血清樣品中的癌症方面都表現出色。

總而言之,我們將使用PLS-DA和PCA-DA中預測的可變重要性(ViP)確定十種最能診斷癌症的蛋白質。 

Rplot01

Rplot02

 

上面的PLS-DA ViP圖清楚地將V1184與所有其他蛋白質區分開。這可能是一個有趣的癌症生物標志物。當然,必須進行許多其他測試和模型以提供可靠的診斷工具。 

 

 

如果您有任何疑問,請在下面發表評論。 

 


免責聲明!

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



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