美文网首页TCGA-流程TCGA数据挖掘学习笔记预后/生存
TCGA学习04:建模预测-随机森林&向量机

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

作者: 小贝学生信 | 来源:发表于2020-05-08 20:56 被阅读0次

    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
    
    箱线图,区分度好差...
    # 再简单看下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) 
    
    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:建模预测-随机森林&向量机

        本文链接:https://www.haomeiwen.com/subject/ftnfnhtx.html