迷失森林好玩的代码(迷失森林好玩的地方)

假期结束要开始充电学习了,今天给大家分享随机森林算法。随机森林是当下非常受欢迎的机器学习算法之一,鲁棒性好且易于使用。在数据挖掘中,我们常用它来构建分类模型,今天就来看看它在科研中的实际应用。

比如我们拿到了一些基因在某个疾病中的的表达谱,也有对应的样本分类,如control vs case,我们可以利用R包randomForest构建随机森林分类器,通过特征基因预测疾病分类。现在我准备了一个基因在行、样本在列的表达谱:

还有对应的表型分类:

为了适用于随机森林函数,我们先将表达谱和表型样本取交集,并将表达谱转置成基因在列样本在行的表达谱:

sam<-intersect(rownames(pheno),colnames(expr))expr<-expr[,sam]expr<-as.data.frame(t(expr))pheno<-pheno[sam,,drop=FALSE]

接着设置随机种子,并构建随机森林分类模型:

set.seed(111)rf<-randomForest(x=expr,y=as.factor(pheno$tissue),importance=TRUE,proximity=TRUE,ntree=1500,mtry=10)

我们会获得每个基因的权重(importance),用以表征基因对疾病分类的重要程度(如果分类特征是生存状态,那么就可以表征基因对预后的重要性)。利用varImpPlot()函数可以对importance可视化:

如图,随机森林给出两个指标用以评估importance,分别是MeanDecreaseAccuracy和MeanDecreaseGini。通过以上分析,会发现randomForest可以方便的构建分类器,但却不具备特征筛选功能。也就是说,它并不能像LASSO、单因素cox、多因素cox一样直接筛选特征。不过,我们可以依据特征的importance设置临界阈值筛选特征基因;也可以通过RFE等特征筛选算法进一步实现降维;另外还有一些R包已将随机森林和特征筛选打包在一起,实现一键降维,如R包Boruta、VSURF等。

今天的分享就到这了,觉得不错记得收藏转发哦!

Top