原文链接:http://tecdat.cn/?p=8890
主成分回归(PCR)的办法 实质上是应用第一个办法的一般最小二乘(OLS)拟合来自预测变量的主成分(PC)。这带来许多长处:
- 预测变量的数量实际上没有限度。
- 相干的预测变量不会毁坏回归拟合。
然而,在许多状况下,执行相似于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与所有其余蛋白质辨别开。这可能是一个乏味的癌症生物标志物。当然,必须进行许多其余测试和模型来提供牢靠的诊断工具。