引言

在药物发现的早期阶段,如何对没有成药前途的分子进行尽早排除以避免不必要的生物学和临床试验至关重要,类药性则是其中一个关键概念。关于类药性的研究已持续了几十年,最早可追溯到上世纪80年代的Lipinski“类药五规则”(Ro5)。但随着药物研究的进一步发展,Ro5这类启发性的类药性判别方法受到越来越多的质疑。此后在2012年Bickerton提出的QED(类药性的定量估计)方法则慢慢替代了Ro5,尤其是在机器学习领域,如分子生成模型。本研究中,来自波兰科学院的Bartosz A. Grzybowski搭建了几种不同的深度学习模型(多层感知机、图卷积网络、自编码器)来进行了类药性预测,同时也对比了多种非药数据集(NOC、PDB及ZINC)和多种分子表示(RDKit、Mold2、MCS、ECFP4、Mol2vec)对预测准确率的影响。作者也使用这些模型的贝叶斯神经网络对预测结果的确定性进行分析,并整合多个模型进行预测使预测准确率达到了93%。此外,作者通过对模型输出的随机性误差和知识性误差进行分析得出结论:93%的类药性预测准确率很可能是当前数据集的极限。

数据集准备

药物数据集由2,136个FDA批准的小分子药物组成(此后简称为DRUGS)。DRUGS来自DrugBank的 2,635条相关数据,作者从中过滤掉了(1)无机化合物和重金属配合物,(2)平衡离子(包括富马酸盐和柠檬酸盐)和(3)10个包含128个以上原子的分子(由于图卷积网络(GCNN)无法计算过大的分子),剩余分子被中性化并转化为Canonical SMILES。

作者在研究中使用了3个非药数据集:(1)ZINC15,约1.9千万个有机化合物;(2)Network of Organic Chemistry(NOC),包括来自Reaxys和专利的约6百万个分子;(3)来自PDB的约1.3万个配体。3个非药数据集均经过与DRUGS类似的清洗与预处理及去重,并删去与DRUGS中的药物相似的分子(ECFP4的Tanimoto相似性大于0.85)。

作者选择了5种分子表示进行研究:(1)RDKit中的200个描述符;(2)777个Mold2描述符;(3)2,048位ECFP4指纹;(4)一个二进制向量,其中每维表示在药物和非药物数据集中最频繁出现的3,000个最大通用子结构(MCS)之一的存在与否;(5)分子图的张量表示,每个分子使用两个矩阵表示:原子特征矩阵和一个邻接矩阵。对RDKit和Mold2两种分子表示,在模型训练前在训练数据集上进行了标准化,包括删除方差为零(即对于所有化合物为零或完全相同)的描述符及减去均值并除以标准差。对分子图的张量表示,其原子特征矩阵包含了原子杂化和与每个重原子相连的氢原子数这两个特征。

由于非药数据集比DRUGS的分子数目大几个数量级,因此阴性数据集必须加以平衡。除非另有说明,否则作者将对较大的(非药物)集合进行随机下采样;也就是说,作者随机抽取了与DRUGS大小相同的非药样本,并对多个(通常是三个)样本计算平均准确率。在模型选择期间,将包含药物和相等数量的非药物的每个平衡数据集按9:1的比例分为训练集和测试集,并将较大的部分用于五重交叉验证。测试集用于测试在整个训练集上训练的分类器(即用于交叉验证的分类器)的效果。

结果与讨论

评价QED预测效果

类药性的预测之所以必须使用多参数模型是因为类药与非类药分子无法简单的通过任何单个描述符区分(图1)。作者首先测试了目前广泛使用的多参数模型QED对药物分子与非药分子的区分能力,并以QED作为本篇研究的基线模型。如表1所示,QED准确率在42-57%的范围内,因阴性数据集而异。作者自己尝试复现当初发表QED模型的论文中的结果,得到的准确率为65%左右。这些相对普通的准确率数值体现了不同数据集中QED分布之间的显着重叠(图2)。

图1 药物分子与非药分子间常见理化性质的分布比较

