R語言中的偏最小二乘回歸PLS-DA
原文鏈接:http://tecdat.cn/?p=8890
?
主成分回歸(PCR)的方法 本質上是使用第一個方法的普通最小二乘(OLS)擬合

來自預測變量的主成分(PC)。這帶來許多優(yōu)點:
預測變量的數量實際上沒有限制。??
相關的預測變量不會破壞回歸擬合。?
但是,在許多情況下,執(zhí)行類似于PCA的分解要明智得多。
今天,我們將 在Arcene數據集上執(zhí)行PLS-DA,??其中包含100個觀察值和10,000個解釋變量。
讓我們開始使用R
癌癥/無癌標簽(編碼為-1 / 1)存儲在不同的文件中,因此我們可以將其直接附加到完整的數據集,然后使用公式語法來訓練模型。
# 安裝加載
library(caret)
arcene <- read.table("train.data", sep = " ",
colClasses = c(rep("numeric", 10000), "NULL"))
# 將標簽添加為附加列
arcene$class <- factor(scan("rain.labels", sep = "\t"))
?現(xiàn)在的主要問題是:
我們如何根據其血清的MS譜準確預測患者是否生病?
哪種蛋白質/ MS峰最能區(qū)分患者和健康患者?
?關于預處理,我們將使用preProc參數以精確的順序刪除零方差預測變量,并對所有剩余的變量進行標準化??紤]樣本的大?。╪= 100),我將選擇10次重復的5折交叉驗證(CV)–大量重復彌補了因減少的驗證次數而產生的高方差–總共進行了50次準確性估算。?
# 編譯交叉驗證設置
set.seed(100)
myfolds <- createMultiFolds(arcene$class, k = 5, times = 10)
control <- trainControl("repeatedcv", index = myfolds, selectionFunction = "oneSE")

此圖描繪了CV曲線,在這里我們可以學習從使用不同數量的LV(x軸)訓練的模型中獲得的平均準確度(y軸,%)。?
現(xiàn)在,我們 進行線性判別分析(LDA)進行比較。 我們還可以嘗試一些更復雜的模型,例如隨機森林(RF)。?
最后,我們可以比較PLS-DA,PCA-DA和RF的準確性。?
我們將使用resamples編譯這三個模型,并借用ggplot2的繪圖功能來比較三種情況下最佳交叉驗證模型的50個準確性估計值。
?

顯然,長時間的RF運行并沒有轉化為出色的性能,恰恰相反。盡管三個模型的平均性能相似,但RF的精度差異要大得多,如果我們要尋找一個魯棒的模型,這當然是一個問題。在這種情況下,PLS-DA和PCA-DA表現(xiàn)出最好的性能(準確度為63-95%),并且這兩種模型在診斷新血清樣品中的癌癥方面都表現(xiàn)出色。
總而言之,我們將使用PLS-DA和PCA-DA中預測的變量重要性(ViP)確定十種最能診斷癌癥的蛋白質。?


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