社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

哈尔滨工业大学WR|基于机器学习的水中新污染物的伪靶向筛查:以四环素类为例

生态环境科学 • 1 周前 • 33 次点击  

自:新污染物筛查与评估

题目:Machine learning-powered pseudo-target screening of emerging contaminants in water: A case study on tetracyclines

摘 要

在复杂水环境中识别新污染物(ECs)是一项重大挑战。靶向筛查(TS)受限于缺乏标准品,而非靶向筛查(NTS)则受制于复杂且不可靠的数据处理。本研究提出了一种基于机器学习(ML)的伪靶向筛查(PTS)方法,以四环素类药品(TCs)为模型用于初步识别ECs。基于从MassBank数据库收集的质谱(MS)数据,通过优化阈值因子(P=1%)去除干扰峰,完成了数据净化,该阈值反映了干扰峰强度(A)相对于最大峰强度(Amax)的比例。随后,通过输入集成峰和测试相关特征的实验质谱数据,训练出XGBoost模型,实现了对TCs和非TCs的准确识别,概率接近100%。研究首次证明了这种特征集成策略在提高ML模型的准确性、可靠性和抗干扰能力方面的有效性。该XGBoost模型还能够识别训练集内和训练集外的TCs,表明其在识别未被监管和未知的ECs方面具有潜在的通用性。与之前报道的TS和NTS方法相比,基于ML的PTS框架提供了一种无需先验知识的高效、简便且可靠的环境样品中ECs筛查替代方案。本研究不仅对处理与ECs相关的水污染突发事件具有重要意义,还代表了开发AI驱动算法框架以识别更多ECs(超出本文测试的TCs范围)的范式转变。





研究背景

ECs是未被监管的合成或天然物质,包括药物、PFAS、农药、个人护理产品、微塑料等,对环境、生态和人类健康可能具有毒性影响。由于ECs数量庞大、浓度低、缺乏分析方法和毒性数据,检测复杂环境中的ECs是重大挑战。

靶向筛查(TS)依赖标准物质,仅能检测已知污染物。非靶向筛查(NTS)无需先验知识,但数据处理复杂且效率低。疑似筛查需预定义目标列表,无法检测未知污染物。而伪靶向筛查(PTS)则结合了TS和NTS优点,利用机器学习等算法,独立于参考标准,灵活高效。且PTS已在蛋白质组学、代谢组学和污染物筛查领域取得成功。

ML能够自动从数据库中学习数据模式、进行预测和识别,无需明确的基础研究。它能够处理复杂的网络数据,揭示传统数据分析无法发现的模式和关系。PTS生成的大量信息与化学结构和仪器参数相关,但这些数据对分析提出了巨大挑战,而ML在处理复杂数据集方面具有独特优势。尽管ML在其他领域有广泛应用,但目前尚未有研究将ML应用于环境中的ECs识别。

本研究的目的是以四环素类抗生素(TCs)为模型,建立ML-powered PTS框架,用于水中ECs的初步筛选。

主要发现

1、质谱数据中干扰峰的去除

干扰峰由杂质、残留试剂、仪器污染物和降解副产物引起,会通过降低信噪比干扰数据分析,特别是对峰相关特征(如MM、MSD等)和机器学习模型输入数据的质量产生不利影响。在特征分析和机器学习训练之前,通过去除干扰峰优化质谱数据,以减少噪声并保留目标化合物的有用信息。如图1a所示,去除干扰峰可改善准确度、召回率、精密度和F1评分方面的优值。通过设置P=1%(去除强度低于最大强度1%的峰),可显著提高模型性能,如准确度(从0.961提升至0.987)、精密度(从0.926提升至0.985)等。当P超过2%时,模型性能因有用信息丢失而下降。如图1b所示,去除干扰峰减少了原始MS数据中峰的数量,降低MS数据集的复杂性和多样性有利于提高模型的分类性能。与其他基于算法的方法相比,本研究中提出的方法似乎处理能力更强。如图1c所示,强力霉素的MS数据在原始数据中包含348个峰。在P=1%时去除干扰峰,实现了58.6%的百分比降低,剩余峰数仅为144。这将通过突出有用峰的权重来大大提高信噪比,以用于后续数据分析和ML建模。

图1  (a)P = 0–4%时ML模型的准确度、精密度、召回率和F1评分,(b)P = 0–4%时所有样品的峰数,(c)P=1%时多西环素MS数据的干扰峰去除示意图。


2、TCs的伪靶向筛查的ML模型评价

