多界微生物组机器学习助力多发性硬化症诊断¶
1. 概述¶
近年来,越来越多的证据表明肠道微生物群在多发性硬化症(Multiple Sclerosis, MS)的发病机制中扮演着重要角色。然而,大多数研究集中于肠道细菌,而对古菌、真菌、病毒等其他微生物界(multikingdom)的作用及其诊断潜力尚缺乏系统探索。202X 年,一项基于大规模粪便宏基因组数据的研究正式发布,该研究提出了利用多界肠道微生物组(multikingdom gut microbiome)结合机器学习(Machine Learning, ML)来区分 MS 患者与健康个体的新方法。
该研究共纳入 3 个地理多样性队列(geographically diverse cohorts),总计 1306 例粪便宏基因组样本,其中发现队列(discovery cohort)样本量为 1152。通过对粪便样本进行深度鸟枪法宏基因组测序(shotgun metagenomic sequencing),研究人员同时解析了细菌、古菌、真菌及病毒等多种微生物的组成与功能特征。随后,基于这些多界微生物特征构建了多种机器学习模型,实现了对 MS 的高精度诊断,并揭示了跨队列的稳健微生物标志物。
这篇文章将从专业知识库的角度,系统梳理该研究的核心技术与方法,并给出可复现的代码实操指南,帮助读者理解如何利用多界微生物组数据进行疾病分类建模。
2. 核心知识点¶
2.1 多发性硬化症与肠道微生物¶
多发性硬化症是一种中枢神经系统的自身免疫性脱髓鞘疾病。其病因涉及遗传易感性和环境因素。近年多项研究表明,MS 患者的肠道细菌组成与健康人群存在显著差异,例如某些产短链脂肪酸(SCFAs)的菌群减少,而促炎菌群增多。然而,仅仅关注细菌界(kingdom Bacteria)可能丢失其他微生物界提供的关键信息。
2.2 多界微生物组(Multikingdom Microbiome)概念¶
传统微生物组研究多聚焦于 16S rRNA 基因扩增子测序,该方法分辨率有限,通常仅能鉴定到属水平,且仅覆盖细菌与部分古菌。鸟枪法宏基因组测序的优势在于能够捕获样本中所有 DNA 序列,从而同时分析: - 细菌(Bacteria) - 古菌(Archaea) - 真菌(Fungi,mycobiome) - 病毒(Viruses,virome,包括噬菌体与真核病毒)
多界分析能够提供更全面的微生物群落视图,不同界之间的互作(如细菌-噬菌体动力学)可能在疾病中发挥协同或拮抗作用。在本研究中,真菌和病毒特征被证明对 MS 诊断具有增量贡献。
2.3 研究设计与队列¶
- 发现队列(Discovery cohort):n=1152,来自某一主要医学中心或人群。
- 验证队列(Validation cohorts):额外纳入 2 个独立地理分布队列,总样本数达到 1306。
- 多中心、多地域设计旨在控制批次效应(batch effect)、饮食、生活方式等混杂因素,确保微生物标志物的普适性。
2.4 宏基因组数据处理流程¶
- 质量控制:使用 fastp、Trimmomatic 等工具去除接头和低质量序列。
- 宿主污染去除:将 reads 比对至人类参考基因组(如 hg38),去除宿主 DNA。
- 分类学注释:
- 细菌与古菌:使用 MetaPhlAn4、Kraken 2 + Bracken。
- 真菌:针对真菌基因组数据库(如 RefSeq fungi)进行比对,工具可使用 Kraken2 或专门的 fungal profiling 工具。
- 病毒:通过比对至病毒基因组数据库(如 IMG/VR、Gut Virome Database),并识别病毒操作分类单元(vOTUs)。
- 功能注释:使用 HUMAnN 3 进行代谢通路和模块丰度定量,覆盖所有微生物界的功能潜力。
2.5 特征工程与多界特征矩阵¶
从每个界提取特征后,构建统一的特征矩阵,每一行代表一个样本,每一列代表一种微生物或功能特征。常见特征包括: - 相对丰度(Relative abundance) - 存在/缺失(Presence/absence) - alpha 多样性指数(Shannon, Simpson) - beta 多样性主坐标(PCoA axes) - 微生物互作网络属性
研究中通常会筛选出至少在一个界中显著差异丰度的特征(通过 LEfSe、MaAsLin 2 或 Wilcoxon 检验),然后合并到最终模型输入中。
2.6 机器学习模型构建与验证¶
为了区分 MS 患者与健康对照,研究可能使用了以下模型: - 随机森林(Random Forest, RF):擅长处理高维、非线性微生物数据,提供特征重要性排名。 - 梯度提升机(Gradient Boosting Machine, 如 XGBoost、LightGBM):性能通常优于 RF,但需仔细调参。 - 正则化逻辑回归(Lasso/Ridge Logistic Regression):可解释性强。 - 深度学习(如自编码器 + MLP):用于捕获潜在表示。
模型评估策略: - 内部验证:在发现队列中进行 k 折交叉验证(k-fold cross-validation)或留一法(LOOCV)。 - 外部验证:在独立地域队列中评估模型 AUC、灵敏度(Sensitivity)、特异性(Specificity)等。 - 多界 vs. 单界比较:通过仅使用细菌、仅用真菌、仅用病毒以及合并所有界的特征,分别构建模型并比较性能,证实多界融合的优势。
2.7 可解释性与生物标志物发现¶
机器学习模型不仅用于预测,更重要的是提取高维生物标志物。常用方法: - 随机森林特征重要性(Mean Decrease in Impurity/MDA) - SHAP(SHapley Additive exPlanations)值:解释单个样本预测中各特征的贡献方向,揭示哪些微生物驱动 MS 或健康分类。 - 跨队列稳定的高重要性特征可被认为是潜在的诊断生物标志物,并在上下游实验中进一步验证。
3. 代码实操:多界微生物组 ML 分类器构建¶
以下示例演示如何从微生物相对丰度数据出发,使用 Python 构建一个基于随机森林的 MS 分类器,并比较单界与多界模型。假设数据已通过前述流程处理为丰度表。
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split, cross_val_score, StratifiedKFold
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import roc_auc_score, classification_report
from sklearn.preprocessing import StandardScaler
import matplotlib.pyplot as plt
import seaborn as sns
# ---------- 1. 加载数据 ----------
# 假设我们有三种界的数据框:bacteria_df, fungi_df, virus_df 每行为样本,每列为特征
# 以及标签 labels (1 = MS, 0 = Healthy)
bacteria_df = pd.read_csv('bacteria_abundance.csv', index_col=0)
fungi_df = pd.read_csv('fungi_abundance.csv', index_col=0)
virus_df = pd.read_csv('virus_abundance.csv', index_col=0)
labels = pd.read_csv('labels.csv', index_col=0)['diagnosis'] # 0/1
# ---------- 2. 特征融合 ----------
# 为每种特征加上界的前缀,以便后续追踪重要性
bacteria_df.columns = ['Bact_' + col for col in bacteria_df.columns]
fungi_df.columns = ['Fungi_' + col for col in fungi_df.columns]
virus_df.columns = ['Virus_' + col for col in virus_df.columns]
# 合并所有微生物特征,按样本索引对齐
multikingdom_df = pd.concat([bacteria_df, fungi_df, virus_df], axis=1, join='inner')
# ---------- 3. 预处理 ----------
# 处理缺失值(缺失的物种丰度填充 0)
multikingdom_df = multikingdom_df.fillna(0)
# 可选:筛选方差极低或零值过多的特征
from sklearn.feature_selection import VarianceThreshold
selector = VarianceThreshold(threshold=0.01) # 去除方差低于 0.01 的特征
multikingdom_selected = selector.fit_transform(multikingdom_df)
multikingdom_selected = pd.DataFrame(multikingdom_selected,
index=multikingdom_df.index,
columns=multikingdom_df.columns[selector.get_support()])
# 标准化(针对线性模型,对树模型不必须但保留)
scaler = StandardScaler()
X = pd.DataFrame(scaler.fit_transform(multikingdom_selected),
index=multikingdom_selected.index, columns=multikingdom_selected.columns)
y = labels[X.index]
# ---------- 4. 划分训练集与测试集 ----------
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2,
stratify=y, random_state=42)
# ---------- 5. 训练随机森林模型 ----------
rf = RandomForestClassifier(n_estimators=500, max_depth=10, min_samples_leaf=5,
random_state=42, class_weight='balanced')
rf.fit(X_train, y_train)
# ---------- 6. 评估模型 ----------
y_pred_prob = rf.predict_proba(X_test)[:, 1]
auc = roc_auc_score(y_test, y_pred_prob)
print(f"多界模型测试集 AUC: {auc:.4f}")
print(classification_report(y_test, rf.predict(X_test)))
# ---------- 7. 跨验证评估(5折) ----------
cv = StratifiedKFold(n_splits=5, shuffle=True, random_state=42)
auc_scores = cross_val_score(rf, X, y, cv=cv, scoring='roc_auc')
print(f"5折交叉验证 AUC (mean ± std): {np.mean(auc_scores):.4f} ± {np.std(auc_scores):.4f}")
# ---------- 8. 特征重要性可视化 ----------
feature_importances = pd.Series(rf.feature_importances_, index=X.columns)
top_features = feature_importances.nlargest(30)
plt.figure(figsize=(10, 8))
sns.barplot(x=top_features.values, y=top_features.index)
plt.title('Top 30 多界微生物特征重要性 (Random Forest)')
plt.xlabel('Mean Decrease in Impurity')
plt.tight_layout()
plt.savefig('feature_importance_multikingdom.png', dpi=300)
plt.show()
# ---------- 9. 比较单界模型 ----------
def evaluate_single_kingdom(abundance_df, prefix, X_test, y_test):
"""训练并评估单个界的随机森林模型"""
X_single = pd.DataFrame(scaler.fit_transform(abundance_df),
index=abundance_df.index, columns=abundance_df.columns)
# 确保与测试集样本对齐
common_idx = X_single.index.intersection(X_test.index)
X_train_single = X_single.loc[X_train.index, :]
X_test_single = X_single.loc[common_idx, :]
y_test_single = y_test.loc[common_idx]
rf_single = RandomForestClassifier(n_estimators=500, max_depth=10,
min_samples_leaf=5, class_weight='balanced')
rf_single.fit(X_train_single, y_train.loc[X_train_single.index])
y_prob = rf_single.predict_proba(X_test_single)[:, 1]
auc = roc_auc_score(y_test_single, y_prob)
print(f"{prefix} 界模型测试集 AUC: {auc:.4f}")
return auc
print("\n单界模型性能:")
bact_auc = evaluate_single_kingdom(bacteria_df, "细菌", X_test, y_test)
fungi_auc = evaluate_single_kingdom(fungi_df, "真菌", X_test, y_test)
virus_auc = evaluate_single_kingdom(virus_df, "病毒", X_test, y_test)
print(f"\n多界融合相较最优单界的提升: {auc - max(bact_auc, fungi_auc, virus_auc):.4f}")
上述代码演示了多界微生物特征融合、模型训练、比较和特征重要性的提取,完整重现了研究中的核心分析逻辑。
4. 常见问题¶
Q1: 为什么需要多界微生物组而不仅限于细菌? A1: 多发性硬化症的肠道微生态失调不仅涉及细菌。真菌(如 Candida 过度生长)和病毒(如噬菌体介导的细菌裂解)可能通过调节宿主免疫或微生物群落结构间接参与疾病。研究发现,加入真菌和病毒特征后,模型的 AUC 和跨队列鲁棒性均显著提高,说明多界特征提供了额外的诊断信息。
Q2: 如何处理不同队列间的批次效应(batch effect)? A2: 多中心宏基因组数据的整合需要谨慎处理技术差异。常用方法包括: - ComBat-seq 用于调整批次效应,提供经验贝叶斯框架。 - ConQuR 专门针对微生物组 count 数据的分位数回归去批次方法。 - 使用 MMUPHin 进行元分析标准化。 - 在机器学习中通过 域自适应(Domain Adaptation)技术来对齐不同数据源的特征分布。此外,确保所有队列统一处理流程(组装、注释数据库版本一致)是基本前提。
Q3: 模型得出的重要微生物可以直接作为生物标志物吗? A3: 模型特征重要性提供了统计关联,但不等同于因果推断。高重要性特征需经过: - 独立队列外部验证 的一致性。 - 生物学合理性(如已知的免疫调节功能)。 - 必要时进行菌株分离、动物模型实验以确认因果关系。文章中的机器学习结论通常需注明“潜在诊断标志物”。
Q4: 宏基因组测序深度的要求? A4: 同时捕获真菌和病毒往往需要比仅分析细菌更高的测序深度。通常建议每个粪便样本 >10 million paired-end reads(约 5G 数据),以确保低丰度真菌和病毒序列被有效检测。对于病毒组,还可结合 病毒样颗粒富集(病毒组测序)来增强信号,但增加了实验复杂度。
Q5: 该诊断模型临床应用面临哪些挑战? A5: 主要挑战包括: - 标准化:从样本采集、DNA 提取到测序和生信分析的全流程标准化。 - 成本与通量:鸟枪法宏基因组成本高于 16S 扩增子,但正在降低。 - 个体波动:肠道菌群随饮食、药物(如免疫调节剂)变化,模型需要能够区分 MS 相关状态与暂时性波动。 - 审批:作为体外诊断工具需满足监管要求(如 FDA breakthrough device designation)。
5. 速查表¶
| 关键概念 | 英文术语 | 要点说明 |
|---|---|---|
| 多界微生物组 | Multikingdom Microbiome | 指同时分析细菌、古菌、真菌、病毒的全景式组学方法 |
| 鸟枪法宏基因组 | Shotgun Metagenomics | 对所有 DNA 进行测序,可覆盖全部微生物界,区别于 16S 测序 |
| 发现队列 | Discovery Cohort | 本研究中 n=1152,用于特征筛选和模型训练 |
| 外部验证 | External Validation | 在 2 个独立地理队列中测试模型,确保泛化能力 |
| 随机森林 | Random Forest | 集成树模型,不易过拟合,适合高维微生物数据 |
| 特征重要性 | Feature Importance | 衡量每个微生物对分类模型的贡献度,用于标志物发现 |
| SHAP 值 | SHapley Additive exPlanations | 提供每个特征对单个样本预测的正负影响解释 |
| 批次效应 | Batch Effect | 不同实验/中心引入的系统偏差,须用统计方法校正 |
| AUC | Area Under the ROC Curve | 评价二分类模型区分能力的综合指标,越接近 1 性能越强 |
| 风险评分 | Risk Score | 可基于微生物组特征计算,用于个体疾病概率预测 |
| 噬菌体组 | Virome (Phageome) | 肠道病毒的主要组成部分,能通过裂解细菌调控菌群 |
| 真菌组 | Mycobiome | 肠道真菌的集合,与细菌存在互作,影响免疫 |
常用分析工具速查: | 工具/库 | 用途 | 备注 | |---------|------|------| | MetaPhlAn4 | 细菌、古菌物种级精确丰度估计 | 支持古菌、真核生物,快速 | | Kraken2 + Bracken | 所有界的分类学注释 | 可自定义数据库,适合真菌和病毒 | | fastp | FASTQ 质量修剪 | 快速,支持自动适配接头 | | HUMAnN 3 | 代谢通路和功能丰度 | 从宏基因组数据推断群落功能 | | scikit-learn | Python 机器学习 | 包含 RF, SVM, 逻辑回归等 | | XGBoost | 梯度提升 | 结构化表格数据的高性能模型 | | SHAP | 模型解释 | 与任何模型兼容,解释力强 | | ComBat-seq / MMUPHin | 批次效应校正 | 用于宏基因组多元整合 |
通过以上内容,读者应能掌握多界微生物组机器学习诊断 MS 的研究框架及其关键实现技术。这一融合多组学与 AI 的策略为复杂自身免疫病的非侵入性诊断开辟了新途径。