专栏首页拓端tecdatR语言中的偏最小二乘回归PLS-DA
原创

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 necessarylibrary(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 columnarcene$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 settingsset.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)确定十种最能诊断癌症的蛋白质。 

上面的PLS-DA ViP图清楚地将V1184与所有其他蛋白质区分开。这可能是一个有趣的癌症生物标志物。当然,必须进行许多其他测试和模型以提供可靠的诊断工具。 

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 如何用R语言在机器学习中建立集成模型?

    在本文中,我将向您介绍集成建模的基础知识。另外,为了向您提供有关集合建模的实践经验,我们将使用R对hackathon问题进行集成。

    拓端
  • 用R语言中的神经网络预测时间序列:多层感知器和极限学习机

    对于此示例,我将对R中的时间序列进行建模。我将最后24个观察值保留为测试集,并将使用其余的观察值来拟合神经网络。当前有两种类型的神经网络可用,多层感知器;和极限...

    拓端
  • R语言多项式样条回归、非线性回归数据分析

    本文将使用三种方法使模型适合曲线数据:1)多项式回归;2)用多项式样条进行B样条回归;3) 进行非线性回归。在此示例中,这三个中的每一个都将找到基本相同的最佳拟...

    拓端
  • TensorFlow:使用Cloud TPU在30分钟内训练出实时移动对象检测器

    是否能够更快地训练和提供对象检测模型?我们已经听到了这种的反馈,在今天我们很高兴地宣布支持训练Cloud TPU上的对象检测模型,模型量化以及并添加了包括Ret...

    AiTechYun
  • TRTC云端混流-FailedOperation.RequestRejection-SdkAppId not support

    小明同学接音视频
  • 马云与马化腾:10万亿互联网医疗蓝海里的两条大鳄

    ? 3月25日,腾讯副总裁丁珂在贵州宣布启动“腾爱医疗”战略,即利用自身强大的社交基因和大数据能力,搭建“互联网+医疗”开放平台,为医疗产业提供互联网化的后端...

    灯塔大数据
  • Android实现标题上显示隐藏进度条效果

    一个界面,实现在向页面添加图片时,在标题上显示一个水平进度条,当图片载入完毕后,隐藏进度条并显示图片

    砸漏
  • 请求地址最后面的 “/” 加和不加到底有什么区别?

    URL 是我们每天畅游在互联网世界中最最常见的东西了,对于普通用户来说,URL 就是一个字符串,比如 http://www.justdojava.com ,但是...

    江南一点雨
  • 场景文本检测—CTPN算法介绍

    原创声明:本文为 SIGAI 原创文章,仅供个人学习使用,未经允许,不得转载,不能用于商业目的。

    SIGAI学习与实践平台
  • Github里面那个build的小图标是怎么玩的?

    例如上面这个小图标,github上的工程build后,会显示编译后的状态,通过还是编译失败。

    rectinajh

扫码关注云+社区

领取腾讯云代金券