计算化学公社

标题: 机器学习实例介绍 [打印本页]

作者
Author:
chrischen1128    时间: 2020-3-13 22:55
标题: 机器学习实例介绍
最近在海外购买了一些不错的书籍,系统性的对scikit-learn做了介绍。由于书籍是日文的,为了方便与大家分享这些书中比较实用的例子,帮助机器学习小白尽快尽量简单的入门,能动手实际做一些机器学习的例子,特意编写了这个PPT。由于书籍中的内容很多,我也是边总结边做,PPT会保持不定期的更新。


已于2020-3-18更新part1部分的PPT,完整版中包含更多的构建回归预测模型的实例。
已于2020-3-24上传part2的完整版PPT,包含更多的构建分类预测模型的实例。
已于2020-3-28上传part3,part4的完整版PPT,包含更多的聚类预测模型和数据降维(次元削减)的实例。
已于2020-4-15上传part5,part6的完整版PPT,包含更多的模型评价和预处理与实战分析的实例。


作者
Author:
土拔鼠    时间: 2020-3-13 23:00
哇 谢谢陈老师 收藏先
作者
Author:
柒月小鱼    时间: 2020-3-13 23:24
https://www.bilibili.com/video/av88260116?p=47
配合食用
作者
Author:
Peter_zhong    时间: 2020-3-14 10:46
柒月小鱼 发表于 2020-3-13 23:24
https://www.bilibili.com/video/av88260116?p=47
配合食用

谢谢。请问这个适合基础差的吗,平时做课设只用C语言,C语言也不是很6 。
作者
Author:
zjxitcc    时间: 2020-3-14 11:35
Peter_zhong 发表于 2020-3-14 10:46
谢谢。请问这个适合基础差的吗,平时做课设只用C语言,C语言也不是很6 。

你点进去看看目录便知。零基础都行,在慕课上南大有两门Python公开课。任选一门。
作者
Author:
chrischen1128    时间: 2020-3-14 13:11
Peter_zhong 发表于 2020-3-14 10:46
谢谢。请问这个适合基础差的吗,平时做课设只用C语言,C语言也不是很6 。

适合零基础的
作者
Author:
hakuna    时间: 2020-3-14 14:50
模式识别----计算化学----化学计量学-----化学信息学----数据挖掘-----深度学习-----机器学习......
一路走来,越来越显得高大上了.....
machine learning这东西对于总结规律并预测是有用的,诸多方法中,曾经挚爱GP,只盼来生,不念过往......
作者
Author:
pyscf    时间: 2020-3-19 22:46
sobereva 发表于 2020-3-14 19:31
预告:北京科音高级量子化学培训班有一部分内容是讲机器学习的概念和在计算化学中的应用,其中我讲大约2/3 ...

机器学习+计算化学 的东西实际上非常尴尬
预测能量、静电势、极化率什么的 用普通的量化也能算
新模型提出了也就用来发文章看看
ML力场这个东西需要很大的训练集
感觉这方面暂时没什么实际用途
作者
Author:
sobereva    时间: 2020-3-19 23:59
pyscf 发表于 2020-3-19 22:46
机器学习+计算化学 的东西实际上非常尴尬
预测能量、静电势、极化率什么的 用普通的量化也能算
新模型 ...

机器学习的价值在于可以通过预测的模型以很少的计算量达到很不错的结果,成本明显低于直接用量化算同样的精度,而且甚至可以做到快速一键计算(比如网页直接提交)。
对于某一类问题,如果有他人利用强大计算资源训练好了模型,自己用起来就很容易了。因此此类情况不必担心耗时问题。
即便是自己训练的情况,也可以做到收益明显高于成本。比如跑分子动力学,直接做长时间的从头算动力学比较昂贵,但如果事先以有限的点数(比如两千)进行训练,则之后可以轻易通过ML势跑很长的轨迹,以及用于量子动力学等方面上(见比如sGDML的相关东西)。由于机器学习的实际价值,在VASP6也引入了构造和利用机器学习力场的功能。
“新模型提出了也就用来发文章看看”这是偏见。的确有很多机器学习研究的作者发完文章就了事了,最终没起到什么实际价值,但也有不少机器学习文章发出来的同时还给了预测工具,而且有些还是挺不容易计算的(例如用于预测原子数很多的固体核磁问题)。
多了解一些ML在化学中的(正确)应用就会对机器学习的价值有所充分认识。而了解不够多、或者只看一些不恰当或失败的应用范例的话,很容易会对机器学习有误解,以为是炒作出来的没用的东西。(实际上,在我广泛了解机器学习在计算化学中的应用之前,我一度以为机器学习是在跟风、炒作,直到了解多了后发现存在一些确实有实际价值的基于机器学习的与计算、量子化学有关的工具,以及看到一些机器学习能带来不可替代性的收益的研究文章)

