机器学习与药物筛选的心得体会

机器学习在药物设计里面的应用可以说还是比较常见的,尤其是搞计算的都会或多或少的涉及到这块。比如国内做这块比较多的,浙江大学的侯廷军教授,北京化工大学的闫爱霞教授,华东理工大学的几个做模拟计算的老师,上海药物所,上海交大的张健教授等。根据我读过他们的文章,很少有人会走到实验验证这个阶段。都是拿个体系,做个模型,再做几个理论的验证,就把文章发表出去了。这其中的原因是啥子,为什么不做实验来验证,我之前也不是很明白。最近我自己结合自己的课题需要,也做了这方面的工作。在这里我给大家分享我的经验,希望帮助大家更好的理解机器学习与虚拟筛选。
机器学习最常用来分类,在各个领域都会用到。举个例子,在药物设计领域,有些化合物活性好,有些化合物活性不好,有些化合物活性适中。这里面就牵涉到分类了,Active VS Inactive。如果能建立一个理论的模型来区分Active 和 Inactive的话,那这个模型就可以用来预测未知的化合物。当前机器学习的方法主要包括:naïve Bayesian, support vector machine, recursive partitioning, andk-nearest neighbors等等。这些方法都需要一定的自变量和因变量为输入,输出当然是模型本身。自变量用的最多的是化合物的各种性质,比如分子量、极性、分子体积、分子表面积、氢键给体受体等,也可以是能够描述分子的指纹信息(Fingerprints);因变量就是分的类别(Active VS Inactive)。当然也可以分很多类,比如高活性、中活性、低活性、无活性。自变量的选择往往就决定你建立模型是不是达到一定可靠度最关键的因素(现在文章基本要求模型的准确度>80%以上吧,training set、test set、validation set)。关于自变量的选择,最常用的就是分子描述符(2D or 3D),能够计算描述的软件很多,MOE,DS,还有免费的一大堆,想知道的可以看我之前发的帖子。这里我给大家分享一下我做描述符选择的经验。
描述符优化(Molecular descriptor selection)
描述符优化方法很多,最常用的是GA方法(遗传算法来优化描述符),相关文献也很多,想了解这方法可以直接去查文献。这里我给大家说说另外一种方法。运用基本统计的方法来做,用到的软件SPSS。主要步骤,把该计算的描述符全部计算好,然后导成CSV文件,自变量是描述符,因变量是分类(比如1代表活性,-1代表非活性)这样我总结了四部,可以到达优化描述符的目的,如下:
( 1)Common values analysis
(2)Pearson correlation analysis
(3)A stepwise variable analysis
(4)Linear regression analysis
第一步主要是去除一些含有太多常值的描述符(比如0或者1等),这些描述对每个分子都一样,这样就对体系没区别性贡献,可以直接删除。
第二步主要是做描述符相关性分析,比如有些描述符就是代表类似的意思(分子量MW和分子质量MM)这样就出现描述符冗杂,这个可以再SPSS里面做,一般相关>0.9以上的都可以抹掉。
第三步主要做剔除一个描述符,对整体的影响,逐步剔除。
第四步主要做描述符和活性之前的关系回归分析,这个很关键,有些描述符和活性之前的相关性(R)就很明显,有的就不行。
经过这个过程,你可以把描述符优化到20-30个左右(我自己做的经验)。这样再去用各种机器学习的方法来做分类模型,基本上会得到不错的结果。这里我选择SVM和k-nearest neighbors(KNN)来具体说明。
SVM具体步骤:LIBSVM 3.17 package

1、把数据集转换为LibSVM能够识别的格式;这个可以用WEKA来实现转化,也可以用EXCEL里面的宏功能
2、将数据集进行简单的缩放,这个非常重要,建议必需做
3、使用一个比较合适的各函数
    一般情况下,我用都使用RBF函数:K(x,y)=exp(-r||x-y||^2)
4、优化超参数
    一般情况下用交叉验证(cross-validation)和梯度搜索(grid-search)来实现此功能;
