笔记
下载数据和代码
赛事链接:http://competition.sais.com.cn/competitionDetail/532233/format
启动魔搭Notebook
链接:https://www.modelscope.cn/my/mynotebook/preset
部署代码与数据
将解压好的代码和数据直接拖拽到魔搭Notebook内
运行代码
上传结果
运行完会得到submit.txt命名的结果,我们需要把他下载出来,然后上传到赛方
查看分数
相关知识
化学知识
分子结构表示:SMILES表示法
见链接:SMILES:一种简化的分子语言_smiles格式-CSDN博客
数据处理与特征工程
分子特征化
分子特征化是将化学分子的SMILES(Simplified Molecular Input Line Entry System)字符串转换为机器学习模型可以处理的特征向量的过程。这通常涉及以下几种方法:
分子指纹
分子指纹是一种将分子结构编码为固定长度二进制向量的方法,它可以捕捉分子结构中的局部特征。常见的分子指纹包括:
- ECFP(Extended-Connectivity Fingerprints):也称为Morgan指纹,它通过迭代地扩展原子的环境来生成指纹。
- FCFP(Functional Class Fingerprints):类似于ECFP,但它关注的是化学功能而不是原子环境。
- RDKit指纹:RDKit是一个流行的化学信息学库,提供了多种指纹生成方法。
分子描述符
分子描述符是描述分子物理化学性质的数值,它们可以提供关于分子行为的更多信息。常见的分子描述符包括:
- 分子量:分子的总质量。
- 极性表面积:分子中极性部分的表面积。
- 氢键供体和受体数:分子中能够形成氢键的原子数。
- 拓扑极性表面积(TPSA):衡量分子极性的一个指标。
数据标准化或归一化
标准化和归一化是将数据转换到同一量级的过程,以便模型更好地学习。
方法包括:
- 标准化(Z-score标准化):将数据转换为均值为0,标准差为1的分布。
- 归一化(最小-最大归一化):将数据线性映射到[0, 1]或[-1, 1]的范围。
- 非线性归一化:使用对数、指数等非线性函数来转换数据。
机器学习与深度学习
机器学习
机器学习是一种通过数据训练模型,使其能够从数据中学习并做出预测或决策的技术。机器学习算法可以分为监督学习、无监督学习和强化学习等类型。
监督学习
监督学习是最常见的机器学习类型,它通过已标记的训练数据来训练模型,使其能够对新的未标记数据进行预测。在预测碳氮成键反应产率的问题中,监督学习算法(如线性回归、支持向量回归、随机森林回归、梯度提升机等)可以用来建立底物、添加剂、溶剂和产率之间的关系模型。
无监督学习
无监督学习用于处理未标记的数据,其目标是发现数据中的内在结构或模式。在化学领域,无监督学习可以用于分子聚类、异常检测等任务。
强化学习
强化学习通过智能体与环境的交互来学习最优策略。在化学反应优化中,强化学习可以用于自动优化反应条件。
深度学习
深度学习是机器学习的一个子领域,它使用多层神经网络来学习数据的表示。深度学习在图像识别、语音识别、自然语言处理等领域取得了显著的成果。
神经网络
神经网络由多个层次组成,包括输入层、隐藏层和输出层。每一层由多个神经元组成,神经元之间通过权重连接。深度学习模型通过反向传播算法来调整权重,以最小化预测误差。
卷积神经网络(CNN)
CNN特别适用于处理图像和序列数据。在化学领域,CNN可以用于分子图像识别和SMILES字符串的特征提取。
循环神经网络(RNN)和长短期记忆网络(LSTM)
RNN和LSTM适用于处理序列数据,如时间序列预测和自然语言处理。在化学反应预测中,RNN和LSTM可以用于处理SMILES字符串,捕捉分子结构的时序特征。
迁移学习
迁移学习利用预训练的深度学习模型来解决新问题。在化学领域,可以使用预训练的语言模型(如BERT、GPT)来处理化学文本数据,通过微调来适应特定的预测任务。
模型评估
均方误差(Mean Squared Error, MSE)
均方误差是预测值与真实值之间差异的平方的平均值。MSE越小,表示模型的预测越接近真实值。
其中,yi 是真实值,y^i 是预测值,n 是样本数量。
均方根误差(Root Mean Squared Error, RMSE)
均方根误差是MSE的平方根,它与原始数据的量纲相同,因此更容易解释。RMSE越小,表示模型的预测越准确。
R²(R-squared, 决定系数)
R²表示模型解释的变异性占总变异性的比例。R²的值介于0和1之间,值越接近1,表示模型对数据的解释能力越强。
其中,yˉ 是真实值的平均值。
解释
- MSE和RMSE:这两个指标都衡量了预测值与真实值之间的平均误差。由于它们对大误差更为敏感(因为使用了平方),因此它们特别适合于那些需要避免大误差的情况。
- R²:R²提供了一个关于模型拟合数据好坏的总体度量。它不仅考虑了模型的预测误差,还考虑了数据的总体变异性。R²接近1表示模型很好地解释了数据的变异性,而接近0表示模型几乎没有解释能力。
注意事项
- 过拟合:在评估模型时,需要注意过拟合问题。过拟合是指模型在训练数据上表现很好,但在新数据上表现不佳。为了避免过拟合,可以使用交叉验证、正则化等技术。
- 数据分布:评估指标的选择还应考虑数据的分布特性。例如,如果数据中存在异常值,MSE和RMSE可能会受到较大影响,此时可以考虑使用平均绝对误差(MAE)等对异常值不那么敏感的指标。
设计与优化
超参数调优
超参数是模型训练前需要设置的参数,它们不是通过数据学习得到的,而是需要手动调整以优化模型性能。常见的超参数调优方法包括:
网格搜索(Grid Search)
网格搜索是一种穷举搜索方法,它在预定义的超参数空间中遍历所有可能的组合,以找到最佳的超参数组合。这种方法简单直观,但计算成本较高,尤其是当超参数空间较大时。
随机搜索(Random Search)
随机搜索在超参数空间中随机选择组合进行评估,而不是遍历所有可能的组合。这种方法在某些情况下比网格搜索更有效,尤其是当某些超参数对模型性能影响不大时。
贝叶斯优化(Bayesian Optimization)
贝叶斯优化是一种基于概率模型的优化方法,它通过构建一个代理模型(如高斯过程)来估计目标函数(如模型性能),并使用采集函数(如期望改进)来指导下一轮的超参数选择。贝叶斯优化通常比网格搜索和随机搜索更高效,尤其是在超参数空间较大且评估成本较高时。
模型集成
模型集成是一种通过结合多个模型的预测结果来提高整体预测性能的技术。常见的模型集成方法包括:
投票集成(Voting Ensemble)
投票集成通过结合多个模型的预测结果来进行最终的预测,可以是硬投票(选择预测类别最多的类别)或软投票(加权平均预测概率)。
堆叠(Stacking)
堆叠是一种更高级的集成方法,它通过训练一个元模型来结合多个基础模型的预测结果。基础模型在完整的训练数据上训练,然后它们的预测结果作为新的特征输入到元模型中进行训练。
提升(Boosting)
提升是一种顺序集成方法,它通过迭代地训练一系列模型,每个模型都试图纠正前一个模型的错误。常见的提升算法包括AdaBoost、Gradient Boosting和XGBoost。
装袋(Bagging)
装袋是一种并行集成方法,它通过在不同的数据子集上训练多个模型,然后将它们的预测结果进行平均或投票来减少方差。随机森林是装袋的一个典型例子。
赛事描述
任务
构建一个能够准确预测碳氮成键反应产率的预测模型。
通过对反应中所包含的反应底物、添加剂、溶剂以及产物进行合理的特征化,运用机器学习模型或者深度学习模型拟合预测反应的产率。
或者利用训练集数据对开源大语言模型进行微调以预测反应的产率。
总结:
输入:底物和条件,(SMILES)
输出:产率,(float,0-1之间)
数据
初赛数据集仅包含碳氮成键类型反应数据,其中训练集中包含23538条反应数据,测试集中包含2616条反应数据。训练集与测试集的比例接近9:1。每条训练数据包含 rxnid, Reactant1, Reactant2 , Product , Additive , Solvent , Yield字段。其中 Reactant1 , Reactant2 , Product , Additive , Solvent 字段中为对应物质的SMILES字符串,Yield字段为目标字段,是经过归一化的浮点数。
提交的结果文件(submit.txt)
rxnid,Yield
test1,0.5555
test2,0.6666
..., ...
本次学习活动的赛题是一个典型的回归问题
机器学习一般分为两种类型的问题:回归问题和分类问题。
回归问题:即预测的结果是连续的值。
分类问题:预测的结果是离散的值。
赛题要求就是建模SMILES式子,然后模型输出到0-1之间的连续值。