乐趣区

关于算法:R语言中的偏最小二乘回归PLSDA

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

主成分回归(PCR)的办法 实质上是应用第一个办法的一般最小二乘(OLS)拟合 来自预测变量的主成分(PC)。这带来许多长处:

  1. 预测变量的数量实际上没有限度。  
  2. 相干的预测变量不会毁坏回归拟合。

然而,在许多状况下,执行相似于 PCA 的合成要理智得多。

明天,咱们将 在 Arcene 数据集上执行 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"))

 当初的次要问题是:

  • 咱们如何依据其血清的 MS 谱精确预测患者是否生病?
  • 哪种蛋白质 / MS 峰最能辨别患者和衰弱患者?

 对于预处理,咱们将应用 preProc 参数以准确的程序删除零方差预测变量,并对所有残余的变量进行标准化。思考样本的大小(_n_= 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_轴,%)。

当初,咱们 进行线性判别分析(LDA)进行比拟。咱们还能够尝试一些更简单的模型,例如随机森林(RF)。

最初,咱们能够比拟 PLS-DA,PCA-DA 和 RF 的准确性。

咱们将应用 resamples 编译这三个模型,并借用 ggplot2 的绘图性能来比拟三种状况下最佳穿插验证模型的 50 个准确性估计值。

显然,长时间的 RF 运行并没有转化为杰出的性能,恰恰相反。只管三个模型的均匀性能类似,但 RF 的精度差别要大得多,如果咱们要寻找一个鲁棒的模型,这当然是一个问题。在这种状况下,PLS-DA 和 PCA-DA 体现出最好的性能(准确度为 63-95%),并且这两种模型在诊断新血清样品中的癌症方面都表现出色。

总而言之,咱们将应用 PLS-DA 和 PCA-DA 中预测的变量重要性(ViP)确定十种最能诊断癌症的蛋白质。

下面的 PLS-DA ViP 图分明地将 V1184 与所有其余蛋白质辨别开。这可能是一个乏味的癌症生物标志物。当然,必须进行许多其余测试和模型来提供牢靠的诊断工具。

退出移动版