推荐几个机器学习起到实际价值的范例:
Nature Material, 15, 1120 (2016):其中利用到机器学习筛选值得后续进一步量化计算的TADF分子
Nat. Commun., 9, 4501 (2018):机器学习预测固体NMR,并且给了在线工具https://www.materialscloud.org/work/tools/shiftml
Proc. Natl. Acad. Sci., 116, 3401 (2019):机器学习预测B3LYP与CCSD极化率的差值,有在线工具:https://www.materialscloud.org/work/tools/alphaml



作者
Author:
我本是个娃娃    时间: 2020-3-21 22:08
sobereva 发表于 2020-3-19 23:59
机器学习的价值在于可以通过预测的模型以很少的计算量达到很不错的结果,成本明显低于直接用量化算同样的 ...

说到机器学习,怎么能落下神经网络呢?(TensorFlow大法好!)
作者
Author:
granvia    时间: 2020-3-21 23:21
sobereva 发表于 2020-3-19 23:59
机器学习的价值在于可以通过预测的模型以很少的计算量达到很不错的结果,成本明显低于直接用量化算同样的 ...

私以为机器学习只能告诉你是什么,却很难告诉你为什么。 要知道为什么还得去人为地分析和思考。一个根本问题在于,相关性并不意味着因果关系——除非你让机器真正做到逻辑推理。。
作者
Author:
liyuanhe211    时间: 2020-3-22 05:05
本帖最后由 liyuanhe211 于 2020-3-22 18:46 编辑
granvia 发表于 2020-3-21 23:21
私以为机器学习只能告诉你是什么,却很难告诉你为什么。 要知道为什么还得去人为地分析和思考。一个根本 ...

仅对通过机器学习归纳现有计算或实验数据、生成廉价优质的计算模型来说,“不能产生‘为什么’”并不是它“独有”的缺点。用DFT、post-HF做计算说A分子能量高B分子能量低,它们也没法直接告诉你“为什么”,也需要做另外的分析。

       之前我曾思考实验化学家喜欢提问“为什么”到底是什么意思。比如某分子有某行为,在我的理解中它是个完全的微观可预测事件,就没有“为什么”之说。

       实验化学家问的“为什么”其实是“如何预测”,而且是“如何用一个人脑计算量就够的计算模型预测”,并且对精度要求很低

-----------------------------------------------------------------------------------------------------
       比如说“为什么A分子的能量比B分子高”,答:和答:
相比,乍一看前者似乎就是算,后者“点明了本质”,其实没有本质区别。所谓“有排斥”也是一个“计算级别”,这个计算级别姑且算它是个力场:
《人脑位阻力场》:“分子能量仅由下述能量的加和决定:任意两个成键基团在D∈(2.5A, +∞)时为0,从2.5A开始不是0,越近能量越大,增大的梯度也随距离增大,增大的梯度大小不知道。”

《人脑位阻力场》准不准呢?准个毛线,弄个A分子左边俩基团有排斥,B分子右边有俩基团排斥,马上就懵逼;弄俩分子不但位阻有区别,立体电子效应也有区别,影响方向相同,问你“为什么能量低”的时候哪个是主要因素啊?不知道。

       然而不准又能咋样?无所谓:
       我今天做个反应点个板儿没动,一通分析“为什么”:用的碱位阻太大了,你看这个分子拔氢的过渡态可能长这样,这个碱啊它走到这儿就有位阻,所以拔氢决速,反应太慢。
       第二天换个甲基锂,照样不动。然而我不会骂我自己前一天预测的太不准了。因为我前一天分析的时候就知道,我用的是这是个计算速度极快,但准确度很低的模型。有的时候能提供个方向就行,错的时候也无所谓

-----------------------------------------------------------------------------------------------------
       上面是基于推演、降维出个“位阻”的概念,用了前人给搭的《人脑位阻力场》;
       那有没有基于归纳(基于数据库)的总结呢?有。

       比如我们大多数搞有机的人脑子里都有个大概的常用碱、常用亲核试剂的酸碱性排序亲核性排序,甚至还能再细化一点,对不同类型的亲电试剂、亲核试剂的排序还不大一样。
      
       再或者,要做某反应,查数据库有十万个结果,往下筛、筛到30篇文献,一篇一篇看完,总结出“有结构A的Lewis酸比有结构B的Lewis酸好”,我要先试试A。

       前者其实是拿人脑做了个降维分析,是可能看了每种亲核试剂的已有反应结果,多的看了一两百个,少的就看了一两个,脑子里一共可能不到500个数据,投影到一个最多二维、经常是一维的模型上
       准吗?不准。一定能说清楚因果关系吗?事后总能对规律做解释,事前常不能推导得到。

       后者其实就是拿20篇文献在脑子里训练了个模型,给每篇文献里用的试剂结构与反应结果的关系弄了个Classifier出来,而且这个Classifier只适用于我今天晚上查的这一个反应
       准吗?不准。一定能说清楚因果关系吗?事后总能对规律做解释,事前常不能推导得到。

