机器学习算法之随机森林的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 条评论
登录 后参与评论

相关文章

来自专栏计算机视觉战队

CVPR—II | 经典网络再现,全内容跟踪

今天首先给大家带来“YOLO”!也被上一篇“Faith”读者说对了,在此也感谢大家的关注与阅读,O(∩_∩)O谢谢 YOLO ? 看到这个封面,相信很多很多...

3455
来自专栏小鹏的专栏

tensorflow_cookbook--preface

Preface         TensorFlow在2015年11月由Google开放,从此,它已经成为GitHub上最受欢迎的机器学习库。 TensorFl...

17910
来自专栏数据派THU

教你用Python解决非平衡数据问题(附代码)

本文为你分享数据挖掘中常见的非平衡数据的处理,内容涉及到非平衡数据的解决方案和原理,以及如何使用Python这个强大的工具实现平衡的转换。

812
来自专栏专知

【干货】​在Python中构建可部署的ML分类器

【导读】本文是机器学习爱好者 Sambit Mahapatra 撰写的一篇技术博文,利用Python设计一个二分类器,详细讨论了模型中的三个主要过程:处理不平衡...

34911
来自专栏专知

【前沿】Geoffery Hinton 的 NIPS2017 Capsule论文简读

10月26日,深度学习元老Hinton的NIPS2017 Capsule论文《Dynamic Routing Between Capsules》终于在arxiv...

2443
来自专栏Echo is learning

machine learning 之 多元线性回归

1313
来自专栏PaddlePaddle

技术|深度学习技术黑话合辑

1002
来自专栏小鹏的专栏

用 TensorFlow 创建自己的 Speech Recognizer

参考资料 源码请点:https://github.com/llSourcell/tensorf... 语音识别无处不在,siri,google,讯飞输入法...

2816
来自专栏机器之心

ACL 2018 | 神经语言模型如何利用上下文信息:长距离上下文的词序并不重要

2025
来自专栏AI科技评论

内部分享:这篇文章教你如何用神经网络破Flappy Bird记录

AI科技评论按:本文作者杨浩,原文载于作者个人博客。 以下内容来源于一次部门内部的分享,主要针对 AI 初学者,介绍包括 CNN、Deep Q Network...

3557

扫码关注云+社区