为什么训练时测试准确率大幅度波动_Nature Mach Intell|类药性预测准确率有极限...相关推荐

  1. 模型训练时测试集上正确率大于训练集

    模型训练时测试集上正确率大于训练集 参考 模型在测试集的准确率大于训练集 神经网络与深度学习-验证集(测试集)准确率高于训练集准确率的原因 一.问题   近日再进行Point Cloud Transf ...

  2. BN和Dropout在训练和测试时的差别

    Batch Normalization BN,Batch Normalization,就是在深度神经网络训练过程中使得每一层神经网络的输入保持相近的分布. BN训练和测试时的参数是一样的嘛? 对于BN ...

  3. 加入BN层后预测与训练时准确率差距很大解决方案,is_traing参数(ResNet,GoogLeNet,Inception)

    环境:tensorflow 1.13.1  python 3.7.3 问题描述:网络中有BN层,训练时设置is_traing=True,验证时设置为False,发现验证或者测试时准确率差距很大.且发现 ...

  4. Pytorch 训练与测试时爆显存(cuda out of memory)的终极解决方案,使用cpu(勿喷)

    Pytorch 训练与测试时爆显存(cuda out of memory)的终极解决方案,使用cpu(勿喷) 参见了很多方法,都没有用. 简单点,直接把gpu设成-1

  5. python吃显卡还是内存不足_解决Pytorch 训练与测试时爆显存(out of memory)的问题

    Pytorch 训练时有时候会因为加载的东西过多而爆显存,有些时候这种情况还可以使用cuda的清理技术进行修整,当然如果模型实在太大,那也没办法. 使用torch.cuda.empty_cache() ...

  6. darknet训练时计算mAP和测试计算mAP

    训练时计算相应的mAP值 ./darknet detector train cfg/coco.data yolov3.cfg yolov3.conv.137 -map 测试时计算相应的mAP值 To ...

  7. 训练与测试时同一组测试集结果不一致

    训练与测试时同一组测试集结果不一致,相当于训练的模型不能后续使用了,这肯定不能容忍,所以耗费经历筛查: 1. 随机种子的设置问题 可在main函数加上这个: SEED = 1 np.random.se ...

  8. 关于 train loss、val loss训练时遇到的问题

    数据集说明 训练集是用于模型的训练的样本集合,确定模型的权重参数. 训练集的数量随着模型的复杂度要增多. 反向传播确定最优参数. 验证集用于验证模型的评估.模型的选择.参数的调整. 选择模型.调整超参 ...

  9. BN和Dropout在训练和测试时有哪些差别?

    作者丨海晨威@知乎 来源丨https://zhuanlan.zhihu.com/p/61725100 编辑丨极市平台 Batch Normalization BN,Batch Normalizatio ...

  10. 31,32,33_过拟合、欠拟合的概念、L2正则化,Pytorch过拟合欠拟合,交叉验证-Train-Val-Test划分,划分训练集和测试集,K-fold,Regularization

    1.26.过拟合.欠拟合及其解决方案 1.26.1.过拟合.欠拟合的概念 1.26.1.1.训练误差和泛化误差 1.26.1.2.验证数据集与K-fold验证 1.26.1.3.过拟合和欠拟合 1.2 ...

最新文章

  1. [RN] React Native 键盘管理 在Android TextInput遮盖,上移等问题解决办法
  2. 浅析那些你不知道的提升企业网站转化率的SEO优化技巧 !
  3. Arduino数字引脚作为GPIO的使用
  4. EOS 智能合约源代码解读 (6)合约之action
  5. 解析oracle的rownum
  6. css鼠标悬停样式_利用Css3样式属性Cursor来更换自定义个性化鼠标指针(光标
  7. python3 可执行文件_将python3打包成为exe可执行文件(pyinstaller)
  8. 循序渐进之Spring AOP(4) - Introduction
  9. luogu P3193 [HNOI2008]GT考试
  10. 分布式锁实践(一)-Redis编程实现总结
  11. 小说取名软件(附带截图)分享与介绍
  12. Java就业方向有哪些?
  13. 综合评价之熵值法+TOPSIS
  14. UOS第三方软件没有通过系统安全验证
  15. vue-baidu-map添加覆盖物-点
  16. 什么是软链接、硬链接
  17. 程序员的520,送给女友的几行漂亮的代码(js版)
  18. Verilog HDL语言要素
  19. php fileinfo 作用,PHP Fileinfo函数 详解
  20. 计算机网络原理 计算题,计算机网络原理计算题

热门文章

  1. 【挖坑系列】关于浏览器の缓存机制
  2. 盛夏七月,欢迎来京城看“火烧云”
  3. PBOC规范研究之四、文件结构及访问(转)
  4. 【DATAGUARD】 基于同一个主机建立物理备库和逻辑备库(二)
  5. 【狂神说Redis】5 事务
  6. python iloc iat_python数据预处理_DataFrame数据筛选loc,iloc,ix,at,iat
  7. MyBatis-Plus学习
  8. C语言函数一章教学,c语言案例教程:函数教学讲义.ppt
  9. python中unique函数_Pandas Series.unique()用法介绍
  10. workbench字符匹配错误_猪憨憨刷题笔记-LeetCode-10 正则表达式匹配