-----------------------------------------------------------------------------------------------------
       从上面看出,其实很多人问“为什么”,其实就是要一个简单、快速、适用于具体问题(其实就是应用范围狭窄)、通常精度及可靠性不高的模型(与其他人讨论时有人强调直观,我认为直观不直观是训练出来的,比如分子轨道、立体电子效应模型其实极不直观,但习惯了就好了)

       然后发现机器学习跟这种思路的接近程度其实比一般量化计算还要高很多。

-----------------------------------------------------------------------------------------------------
       实验化学家到底喜不喜欢用“说不清为什么”的工具呢?

       我看挺喜欢的。

       Chem3D里有MM2力场优化,一键完成,能吐个能量出来。我是见过不少(水平至少还不坏)的有机化学家在一开始设计的时候参考这个结果,加个基团去个基团,看看能量增高了还是变低了,跟自己直觉相同就特别自信,跟直觉相反就心里发毛。
       那他们关不关心MM2出来的数“为什么”俩结构能量一个高一个低呢?他们会进一步用分子立场搞能量分解?我是没见过。
       (甚至你从背后看还能发现它其实用的是从ChemDraw里拷过去、用快速构建方法生成的结构,很可能不是最优构象;或者甚至连成键都变了,还拿分子立场能量去读)

       MestReNova里有个用随机森林机器学习出来的预测核磁位移的模型,能搞自动归属,鼠标一放就告诉你是这个氢的概率是绿的,是另一个氢的概率是黄的,如果没有证据就先给那个绿的呗,用的特别欢。
       那“为什么”这个是这个氢的概率大呢?谁知道呢。错了怎么办?一方面也不是完全无脑用,另一方面是做了其他实验有矛盾的再改呗。

       他们不喜欢做实验之前先跑个DFT、先跑个量子动力学,不是因为做实验的人嫌这些模型“不能说明为什么”,而是这些模型慢,还不好学。如果有个工具能一秒钟算任意体系相对论Full CI/CBS全维量子动力学显式溶剂统计行为,还有很多人关心为什么?我看会比现在少很多,多画几个结构试试就完了。

       所以化学家们要的更多的不是为什么,而是快速(用脑子还是计算机都行)、简便(最好是“一键”)的预测工具而已。之前常用于回答“为什么”的关键词(电性、位阻、前线轨道布居数、立体电子效应、Gap等等),其实背后也是一个个符合这样特征的预测工具。

-----------------------------------------------------------------------------------------------------
Summary

       实验化学家关心的并不是“为什么”,而是希望要一个“一键”使用、可快速计算完成(脑子/计算机)、精度凑合就行、适用于他自己体系就行的模型。

       机器学习一方面可以构造这样的计算工具(当然这只是机器学习在化学中的一种用法,一个方面),另一方面机器学习其实完全有可能通过降维等操作发现一些好的描述符。

       所以我觉得还是有用的。

-----------------------------------------------------------------------------------------------------
深夜胡说,欢迎批判讨论









作者
Author:
sobereva    时间: 2020-3-22 15:05
granvia 发表于 2020-3-21 23:21
私以为机器学习只能告诉你是什么,却很难告诉你为什么。 要知道为什么还得去人为地分析和思考。一个根本 ...

“告诉为什么”其实也不是机器学习本身关心的。如同明尼苏达派泛函,也不那么关注物理意义,结果好就行。尤其是深度神经网络,更是个黑得不能再黑的盒子。不过现在也有诸如Influence Relevance Voting方法,属于可解释神经网络,能从中洞察到有化学意义的信息。
作者
Author:
lonemen    时间: 2020-3-23 21:18
噫,这个好,准备学起来。
作者
Author:
granvia    时间: 2020-3-30 14:22
sobereva 发表于 2020-3-22 15:05
“告诉为什么”其实也不是机器学习本身关心的。如同明尼苏达派泛函,也不那么关注物理意义,结果好就行。 ...

这个看法我赞同
作者
Author:
granvia    时间: 2020-3-30 14:32
liyuanhe211 发表于 2020-3-22 05:05
仅对通过机器学习归纳现有计算或实验数据、生成廉价优质的计算模型来说,“不能产生‘为什么’”并不是它 ...

