TCGA学习04:建模预测-随机森林&向量机

TCGA学习01:数据下载与整理 -
TCGA学习02:差异分析 -
TCGA学习03:生存分析 -
TCGA学习04:建模预测-cox回归 -
TCGA学习04:建模预测-lasso回归 -
TCGA学习04:建模预测-随机森林&向量机 -
关于随机森林与向量机之前,学习R时,有过一定了了解,详见R语言入门--第十五节(预测二分类) ,是两种复杂但建模质量较高的两种方法。

法3:随机森林

  • (1)训练集建模
rm(list=ls())
load("tosur.RData")
exprSet=exp_tumor
library(randomForest)
library(ROCR)
library(genefilter)
library(Hmisc)

library(caret)
set.seed(12345679)
sam<- createDataPartition(meta$event, p = .5,list = FALSE)
train <- exprSet[,sam]
test <- exprSet[,-sam]
train_meta <- meta[sam,]
test_meta <- meta[-sam,]

x = t(log2(train+1))
y = train_meta$event
rf_output=randomForest(x=x, y=y,importance = TRUE, ntree = 10001, proximity=TRUE )
  • 由于设置ntree = 10001,比较耗时,十多分钟,默认值应该为500。
  • 同时计算结束后,返回如下warning,后面的流程觉得没显示异常,暂且记录下。
warning
choose_gene=rownames(tail(rf_importances[order(rf_importances[,2]),],30))
length(choose_gene)
  • (2)验证集验证模型
x = t(log2(test+1))
y = test_meta$event
rf.prob <- predict(rf_output, x)
#同样预测的是生存概率
re=cbind(y ,rf.prob)
re=as.data.frame(re)
colnames(re)=c('event','prob')
re$event=as.factor(re$event)
#先看看箱线图
library(ggpubr) 
p1 = ggboxplot(re, x = "event", y = "prob",
               color = "event", palette = "jco",
               add = "jitter")+ stat_compare_means()
p1
TCGA学习04:建模预测-随机森林&向量机_第1张图片
箱线图,区分度好差...
# 再简单看下AUC值
library(ROCR)
pred <- prediction(re[,2], re[,1])
auc= performance(pred,"auc")@y.values[[1]]
auc
# [1] 0.5694418

果然数据质量低,用什么方法都没救....

法4:向量机

  • 注意:向量机的预测结果直接是事件,即0/1,而不是概率。
    (1)训练集建模
rm(list=ls())
load("tosur.RData")
exprSet=exp_tumor

library(ROCR)
library(genefilter)
library(Hmisc)
library(e1071)

library(caret)
set.seed(12345)
sam<- createDataPartition(meta$event, p = .5,list = FALSE)

train <- exprSet[,sam]
test <- exprSet[,-sam]
train_meta <- meta[sam,]
test_meta <- meta[-sam,]

x=t(log2(train+1))
y=as.factor(train_meta$event)
model = svm(x,y,kernel = "linear")
summary(model) 
TCGA学习04:建模预测-随机森林&向量机_第2张图片
summary(model)
  • 预测验证集
x=t(log2(test+1))
y=as.factor(test_meta$event)
pred = predict(model, x)
table(pred,y)

如下图结果:

  • 173个实际为0,即生的患者,模型预测对111个;
  • 87个实际为1,即死的患者,模型只预测对38个。
table(pred,y)

TCGA系列学习笔记暂时就这样吧~ 重在流程的了解,以及R操作。之后对于相关知识点(癌症、统计学知识)等等值得暑假进一步学习。

你可能感兴趣的:(TCGA学习04:建模预测-随机森林&向量机)