Mime 是一个灵活的计算框架,可用于构建性能优异的基于机器学习的整合模型。本文提供了利用复杂数据集开发高精度预测模型的详细逐步操作流程,以识别与疾病进展、患者预后及治疗反应相关的关键基因。
需要JoVE订阅才能观看此内容。 请登录或开始免费试用
Mime 是一个灵活的计算框架,可用于构建性能优异的基于机器学习的整合模型。本文提供了利用复杂数据集开发高精度预测模型的详细逐步操作流程,以识别与疾病进展、患者预后及治疗反应相关的关键基因。
高通量测序技术的广泛应用显著加深了我们对生物学及肿瘤异质性的理解。基于转录组数据的机器学习算法在预测患者预后和临床治疗反应方面已变得至关重要。尽管机器学习算法不断进步,但目前仍缺乏一个开源平台,能够整合最先进的机器学习算法用于转录组数据分析。为填补这一空白,我们开发了 Mime——一个多功能的机器学习框架,旨在提升临床特征和基因特征预测模型的构建与可视化能力。Mime 通过整合多种数据集并采用最先进的特征选择技术,解决了临床预测中的关键挑战。该框架提供三大核心功能:模型构建、特征选择和数据可视化。模型构建涵盖多种机器学习算法,包括但不限于决策树、支持向量机和集成方法,使研究人员能够根据具体分析需求选择最合适的建模策略。特征选择模块采用递归特征消除(Recursive Feature Elimination)和LASSO回归等先进算法,精简数据集并聚焦最具信息量的特征。该框架支持通过交叉验证方法进行可定制的参数调优,在优化模型性能的同时降低过拟合风险。Mime 内置的可视化工具使研究人员能够高效解读模型结果,提供特征重要性及预测性能指标的图形化展示。在本文中,我们将详细介绍这一多功能机器学习框架的逐步操作流程。
高通量测序技术的广泛应用极大地推动了我们对生物学和癌症异质性的理解1。这一生物技术领域的突破性进展不仅深化了我们的科学认知,也彻底改变了医学研究领域。通过使科研人员能够快速而准确地对大量遗传物质进行测序,高通量测序加速了新基因、突变及生物学通路的发现。越来越多的研究已从测序数据中明确出与疾病进展、患者预后及治疗反应性相关的特定分子特征2,3,4。这些特定特征为理解肿瘤生物学背后的转录调控网络提供了全面的图景,涵盖肿瘤起源、分化、迁移以及治疗耐药性等方面5。这些特征通常具有多样性和复杂性,涉及多个层面,而非局限于单一表现形式,这使得筛选和识别与疾病高度相关的关键基因变得困难。因此,迫切需要合理的计算策略来筛选出与疾病相关的关键基因。
机器学习(ML)是人工智能的一个分支,致力于构建能够从复杂数据集中学习、识别模式并建立高精度预测模型的系统,从而为决策提供参考依据6。近年来,基于转录组数据构建机器学习模型以预测患者预后或诊断疾病的研究已在多种疾病中迅速发展7,8,9,10。由于训练所用的数据集和算法不同,这些模型的性能往往存在显著差异。如何为后续实验和临床应用选择最优模型已成为一个紧迫的挑战。一种可行的方法是通过比较不同模型的性能,筛选出最具潜力的模型用于进一步应用7,11。此外,不同计算框架支持的参数设置和结果格式各异,这为模型间的比较分析带来了重大挑战。然而,目前尚无软件能够整合前沿的机器学习算法,以系统比较不同模型的优缺点并简化参数选择过程,从而降低用户的使用门槛。因此,亟需开发用户友好的软件工具,以促进转录组数据与多种机器学习算法的整合,同时克服当前生物标志物筛选和模型解释方面的局限性。此类技术进步将极大拓展我们对现有研究领域的认知能力,并最终改善患者的诊疗结局。
本研究开发了一个名为 Mime12 的开源 R 软件包,该软件包在多个数据集上表现出稳健的性能,旨在简化转录组数据集与多种机器学习算法的整合过程,从而降低相关操作的复杂性。为了从大规模转录组数据中识别潜在候选因子并构建最优模型,Mime 提供了四项应用功能:通过整合 10 种机器学习算法构建最优预后模型;利用 7 种机器学习算法构建二分类响应模型;采用 8 种机器学习算法识别与预后相关的核心特征;以及对各模型性能进行可视化展示。
访问受限。请登录或开始试用以查看此内容。
注意:本研究的教程均在 Linux 平台上使用 R 软件运行。本方案所用 R 软件包的版本列于材料表中。以下展示了分析所需的每一步操作,详细协议也可在 GitHub 获取(https://github.com/l-magnificence/Mime)。使用 Mime 过程中遇到问题的用户可访问 GitHub Issue 页面(https://github.com/l-magnificence/Mime/issues)提供反馈。
1. Mime 软件及示例数据集的准备
devtools::install_github("l-magnificence/Mime")加载("./Example.cohort.Rdata" )
训练与验证数据列表 [["数据集1" ]][1:5,1:5]
#> ID OS.时间 OS MT-CO1 MT-CO3
#> TCGA.DH.A66B.01 1281.65322 0 13.77340 13.67931
#> TCGA.HT.7607.01 96.19915 1 14.96535 14.31857
#> TCGA.DB.A64Q.01 182.37755 0 13.90659 13.65321
#> TCGA.DU.8167.01 471.97707 0 14.90695 14.59776
#> TCGA.HT.7610.01 1709.53901 0 15.22784 14.62756 加载("./Example.ici.Rdata")
list_train_vali_Data[["训练"]][1:5,1:5]
#> ID 变量 FTH1 EEF1A1 ACTB
#> SAMf2ce197162ce N 10.114846 4.817746 11.230180
#> ERR2208915 Y 2.044180 5.038854 3.977902
#> G138701_RCCBMS Y 5.406008 5.341635 5.366668
#> SAMe41b1e773582 N 9.215794 4.707360 11.412721
#> SAM5ffd7e4cd794 N 9.003710 3.908884 10.440559 加载("./genelist.Rdata" )
#> [1] "MYC" "CTNNB1" "JAG2" "NOTCH1" "DLL1" "AXIN2" "PSEN2" "FZD1" "NOTCH4" "LEF1" "AXIN1" "NKD1" "WNT5B"
#>[14] "CUL1" "JAG1" "MAML1" "KAT2A" "GNAI1" "WNT6" "PTCH1" "NCOR2" "DKK4" "HDAC2" "DKK1" "TCF7" "WNT1"
#>[27] "NUMB" "ADAM17" "DVL2" "PPARD" "NCSTN" "HDAC5" "CCND2" "FRAT1" "CSNK1E" "RBPJ" "FZD8" "TP53" "SKP2"
#>[40] "HEY2" "HEY1" "HDAC11" 2. 构建预后预测模型
library (Mime1)
加载 ("./Example.cohort.Rdata" )
加载 ("./genelist.Rdata" )
res <- 机器学习开发程序特征 (训练数据 = list_train_vali_Data $Dataset1,
list_train_vali_Data = 列出训练与验证数据,
unicox.filter.for.candi = T,
unicox_p_cutoff = 0.05,
候选基因 = 基因列表,
模式 = “全部”,节点大小 =5,seed = 5201314 ) cindex_dis_all (res, validate_set = names (list_train_vali_Data )[-1 ],
顺序 =names (训练与验证数据列表 ),宽度 = 0.35 ) 生存曲线图 <- 向量 ("列表",2 )
用于 (i 在 c (1:2)) {
打印 生存曲线图 [[i ]]<-rs_sur (res,
模型名称 = "StepCox[向前] + plsRcox",
数据集 = 名称 (训练与验证数据列表) )[i ],
中位线 = "hv",
截断值 = 0.5,
置信区间 = T,
x轴标签 ="天",pval.coord = c (1000,0.9 )))
}
aplot ::plot_list (gglist =生存曲线图,列数 =2 ) all.auc.1y <- cal_AUC_ml_res (res.by.ML.Dev.Prog.Sig =res,
训练数据 = list_train_vali_Data [["数据集1" ]],
输入矩阵列表 =list_train_vali_Data,
模式 = “全部”,AUC_时间 = 1,
auc_cal_method ="KM" ) auc_dis_all(all.auc.1y,
数据集 = names(列表_训练_验证_数据),
validate_set=names(list_train_vali_Data)[-1],
order = names(list_train_vali_Data),
宽度 = 0.35,
年份=1 roc_vis(all.auc.1y,
model_name = "StepCox[向前] + plsRcox",
数据集 = names(列表_训练_验证_数据),
order= names(list_train_vali_Data),
anno_position=c(0.65,0.55)
年=1 3. 构建响应预测模型
load("./Example.ici.Rdata")
load("./genelist.Rdata")
res.ici <- ML.Dev.Pred.Category.Sig(
train_data = list_train_vali_Data$training,
list_train_vali_Data = list_train_vali_Data,
candidate_genes = genelist,
methods = c('nb','svmRadialWeights','rf',
'kknn','adaboost','LogitBoost',
'cancerclass'),
seed = 5201314,
cores_for_parallel = 60
) auc_vis_category_all(res.ici, dataset = c("training","validation"),
order = c("training","validation")) plot_list <- list()
methods <- c('nb','svmRadialWeights','rf','kknn', 'adaboost','LogitBoost','cancerclass')
for (i in methods) {
plot_list[[i]] <- roc_vis_category(res.ici, model_name = i,
dataset = c("training","validation"),
order = c("training","validation"),
anno_position = c(0.4, 0.25))
}
aplot::plot_list(gglist = plot_list, ncol = 3) 4. 核心特征筛选
加载("./Example.cohort.Rdata")
加载("./genelist.Rdata")
res.feature.all <- 机器学习核心特征进展筛选
InputMatrix = list_train_vali_Data$Dataset1
候选基因 = genelist,
模式 = "全部",nodesize =5,seed = 5201314 ) core_feature_rank(res.feature.all, top=20)访问受限。请登录或开始试用以查看此内容。
通过在 Mime 中整合 10 种机器学习算法,利用基因列表和包含一个训练队列及一个验证队列的 Example.cohort 构建预后模型。在 Mime 构建的 117 个预后模型中,StepCox[forward] + plsRcox 联合模型(SPCOM)在所有队列中的 C 指数最高,表明其具有卓越的性能(图 1A)。根据 SPCOM 计算出的中位风险评分,患者被进一步分为高风险组和低风险组。有趣的是,在所有队列中,高风险评分患者的预后显著更差(图 1B)。值得注意的是,SPCOM 预测的 1 年 AUC 在所有队列中均排名第一,且 AUC 均值最高(图 1C,D)。这些结果表明,基于 Mime 的机器学习框架使用户能够基于提供的基因集和数据集轻松构建预后模型。
通过整合 Mime 中的 7 种机器学习算法,利用基因列表和包含一个训练队列与一个验证队列的 Exampl...
访问受限。请登录或开始试用以查看此内容。
本研究详细介绍了如何使用 Mime 软件包为转录组学数据构建稳健且高效的机器学习预测模型。在以往的研究中,研究人员常常难以根据测序数据的具体特征选择合适的预测模型算法13,14。此外,对于缺乏计算机科学背景的研究人员而言,稳定机器学习环境、选择合适参数以及同步部署模型均存在一定困难15。为解决这一问题,我们在 Mime 软件包中整合了 10 种机器学习预后模型算法、7 种二分类响应的机器学习算法以及 8 种与预后相关的核心特征筛选算法。通过在同一训练集上全面比较不同机器学习算法的预测性能,研究人员可选择表现最优的模型。
常见机器学习工具在模型构建中的概述也总结于补充 表1中。与其他工具相比,Mime 提供了更多用于生存预测、临床分类和特征选择的模型训练算法,并且这些算法还可同时组合使用。本文提供了详细的分步指南,包括 R 软件包的安装、数据清...
访问受限。请登录或开始试用以查看此内容。
未声明任何利益冲突。
我们感谢所有参与数据生产的受试者和研究人员。
访问受限。请登录或开始试用以查看此内容。
| 姓名 | 公司 | 目录编号 | 评论 |
|---|---|---|---|
| 软件包名称 | 版本 | 软件 | |
| aplot | 0.1.10 | R studio | |
| BART | 2.9.4 | R studio | |
| Boruta | 8.0.0 | R studio | |
| cancerclass | 1.38.0 | R studio | |
| caret | 6.0-89 | R studio | |
| Ckmeans.1d.dp | 4.3.5 | R studio | |
| compareC | 1.3.2 | R studio | |
| ComplexHeatmap | 2.15.1 | R studio | |
| compositions | 2.0-4 | R studio | |
| data.table | 1.14.0 | R studio | |
| doParallel | 1.0.16 | R studio | |
| dplyr | 1.1.3 | R studio | |
| e1071 | 1.7-7 | R studio | |
| forestploter | 1.1.0 | R studio | |
| future | 1.21.0 | R studio | |
| gbm | 2.1.8.1 | R studio | |
| ggbreak | 0.1.1 | R studio | |
| ggplot2 | 3.4.1 | R studio | |
| ggpubr | 0.4.0 | R studio | |
| ggsci | 2.9 | R studio | |
| glmnet | 4.1-2 | R studio | |
| grid | 4.1.3 | R studio | |
| gridExtra | 2.3 | R studio | |
| GSEABase | 1.54.0 | R studio | |
| GSVA | 1.40.1 | R studio | |
| Hmisc | 5.1-1 | R studio | |
| kknn | 1.3.1 | R studio | |
| knitr | 1.42 | R studio | |
| magrittr | 2.7.2 | R studio | |
| Matrix | 1.5-4 | R studio | |
| meta | 5.2-0 | R studio | |
| miscTools | 0.6-28 | R studio | |
| mixOmics | 6.18.1 | R studio | |
| mixtools | 1.2.0 | R studio | |
| pbapply | 1.4-3 | R studio | |
| plsRcox | 1.7.7 | R studio | |
| pROC | 1.18.0 | R studio | |
| R | 4.1.3 | R studio | |
| randomForestSRC | 4.6-14 | R studio | |
| readr | 1.4.0 | R studio | |
| recipes | 0.1.17 | R studio | |
| reshape2 | 1.4.4 | R studio | |
| rmarkdown | 2.8 | R studio | |
| ROCit | 2.1.1 | R studio | |
| ROCR | 1.0-11 | R studio | |
| scales | 1.2.1 | R studio | |
| sparrow | 1.0.3 | R studio | |
| stringr | 1.5.0 | R studio | |
| superpc | 1.12 | R studio | |
| survival | 3.3-1 | R studio | |
| survivalROC | 1.0.3 | R studio | |
| survivalsvm | 0.0.5 | R studio | |
| sva | 3.40.0 | R studio | |
| testthat | 3.1.0 | R studio | |
| tibble | 3.2.1 | R studio | |
| tidyr | 1.3.0 | R studio | |
| tidyverse | 1.3.1 | R studio | |
| UpSetR | 1.4.0 | R studio | |
| viridis | 0.6.1 | R studio |
访问受限。请登录或开始试用以查看此内容。