测试了八种常见的机器学习算法(ANN、DT、Bayes、RF、kNN、SVM、LR和XGBoost)。如ROC曲线(图2a)所示,曲线越接近左上角,模型在数据训练中的表现就越好。清晰可见的是,大多数模型的ROC曲线远离对角线。根据AUC值,XGBoost模型表现最好,AUC为0.99,其次是RF(AUC=0.98),两者都具有最强的识别和区分TC和非TC的能力。图2b显示了两个表现最好的模型(XGBoost和RF)和两个较差模型(LR和Bayes)混淆矩阵的比较。XGBoost模型显示了准确区分TC和非TC特征的能力,表现为较高的TP(50)和TN(101)以及较低的FP(0)和FN(2)。图2c显示了不同ML模型的准确度、精确度、召回率、F1分数和平衡准确度的优值比较。XGBoost模型在准确性(0.987)、准确性(0.985)、召回率(0.962)、F1评分(0.980)和平衡准确性(0.981)方面的得分均高于其他算法,与混淆矩阵的结果相似。

图2  (a)ROC曲线,(b)混淆矩阵和(c)不同ML模型的准确度、精确度、召回率、F1评分和平衡准确度。


3、关键特征分析

PCA分析:单独使用峰相关特征(PR)时,模型的分类能力有限,PCA解释的方差为46.53%(图3a)。结合峰相关特征和测试相关特征(PTR)后,模型的分类能力显著提升,PCA解释的方差增加到48.14%,样本分离更明显(图3b)。图3c显示了基于单个峰相关特征和组合峰测试相关特征的建模性能比较。训练好的XGBoost模型的准确度从0.915大幅提高到0.987,精确度从0.976显著提高到0.985,召回率从0.769显著提高到0.962,F1评分从0.860显著提高到0.980。这些特征的结合使模型能够从MS数据中学习到更多的TC特征,并与非TC进行区分。SHAP分析:碰撞能量(CE)和保留时间(RT)是最重要的两个特征,其平均SHAP值分别为1.22和0.88(图3d)。为了进一步理解重要特征对模型输出的影响,我们分析了两种不同类别(TC和非TC;图3f)的化合物Spirodiclofen-enol的输出。RT、CE、MaxM和PN等特征对提高最终输出有积极贡献,其中RT的贡献最大。当RT值增加时,模型更可能将EC分类为非TC,这与图3e中所示的结果具有良好的一致性。XGBoost模型能够通过RT、CE、MaxM和PN的关键特征准确地将Spirodiclofen-enol鉴定为非TC。这突出了引入测试相关特征以提高输入数据的可靠性和XGBoost模型的PTS性能的重要性。

图3  具有(a)峰相关(PR)特征和(b)PR特征和测试相关特征(PTR)的主成分分析(PCA)。(c)模型性能与PR和PTR特征的比较,(d)TC和非TC类别的十大最重要特征,(e)与TC和非TC类别相关的特征,以及(f)Spirodiclofen-enol的不同描述符的Shapley值。


4、模型的实验验证

使用UPLC-HRMS分析真实水样中的TCs和Non-TCs,并将质谱数据输入训练好的XGBoost模型进行预测。图4示意性地展示了含四环素样品1的模型验证步骤。对于包含在训练集中的TCs(如四环素和土霉素),模型预测的准确率接近100%。对于未包含在训练集中的TCs(如甲环素和替加环素),模型仍能准确识别,准确率分别为96.83%和99.78%。对于与TCs结构相似的Non-TCs(如林可霉素和地氟沙星),模型也能正确识别为非TCs,准确率分别为99.94%和99.60%。对于不含TCs的自来水样本,模型正确预测为非TCs,准确率为99.83%。XGBoost模型在复杂水样中表现出强大的抗干扰能力和泛化能力,能够准确识别已知和未知的TCs。

图4  实验验证的TCs的 PTS的ML框架示意图。





原文链接:

https://doi.org/10.1016/j.watres.2024.123039


说明:本推送只用于学术交流,如有侵权,请联系删除

(转载仅供交流学习使用,侵权必删)

投稿、转载、合作、申请入群可在后台留言(备注:姓名+微信号)或发邮件至sthjkx1@163.com

【点击下方超链接阅读16个栏目推文】 

1.【直播】9.【院士】
2.【视频10.【综述】
3.【健康&毒理11.【写作】
4.【12.【Nature】
5.【13.【Science
6.【14.【WR
7.【固废15.【EST
8.【生态】16.【JHM


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/178573
 
33 次点击