5、用最好的超参数来训练训练集
6、测试测试集

这六步基本上就可以实现SVM的所有计算,文章里面经常出现的参数(FP,FN,TP,TN,AUC)等都可以拿到,根据模型的准确度,基本上可以判断模型的好坏,好的话,基本就可以去写文章了(很多人都这样做的)。
k-nearest neighbors方法:Orange 2.0 (Orange Data Mining),免费的软件,很好用。
步骤:
1、把数据集转换为Orange能够识别的格式;这个可以用WEKA来实现转化,也可以用EXCEL里面的CSV文件
2、选择K参数
A total of k number of vectors nearest tothe vector x are used to determine the class of that unclassified vector. Theclass of the majority of the k-nearest neighbors is decided as the predictedclass of the unclassified vector x.
4、调试参数(K)
    一般情况下用交叉验证(cross-validation)
5、构建模型
6、测试测试集
Orange结果输出很人性化,基本把所有参数都给你计算好了(FP,FN,TP,TN,AUC,GA),自己来判断模型的好坏。
还有很多人基于分子指纹作为描述符的,其实这个更合理。相对描述符而言,分子指纹代表的信息量更大,但分子指纹计算一般都牵涉到商业软件,很难去破解指纹具体的数字信息,这样就很难和免费的SVM或者KNN方法实现无缝衔接,我最近发现有个软件算出来的指纹,就是用位数代表指纹的(实数集)PaDEL-Descriptor,想用的可以去下载,很好用。计算好指纹,采用对应的方法构建模型就行,步骤就和前面一样了。这里面有几个经验给大家说说:
(1)指纹的维度,基本是越大,模型越好。但是达到一定程度,模型的准确度,也就不变了
(2)基于指纹的模型,一般会比基于描述的模型要好一点(这里我指的是各种考核参数,尤其准确度)
(3)实际应用效果,描述符会比指纹更能选到新的骨架化合物(novel scaffold)
(4)指纹的最大好处,可以分析出来优势片段和劣势片段,这对合成化学家来说非常重要!!!
也是文章比较亮的一个点
如果有可能,也可以联合2者来做模型,优势互补!!!
我们最近实验室也开发了一个基于原子中心片段的方法(Atom Center Fragments),原理很简单。片段产生是我老板的一个程序,后来被一个师弟整合到贝叶斯里面,可以实现分类,用到2个体系,其中一个就是我用的mTOR抑制剂分类,也做了一个在线的服务器(http://rcdd.sysu.edu.cn/mtor/)效果也还不错,但这个方法处理大分子(比如抗菌分子),效果不是很好。
至于用这些分类模型来做虚拟筛选,我个人感觉,还是非常吃力的。主要原因是富集的化合物数目太大(比如你预测SPECS化合物库,返回给你2W),这样后期遴选化合物就非常吃力。我做了另外一个就是单独用机器学习的方法来做的,虽然实验也验证了。但是遴选化合物的过程,非常复杂。
如果把机器学习和其他主流的方法经行串联,效果会很不错(我也是做了这方面的工作,实验的结果还是可以的),比如先机器学习,在分子对接。这样就大大减少了分子对接耗时的问题,毕竟机器学习,可以大大的缩小原始虚拟库的大小(一般20W就可以缩到2W),这样对接很快就可以做完。大家感兴趣的可以试试。
通过这些,不难发现,为什么做计算的人,尤其是用机器学习的方法来分类,都不会涉及后面的实验验证。因为单凭这一种方法,来做筛选,富集化合物太多,很难实现化合物的遴选。对需要文章毕业的人,可以搞搞文章。但对于想做药物的人,还是多思考一下,怎么才能更好的用在药物筛选过程中。

如果有想做这一块的可以和我交流。
科学无界,大爱无疆!
参考: 机器学习与药物筛选的心得体会 - Powered by Discuz!

你可能感兴趣的:(人工智能药物设计,机器学习,人工智能)