【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

发布于:2025-06-07 ⋅ 阅读:(24) ⋅ 点赞:(0)

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者!

在这里插入图片描述

介绍

IntelliGenes 是一个新颖的机器学习(ML)流程,旨在通过多组学数据(包括全基因组测序、RNA-seq、临床和人口统计学信息)发现与疾病预测相关的生物标志物,并进行高精度的疾病预测。该流程结合了传统的统计方法和先进的机器学习算法,通过多组学数据的整合分析,发现新的生物标志物并预测疾病。该流程不仅能够提高疾病预测的准确性,还能为个性化医疗提供支持,帮助发现新的治疗靶点和干预措施。(该流程原是python代码,现在对它改成R包:IntelliGenes to IntelliGenesR

流程步骤

Step 作用 输入 输出
1. 数据准备 准备用于分析的多组学数据,包括 RNA 测序、临床和人口统计学信息 患者队列的 RNA 测序数据、临床和人口统计学数据 以 Clinically Integrated Genomics and Transcriptomics (CIGT) 格式组织的数据
2. 特征选择 使用统计测试(如 ANOVA)识别与疾病表型相关的基因子集 CIGT 格式数据 与疾病显著相关的生物标志物列表
3. 模型训练 使用多种机器学习分类器(如 RF、SVM、XGBoost 等)构建高性能预测模型 特征选择阶段筛选出的生物标志物 训练好的分类器模型、分类器性能指标(如准确率、ROC、F1 等)
4. I-Genes 评分计算 聚合、加权和归一化每个分类器对特征的重要性评分,得出每个基因的 I-Genes 评分 训练好的分类器模型、测试集数据 每个生物标志物的 I-Genes 评分,包括其在疾病预测中的重要性和表达方向
5. 结果输出与可视化 输出疾病预测结果、分类器性能指标、可视化图表(如 ROC 曲线、PR 曲线、SHAP 值图)以及 I-Genes 评分 I-Genes 评分、分类器性能指标 患者的疾病预测结果、可视化图表、I-Genes 评分列表
1. 输入数据
  • 输入数据格式:Clinically Integrated Genomics and Transcriptomics (CIGT) 格式,包括患者的年龄、性别、种族和民族背景、诊断信息以及 RNA-seq 驱动的基因表达数据。
  • 数据来源:多组学数据,包括全基因组测序(WGS)、RNA-seq、临床和人口统计学信息。
2. 特征选择
  • 方法:使用三种经典统计方法(Pearson 相关性、卡方检验、ANOVA)和一种机器学习分类器(递归特征消除,RFE)来提取与疾病显著相关的生物标志物。
  • 结果:生成一组显著的疾病相关生物标志物列表。
  • 目的:从大量的多组学数据中筛选出与疾病预测相关的特征,减少数据维度,提高后续模型训练的效率和准确性。
3. 模型训练
  • 方法:应用七种机器学习分类器(随机森林、支持向量机、XGBoost、k-最近邻、多层感知器、软投票分类器、硬投票分类器)来计算基于多组学数据的特征重要性,并对患者进行疾病预测。
  • 结果:生成每个分类器的性能指标(如准确率、ROC、F1、精确率、召回率、敏感性、特异性),并保存 ROC 和 PR 曲线的可视化结果。
  • 目的:通过多种分类器的组合,提高疾病预测的准确性和鲁棒性。
4. I-Genes 评分计算
  • 方法:使用 Shapley Additive exPlanations (SHAP) 和 Herfindahl-Hirschman Index (HHI) 来计算每个生物标志物的 I-Genes 评分。SHAP 值用于评估特征在疾病预测中的重要性,HHI 用于衡量分类器对高影响力生物标志物的依赖程度。
  • 结果:生成每个生物标志物的 I-Genes 评分,包括其在疾病中的表达方向(过表达或低表达)。
  • 目的:通过 I-Genes 评分,量化每个生物标志物在疾病预测中的重要性,并提供可解释的生物标志物排名。
5. 输出结果
  • 输出内容:包括每个患者的疾病预测结果、分类器的性能指标、可视化图表(如 ROC 曲线、PR 曲线、SHAP 值图)以及 I-Genes 评分。
  • 目的:提供一个全面的分析报告,帮助研究人员和临床医生理解多组学数据在疾病预测中的作用,并为后续的生物学验证和临床应用提供依据。

IntelliGenesR

IntelliGenesR 实现了 IntelliGenes 流程的核心模块,用于利用转录组和多组学数据进行可解释的疾病预测和特征评分(DeGroat, William, et al. “IntelliGenes: a novel machine learning pipeline for biomarker discovery and predictive analysis using multi-genomic profiles.” Bioinformatics 39.12 (2023): btad755)。该R软件包支持:

  1. 特征选择:使用多种统计检验 (FeatureSelection函数)。
  2. 模型训练:使用各种机器学习分类器,并基于 SHAP 进行解释 (run_classifiers函数)。
  3. I-Genes 评分:用于可解释的生物标志物优先级排序 (compute_igenes_scores函数)。

IntelliGenesR的目录结构:

├── _pkgdown.yml
├── codecov.yml
├── data
├── data-raw
├── DESCRIPTION
├── inst
├── IntelliGenes.Rproj
├── LICENSE
├── LICENSE.md
├── man
├── NAMESPACE
├── NEWS.md
├── R
├── README.md
├── README.Rmd
├── src
└── vignettes

安装包

install.packages("IntelliGenesR_1.0.0.tar.gz", repos = NULL, type = "source") 是一个 R 命令,用于从本地的源代码包安装 R 软件包。可以通过以下百度网盘链接下载:

install.packages("IntelliGenesR_1.0.0.tar.gz", repos = NULL, type = "source")

library(IntelliGenesR)
library(tidyverse)

1. 特征选择

本教程使用软件包中包含的 ExampleData 数据集演示 IntelliGenesR 的工作流程。

我们首先应用 FeatureSelection() 函数,使用 Pearson、卡方、ANOVA 和 RFE 识别共识特征(通过?FeatureSelection()查看函数帮助文档)。

data("ExampleData")
head(ExampleData[, 1:6])

feature_res <- FeatureSelection(
  data = ExampleData,
  target = "Type",
  id_col = "ID",
  pval_thresh = 0.05,
  use_rfe = TRUE
)

head(feature_res$common_features)

在这里插入图片描述

在这里插入图片描述

解释

  • 返回的列表包括单独方法选择的特征及其交集。
  • common_features 将用于下一阶段的模型构建(每一列是统计方法筛选两组差异标记物)。

2. 模型训练和评估

使用 run_classifiers() 函数训练一组分类器(通过?run_classifiers()查看函数帮助文档)。

res <- run_classifiers(
  inputDF = ExampleData |> column_to_rownames("ID"),
  target = "Type",
  features = feature_res$common_features$feature
)

head(res$metrics)

在这里插入图片描述

解释:单个机器学习或集成机器学习模型的评估指标结果。

  • 这返回一个包含训练模型和性能指标(准确率、ROC、F1、精确率、召回率、敏感性、特异性)的列表。
  • ROC 和 PR 曲线的可视化已保存。
  • 每个模型的 SHAP 值和 I-Genes 信息已存储。

3. I-Genes 评分计算

最后,我们使用 compute_igenes_scores() 计算特征级别的可解释性评分(通过?compute_igenes_scores()查看函数帮助文档)。

igenes_df <- compute_igenes_scores(
  classifiers = res$models,
  X_test = res$X_test,
  y_test = res$pred_label$trueLabel
)

head(igenes_df)

在这里插入图片描述

解释:I-Gene引入了一种新的度量,即I-Gene评分来衡量个体生物标志物对复杂性状预测的重要性。这个表格提供了 IntelliGenes 流程中识别的生物标志物的详细信息,包括它们的标识符、I-Genes 评分、对疾病预测的贡献方向、表达模式以及排名。这些信息可以帮助研究人员理解哪些基因在疾病预测中起关键作用,并为后续的生物学验证和临床应用提供依据。

  1. Feature:这一列显示了基因或特征的标识符,通常是基因的 Ensembl ID。Ensembl ID 是一个唯一的标识符,用于识别特定的基因。
  2. I_Genes_Score:这一列显示了每个基因的 I-Genes 评分。I-Genes 评分是 IntelliGenes 流程中计算的一个指标,用于衡量单个生物标志物对疾病预测的重要性。评分越高,表示该生物标志物在预测疾病中的重要性越大。
  3. Prediction:这一列显示了每个基因对疾病预测的贡献方向。
    • Controls:表示该基因在对照组(健康个体)中的表达水平较高。
    • Cases:表示该基因在病例组(患病个体)中的表达水平较高。
  4. Expression:这一列描述了基因表达的模式。
    • Overexpression:表示该基因在对照组中过表达。
    • Inconclusive:表示该基因的表达模式不明确,无法确定其在对照组或病例组中的表达水平是否显著不同。
    • Neutral:表示该基因的表达模式对疾病预测没有显著影响。
  5. Ranking:这一列显示了基因的排名,根据 I-Genes 评分对基因进行排序。排名越高,表示该基因在预测疾病中的重要性越大。

总结

IntelliGenesR 是一个基于 R 语言的软件包,它实现了 IntelliGenes 流程的核心模块,用于利用转录组和多组学数据进行可解释的疾病预测和特征评分。这个流程结合了传统的统计方法和先进的机器学习算法,通过整合多组学数据来发现新的生物标志物并预测疾病。IntelliGenesR 的目的是提高疾病预测的准确性,并为个性化医疗提供支持,帮助发现新的治疗靶点和干预措施。

IntelliGenesR 的工作流程包括五个主要步骤:数据准备、特征选择、模型训练、I-Genes 评分计算和结果输出与可视化。数据准备阶段涉及整理 RNA 测序、临床和人口统计学信息。特征选择使用统计测试和机器学习分类器来识别与疾病相关的生物标志物。模型训练阶段应用多种机器学习分类器来构建预测模型。I-Genes 评分计算通过聚合和加权每个分类器对特征的重要性评分,得出每个基因的 I-Genes 评分。最后,结果输出与可视化阶段提供疾病预测结果、分类器性能指标和 I-Genes 评分。

IntelliGenesR 支持特征选择、模型训练和 I-Genes 评分等关键功能,使用户能够识别关键预测特征、训练多样化的分类器,并生成按排名排序的 I-Genes 列表,用于生物学解释。这个软件包的实现使得研究人员能够更深入地理解多组学数据在疾病预测中的作用,并为后续的生物学验证和临床应用提供依据。通过 IntelliGenesR,研究人员可以更有效地进行生物标志物的发现和疾病预测,为个性化医疗和精准治疗提供科学依据。

系统信息

## R version 4.4.3 (2025-02-28)
## Platform: aarch64-apple-darwin20
## Running under: macOS Sequoia 15.5
## 
## Matrix products: default
## BLAS:   /Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/lib/libRblas.0.dylib 
## LAPACK: /Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/lib/libRlapack.dylib;  LAPACK version 3.12.0
## 
## locale:
## [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
## 
## time zone: Asia/Shanghai
## tzcode source: internal
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
##  [1] caret_7.0-1         lattice_0.22-6      lubridate_1.9.4    
##  [4] forcats_1.0.0       stringr_1.5.1       dplyr_1.1.4        
##  [7] purrr_1.0.4         readr_2.1.5         tidyr_1.3.1        
## [10] tibble_3.2.1        ggplot2_3.5.1       tidyverse_2.0.0    
## [13] IntelliGenesR_1.0.0 BiocStyle_2.34.0   
## 
## loaded via a namespace (and not attached):
##  [1] pROC_1.18.5          rlang_1.1.5          magrittr_2.0.3      
##  [4] e1071_1.7-16         compiler_4.4.3       systemfonts_1.2.1   
##  [7] vctrs_0.6.5          reshape2_1.4.4       pkgconfig_2.0.3     
## [10] crayon_1.5.3         fastmap_1.2.0        backports_1.5.0     
## [13] PRROC_1.4            utf8_1.2.4           rmarkdown_2.29      
## [16] tzdb_0.5.0           prodlim_2024.06.25   mlr3_0.23.0         
## [19] ragg_1.3.3           xfun_0.51            randomForest_4.7-1.2
## [22] cachem_1.1.0         mlr3misc_0.16.0      jsonlite_2.0.0      
## [25] recipes_1.2.0        uuid_1.2-1           parallel_4.4.3      
## [28] R6_2.6.1             bslib_0.9.0          stringi_1.8.4       
## [31] parallelly_1.43.0    rpart_4.1.24         xgboost_1.7.9.1     
## [34] jquerylib_0.1.4      Rcpp_1.0.14          bookdown_0.42       
## [37] iterators_1.0.14     knitr_1.50           future.apply_1.11.3 
## [40] Matrix_1.7-2         splines_4.4.3        nnet_7.3-20         
## [43] timechange_0.3.0     tidyselect_1.2.1     rstudioapi_0.17.1   
## [46] yaml_2.3.10          timeDate_4041.110    codetools_0.2-20    
## [49] listenv_0.9.1        plyr_1.8.9           withr_3.0.2         
## [52] evaluate_1.0.3       future_1.34.0        desc_1.4.3          
## [55] survival_3.8-3       proxy_0.4-27         kernlab_0.9-33      
## [58] pillar_1.10.1        BiocManager_1.30.25  mlr3filters_0.8.1   
## [61] checkmate_2.3.2      foreach_1.5.2        stats4_4.4.3        
## [64] generics_0.1.3       hms_1.1.3            munsell_0.5.1       
## [67] scales_1.3.0         globals_0.16.3       class_7.3-23        
## [70] glue_1.8.0           tools_4.4.3          data.table_1.17.0   
## [73] ModelMetrics_1.2.2.2 gower_1.0.2          fastshap_0.1.1      
## [76] fs_1.6.5             grid_4.4.3           ipred_0.9-15        
## [79] colorspace_2.1-1     paradox_1.0.1        nlme_3.1-167        
## [82] patchwork_1.3.0      palmerpenguins_0.1.1 cli_3.6.4           
## [85] textshaping_1.0.0    lava_1.8.1           gtable_0.3.6        
## [88] sass_0.4.9           digest_0.6.37        lgr_0.4.4           
## [91] htmlwidgets_1.6.4    farver_2.1.2         htmltools_0.5.8.1   
## [94] pkgdown_2.1.1        caretEnsemble_4.0.1  lifecycle_1.0.4     
## [97] mlr3learners_0.10.0  hardhat_1.4.1        MASS_7.3-64