机器学习算法之随机森林的R语言实现-表达芯片示例

终于还是要发这个系列了,其实我还没有准备好,机器学习系列,有一个公众号做的非常好,是中科院上海马普所的几个同学做的,过两天我会在此推送他们的学习目录,供大家欣赏。

我就先抛砖引玉吧:

随机森林背景介绍

讨厌写背景知识,大家自己去搜搜吧!

准备训练数据和测试数据集

这里,我们从GEO数据库里面下载两个不同研究的表达芯片数据

training data set:GSE2034

GSE2034已经是2005年的数据了,不过资料整理的比较其实,共有180 lymph-node negative relapse free patients 和 106 lymph-node negate patients that developed a distant metastasis.

test data set:GSE2990

GSE2990是2006年的数据,数据包括:64 microarray experiments from primary breast tumors used as training set to identify genes differentially expressed in grade 1 and 3.还有129 microarray experiments from primary breast tumors of untreated patients used as validation set to validate the list of genes and its correlation with survival.

它们使用的是同一个芯片平台:Affymetrix U133A platform (GPL96).

下载GEO数据库的芯片数据并且处理成表达矩阵是非常简单的,处理方式及代码见:R语言实现随机森林(1)Prepare-dataset

最后得到:

training_data 是12437个基因在286个样本的表达矩阵

testing_data 是12437个基因在189个样本的表达矩阵

training_clinical 是训练数据集的286个样本的临床信息

testing_clinical 是测试数据集的189个样本的临床信息

这些数据在后面构建随机森林模型就会用得着啦

用训练数据构建随机森林分类器

随机森林算法只需要两个输入文件:

  • 多个变量在多个样本的数据矩阵
  • 每个样本的结果

在我们的例子里面,需要把training_data 是12437个基因在286个样本的表达矩阵进行过滤,不是所有的基因都有资格进入随机森林模型里面,还有这286个样本是否发生了癌症复发的情况。

根据这两个input建立模型的步骤见:R语言实现随机森林(2)Construct model

建立好模型了,可以进行简单的统计,看看模型效果如何。 接下来就可以利用建立好的模型对新的样本的多个变量的值来预测新样本的结果了。

在测试数据上使用构建好的随机森林分类器

测试数据也是表达矩阵,在我们的例子里面是testing_data 是12437个基因在189个样本的表达矩阵!

用模型进行预测只需要一句代码即可,就可以给出每个样本的癌症复发与否的预测结果,同时也会给出复发与否的预测概率。 也可以对预测结果进行一些统计分析,预测效果检验。当然,我们没有这189个样本的癌症复发情况的信息,所以不可能得到真实的预测准确性。

具体代码见:R语言实现随机森林(3)Test the model

用生存分析来查看分类效果

虽然我们没有那189个样本的癌症复发情况的信息,所以不可能得到真实的预测准确性。但是我们可以根据预测值把样本分成3组,然后根据不同的分组来做生存分析,因为癌症复发高风险病人的生存情况应该是会很糟糕,如果生存分析结果也是如此,那么就说明我们的预测效果还不错。 具体代码见:R语言实现随机森林(4)Justice the model

结语

在R里面实现随机森林是非常简单的,只需要制作好用于随机森林模型构建的所有样本的所有变量矩阵以及样本的结果即可。 一句话就建立好模型了

rf_output=randomForest(x=predictor_data, y=target, importance = TRUE, ntree = 10001, proximity=TRUE, sampsize=sampsizes)

关键在于理解这个算法,可是我讲不出来,抛开算法不谈,还需要理解这个模型的输出。

这就是为什么本文拿了两个实际的芯片表达数据来做例子。

原文发布于微信公众号 - 生信技能树(biotrainee)

原文发表时间:2017-11-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏新智元

CNN实现“读脑术”,成功解码人脑视觉活动,准确率超50%

【新智元导读】研究人员开发出以人脑为模型的深度学习算法,来破解人类大脑。相关研究发表在最新一期Cerebral Cortex,研究人员构建了一个大脑如何解码信息...

2967
来自专栏AI科技评论

学界 | 康奈尔大学说对抗样本出门会失效,被OpenAI怼回来了!

AI科技评论按:看来,我们还是不能对对抗样本问题掉以轻心。 上周,康奈尔大学的一篇论文表示,当图像识别算法应用于实际生活场景下(比如自动驾驶)时,可能不需要那么...

3218
来自专栏企鹅号快讯

OpenAI 发布稀疏计算内核,更宽更深的网络,一样的计算开销

雷锋网 AI 科技评论按:OpenAI 的研究人员们近日发布了一个高度优化的 GPU 计算内核,它可以支持一种几乎没被人们探索过的神经网络架构:带有稀疏块权重的...

1895
来自专栏磐创AI技术团队的专栏

深度学习之视频人脸识别系列(一):简介

982
来自专栏Spark学习技巧

推荐系统系列之隐语义模型

793
来自专栏AI科技大本营的专栏

与其撩妹尬舞,倒不如跟AI学跳舞

作者 | Caroline Chan、Shiry Ginosar、Tinghui Zhou 和 Alexei A. Efros

642
来自专栏应兆康的专栏

26. 训练集误差分析

1485
来自专栏大数据文摘

准确率99.9%!如何用深度学习最快找出放倒的那张X光胸片(代码+数据)

1446
来自专栏AI科技大本营的专栏

Reddit热点 | 想看被打码的羞羞图片怎么办?CNN帮你解决

翻译 | 刘畅 编辑 | Donna,波波 超分辨重构是图像处理领域地一项非常有趣的任务。它可以通过算法将一张低分辨率的图片放大成一张高分辨率地图片。这个事情乍...

2784
来自专栏新智元

CVPR 2018:阿里提出应用 LocalizedGAN 进行半监督训练

1645

扫码关注云+社区