没说机器学习没有用。就总结规律和建立预测模型来说,用处肯定很大,而且比人还精密靠谱。但是,这里总结的规律和预测模型都是有适用范围的,而这个范围的认识和界定,目前机器学习很难做到。 相反,人却可以基于已有的科学体系知识,并使用逻辑推理和合理的洞察,来提取所得到的规律或预测模型的更深层次物理和化学意义(即为什么),从而判断训练得到的规律和模型的世界观。

我只是想强调,目前机器学习远无法替代人在科学中的作用,更不能在目前的现实上过分浮夸其作用。当然,未来怎样不得而知。
作者
Author:
liyuanhe211    时间: 2020-3-31 06:41
granvia 发表于 2020-3-30 14:32
没说机器学习没有用。就总结规律和建立预测模型来说,用处肯定很大,而且比人还精密靠谱。但是,这里总结 ...

确实如此,在12楼Sob说的也是“机器学习的价值在于可以通过预测的模型以很少的计算量达到很不错的结果,成本明显低于直接用量化算同样的精度”,而暂时不是发现“更深层次的物理和化学(定律)”。

你说的这方面更多的属于AGI的研究范畴,AGI现在的一些研究其实很有意思,因为当前没有能实现AGI的具体框架,所以AGI问题很纯粹,有类似数学公理体系+推演的洁净感。
作者
Author:
comboy2008    时间: 2020-4-1 17:56
卢老师陈老师!scikit-learn都讲了,RDkit 也不落下,RDKit: Open-Source Cheminformatics Software   http://www.rdkit.org/
RDKit作为处理化学、生物、药学和材料学科中分子数据作为可输入机器学习和深度学习模型的重要工具应用。内容涵盖了基于RDKit的Python3的分子的读写、化合物的分子指纹和分子描述符计算、化合物的2D/2D比对、化合物相似性搜索、化合物骨架分析和亚结构搜索、RMSD计算与构象生成优化、分子相似图与聚类分析、化学反应处理、可视化与化学空间探索及RDkit相关的机器学习、深度学习应用过程详解
http://www.rdkit.org/
作者
Author:
comboy2008    时间: 2020-4-2 11:46
机器学习的基础是数据,数据的高度决定了学习的高度。因此对于化学领域而言,如何得到化学分子的结构信息至关重要。目前开源的化学信息学软件有CDKit,RDkit等可以提取分子描述符合分子指纹信息。但是这些信息都是基于分子结构组成、拓扑、连接性、电负性等提取的参数,都不是基于量子化学计算的电子信息。如果要根据化学环境得到参数,用量化计算的结果可能更加准确。因此如果在multiwfn中能够增加输出gaussian、orca等量化软件计算的数据,可以为机器学习提供大量高质量的数据。这个也是我们做化学信息学领域人员急切需要的功能。卢老师已经在multiwfn中增加了概念密度泛函参数的功能,再增加一个输出multiwfn所能得到的分子所以参数的功能如何?
作者
Author:
sobereva    时间: 2020-4-3 12:02
comboy2008 发表于 2020-4-2 11:46
机器学习的基础是数据,数据的高度决定了学习的高度。因此对于化学领域而言,如何得到化学分子的结构信息至 ...

这个不好整合,不同参数分散在不同功能里,计算原理差异很大
用户用命令行方式自动运行Multiwfn并提取需要的数据即可,非常简单,参考:
详谈Multiwfn的命令行方式运行和批量运行的方法
http://sobereva.com/612http://bbs.keinsci.com/thread-24929-1-1.html


作者
Author:
comboy2008    时间: 2020-4-4 15:57
sobereva 发表于 2020-4-3 12:02
这个不好整合,不同参数分散在不同功能里,计算原理差异很大
用户用命令行方式自动运行Multiwfn并提取需 ...

谢谢卢老师指点!
作者
Author:
cju    时间: 2020-4-12 01:52
机器学习在化学里面可能更像是一种top-down的思路,相对于dft这种从头算的,优势在于速度,劣势就是如果预测性质的话,误差多大心里没有数的,和训练集里面骨架类似就可以做到很小的误差,差的很远那也可能飘到十万八千里了。
很多的机器学习的文章用的是dft算下来的结果,那意义其实就只是节约时间而已了,但是机器学习不一定不能比dft更加精准,个人觉得现在最大的问题就是缺少实验来的数据集。
作者
Author:
哎呀妈呀    时间: 2020-4-23 15:04
很详细,好东西呀
作者
Author:
qq8942128    时间: 2022-6-30 22:39
柒月小鱼 发表于 2020-3-13 23:24
https://www.bilibili.com/video/av88260116?p=47
配合食用

链接失效了




欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3