基于分类法的机器学习模型提升分子气味预测性能
2026/5/25 11:49:21 网站建设 项目流程

1. 项目概述:当机器学习“闻”到分子的气味

预测一个分子闻起来是什么味道,这听起来像是科幻小说里的情节,但却是香料化学、食品科学和神经科学领域一个长久以来的“圣杯”式挑战。作为一名长期混迹于化学信息学和数据科学交叉领域的从业者,我深知这个问题的复杂性:它不像预测熔点或溶解度那样有清晰的物理化学规律可循。气味感知是主观的、多维的,且高度依赖于人类语言描述——我们称之为“气味描述符”。一个分子可能被描述为“果香”、“花香”、“青草味”或“硫磺味”,而这些描述之间又存在着微妙而复杂的层次关系。

传统的“结构-气味”关系研究多依赖于化学家的经验规则,但分子结构的微小改动(比如增加一个甲基)可能导致气味天差地别,这让基于简单规则的预测举步维艰。近年来,机器学习,特别是图神经网络(GNN),为这个问题带来了曙光。通过将分子结构视为图(原子是节点,化学键是边),GNN可以学习到更丰富的结构表征,甚至构建出“主气味地图”(Principal Odor Map)。然而,一个核心瓶颈依然存在:我们如何组织和利用那多达数百个、看似杂乱无章的气味描述符?直接让模型预测146个独立的描述符类别,无异于让它在噪音中寻找微弱的信号。

本文要探讨的,正是我们团队近期完成的一项工作:我们尝试为这些气味描述符建立“秩序”——即构建气味分类法(Taxonomy),并验证这种先验的结构化知识是否能成为机器学习模型预测分子气味的“导航仪”。我们采用了双管齐下的策略:一方面,依靠化学、调香和历史嗅觉文化领域的专家知识,手动构建了一个多层级的专家分类法(Expert Taxonomy, ET);另一方面,纯粹从数据出发,基于描述符在分子数据集中的共现模式,通过聚类算法生成了一个数据驱动分类法(Data-driven Taxonomy, DT)。我们的核心假设是:一个能反映描述符之间语义或感知相似性的分类体系,能够约束模型的输出空间,让模型学习到更稳健、更可泛化的“结构-气味”映射模式。

简单来说,这不是一个从零开始构建预测模型的故事,而是一个关于如何通过“整理标签”来显著提升现有模型性能的实战案例。无论你是从事计算化学、嗅觉信息学的研究人员,还是对机器学习在感官科学中应用感兴趣的数据科学家,亦或是希望理解AI如何辅助香料设计的从业者,这篇文章将带你深入我们方法论的每一个细节,分享从数据清洗、分类法构建、模型训练到结果分析的完整流程与踩坑心得。

2. 核心思路与方案设计:为什么是分类法?

在深入代码和结果之前,我们必须先厘清核心思路:为什么我们认为构建分类法能提升预测性能?这背后是对问题本质和机器学习局限性的深刻理解。

2.1 问题拆解:从“大海捞针”到“分区域搜索”

想象一下,你面前有6711个分子,每个分子可能带有1到17个不等的标签,这些标签来自一个包含146个气味描述符的集合。你的任务是建立一个模型,根据分子的结构特征(比如原子类型、环的数量、电负性等713个描述符),预测它可能属于哪些气味类别。这是一个典型的多标签分类问题。

直接使用146个原始描述符作为输出标签,面临几个严峻挑战:

  1. 数据稀疏与高维输出:许多描述符只出现在极少数分子上,导致正样本极少,模型难以学习。146维的输出空间使得模型参数空间巨大,容易过拟合。
  2. 标签相关性被忽略:“草莓”和“浆果”、“柠檬”和“柑橘”之间存在强烈的语义和感知相关性。一个具有“草莓”气味的分子,也很可能被描述为“浆果”。原始标签体系没有显式利用这种相关性,模型需要从数据中自行发现,这需要海量、高质量的数据。
  3. 噪声与不一致性:气味描述具有主观性。不同数据库、不同评价者对同一分子的描述可能存在差异或侧重不同。这种噪声在细粒度标签上会被放大。

引入分类法的核心思想,是进行标签空间的降维与结构化。我们将146个细粒度描述符归纳到16个更宽泛的“气味家族”中(如“果香”、“花香”、“木香”)。这样,模型的预测任务就从识别146个独立标签,转变为识别16个高层级类别。这带来了几个直接好处:

  • 减少输出维度:从146降至16,极大简化了分类任务,降低了模型复杂度要求。
  • 增强类内样本:原本稀疏的“草莓”、“覆盆子”样本,被合并到“果香”大类下,增加了该类别的正样本数量,让模型更容易捕捉到“果香”相关的结构模式。
  • 引入先验知识:分类法本身编码了描述符之间的相关性(例如,所有“花香”描述符被归为一类),为模型提供了宝贵的领域知识引导。

这就好比将“在大海中寻找特定种类的鱼”的任务,转变为“先找到鱼群活跃的海域(大类),再在该海域内识别具体鱼种(小类)”。第一步的“分区域搜索”大大降低了任务的初始难度。

2.2 双轨制分类法构建:专家经验与数据真相的对话

我们采用了两种截然不同但又互补的方法来构建分类法,旨在相互验证,探寻气味空间的本质。

2.2.1 专家分类法:基于领域知识的语义归纳

我们的专家团队汇集了化学、调香和嗅觉文化史的背景。我们从Pyrfume仓库的14个数据集中,合并、去重后得到了617个独特的气味描述符。构建ET的过程是高度人工和迭代的:

  1. 初步清洗与归并:首先,我们处理了拼写变体(如“fish”和“fishy”),使用编辑距离(Levenshtein distance)并结合人工校验,确保描述符的一致性。
  2. 概念分层:我们将617个描述符分为两大类:
    • 基于来源的描述符:直接描述气味来源或感知类别的词汇,如“柠檬味”、“木质调”、“青草味”。这是我们分类法的核心,共557个。
    • 嗅觉品质描述符:描述情感、强度或三叉神经感觉的形容词,如“愉悦的”、“新鲜的”、“刺鼻的”。这类共60个,因其主观性强,在本研究中暂不用于模型训练。
  3. 建立家族与子类:对557个基于来源的描述符,我们根据语义和感知相似性,将其归纳为16个“气味家族”,并进一步细分为31个子类。例如,“酒精”家族下包含“酸”和“醇”两个子类。这个过程依赖于专家的共识,并参考了调香业中常用的“香调轮”(Fragrance Wheel)概念,但做了更细致的扩展。

注意:构建专家分类法最大的挑战在于处理“跨界”描述符。例如,“香草”通常被认为是“美食调”,但它也带有一些“青绿感”。最终将其归入“美食调”是基于其主要感知属性和行业惯例。这类决策需要记录在案,以便后续与数据驱动结果对比。

2.2.2 数据驱动分类法:让共现模式说话

与ET的“自上而下”不同,DT是纯粹“自下而上”地从数据中涌现出来的。我们使用的数据是合并后的分子数据集(MMD),其中包含146个在数据中出现频率较高的描述符。

  1. 构建共现矩阵:我们计算了这146个描述符在所有分子中的共现关系。如果两个描述符(如“葡萄酒”和“果香”)经常同时出��在同一个分子的标签中,它们的共现值就高。
  2. 层次聚类:我们使用聚合层次聚类算法,以欧氏距离和Ward连接方法,对这个146x146的共现矩阵进行聚类。Ward方法旨在最小化簇内方差,能产生大小相对均匀的簇。
  3. 确定簇数量:为了与ET的16个类别进行公平比较,我们人为指定聚类数量为16。但通过“肘部法则”分析,基于数据本身的最佳簇数可能在43左右。这暗示了气味空间可能具有比我们预设的16类更精细的层次结构。

DT的魅力在于它的客观性。图4(论文中)展示了一个共现矩阵的子集,可以清晰看到“酒精”和“果香”各自形成了紧密的簇。像“杏”和“桃”这样的描述符高度共现,这与我们的直觉完全一致。然而,DT也会产生令人意外的组合,这恰恰是它能挑战或补充专家知识的地方。

2.3 模型与评估策略:公平的竞技场

为了评估分类法的效果,我们设定了严谨的实验方案:

  • 模型选择:我们选择了三种可解释性相对较好的经典机器学习模型:逻辑回归、随机森林和XGBoost。没有一味追求最复杂的深度学习模型,是为了确保过程透明,便于后续分析特征重要性。
  • 特征工程:使用Modred工具包从分子的SMILES字符串计算了713个分子描述符。经过方差过滤、ANOVA F检验和递归特征消除,最终筛选出23个最具判别力的特征。这些特征涵盖了拓扑、几何和电子性质。
  • 关键基准:随机分组:为了证明性能提升不是简单地源于输出空间从146降到16所带来的任务简化,我们设计了一个“随机分组”实验。我们创建了1000个随机分类法,每个分类法都将146个描述符随机分配到16个组中,但保持每个组的大小与ET或DT相同。如果ET/DT的性能仅仅是因为分类本身(而非有意义的分组),那么它们的表现应该与这1000个随机分组的平均表现无显著差异。
  • 评估指标:我们采用宏观平均的AUC-ROC、F1分数、精确率和召回率。宏观平均意味着对每个类别单独计算指标后再取平均,这对处理我们数据中存在的类别不平衡问题(如“果香”样本远多于“樟脑”样本)更为公平。
  • 数据划分:使用二阶迭代分层法划分训练集和测试集。这种方法在划分多标签数据时,能确保每个划分中标签对的分布保持一致,避免了因随机划分导致的某些标签组合在训练集中完全缺失的情况。

这个设计形成了一个完整的验证闭环:原始标签 -> 专家分类 -> 数据驱动分类 -> 随机分类。任何有效的结论都必须建立在ET和DT显著且稳定地优于随机分组的基础之上。

3. 数据制备与特征工程实战

理论设计得再完美,落地到代码和数据处理上才是见真章的时候。这一部分,我将分享我们从原始数据到模型可用特征的完整流水线,以及其中遇到的诸多“坑”。

3.1 多源数据集的整合与清洗

我们的数据来源于Pyrfume开源仓库,这是一个嗅觉研究领域的宝贵资源。但“开源”不等于“开箱即用”。

  1. 数据集筛选:从约50个数据集中,我们根据“人类被试”、“单一气味分子(非混合物)”、“描述符可靠性”三个标准,筛选出7个核心数据集:Arctander, aromaDB, FlavorDB, Flavornet, Goodscents, IFRA, Leffingwell。这些数据集在香料和食品工业界有较高声誉。
  2. 数据合并与去重:将7个数据集合并后,我们得到了超过2万个分子记录。但这里存在大量的重复和冲突:
    • 分子去重:同一个分子可能以不同的名称(通用名、商品名)或不同的SMILES表示(如手性差异、互变异构体)出现在多个数据集中。我们使用标准的分子规范化工具(如RDKit的CanonicalSMILES)进行统一,并基于InChIKey进行去重。
    • 描述符标准化:不同数据集对相似气味的描述用词不同,如“fruity” vs “fruit-like”。我们进行了简单的词形还原和拼写校正,但对于“green”和“grassy”这类有细微差别的词,我们选择保留,交给后续的分类法来处理其高层级关系。
  3. 构建最终数据集:经过清洗和去重,我们得到了包含6711个独特分子和146个独特气味描述符的“合并分子数据集”。每个分子关联1到17个不等的描述符标签。

实操心得:数据质量是生命线。Pyrfume中部分数据来自网络爬取,噪声很大。我们花了大量时间进行人工抽查校验。例如,发现有些分子被标记了完全矛盾的气味(如同时标记“香草”和“鱼腥”),这类极端案例需要结合化学知识判断是数据错误还是分子确实具有复杂气味谱,对于明显错误的数据予以剔除。这个过程无法完全自动化,必须依赖领域知识。

3.2 分子描述符计算与筛选

我们使用Modred从标准化后的SMILES计算描述符。最初得到了713个特征,但其中很多是冗余的、共线的,或者方差几乎为零。

  1. 初步过滤:首先移除方差为零或接近零的特征。这些特征对区分不同分子没有贡献。
  2. 基于统计检验的筛选:我们面对的是一个多标签问题,但特征筛选需要针对每个标签进行。我们采用了“一对多”的策略:对于146个原始描述符中的每一个,将其视为一个二分类问题(是该气味/不是该气味),然后使用ANOVA F检验评估每个特征对于区分该气味的的重要性。最后,为每个特征取其在所有146个任务中的最大F值作为其代表性分数,并保留排名靠前的特征。
  3. 递归特征消除:在初步筛选后,我们使用随机森林模型配合排列特征重要性(Permutation Feature Importance),进行递归特征消除。这个过程会反复训练模型,每次移除最不重要的特征,直到模型性能(这里用交叉验证的F1分数)开始下降。最终我们稳定在23个核心特征上。

这23个特征是什么?它们通常包括:

  • 拓扑描述符:如分子量、重原子数、可旋转键数、环的数量、各种连通性指数。
  • 电性描述符:如部分电荷总和、最高占据分子轨道能级估算值。
  • 官能团计数:如羟基、羧基、酯基、芳香环的数量。
  • 空间描述符:如惯性矩、范德华表面积等。

注意事项:特征筛选过程必须在训练集上进行,并用筛选出的特征子集应用于测试集,以避免数据泄露。我们使用了一个封装了特征筛选的交叉验证流程来确保这一点。此外,对于树模型(如随机森林、XGBoost),特征之间的线性相关性影响不大,但对于逻辑回归模型,严重的多重共线性会导致系数估计不稳定,必要时需进行相关性分析或使用正则化。

3.3 处理数据不平衡与多标签划分

我们的数据存在明显的类别不平衡。“果香”、“花香”类样本多达上千,而“樟脑”、“硫磺”类样本仅有两三百。在划分训练集和测试集时,简单的随机划分可能导致小类样本在训练集中代表性不足。 我们采用了iterative-stratification这个专门用于多标签数据分层的Python库。它不仅能考虑每个标签的分布,还能考虑标签对(label pairs)的分布。例如,确保“果香”且“甜”的分子在训练集和测试集中都有一定比例,这对于学习标签之间的相关性至关重要。

4. 模型训练、结果分析与可解释性探索

一切准备就绪,接下来就是训练模型、评估结果,并试���理解模型到底“学”到了什么。

4.1 性能对比:分类法真的有用吗?

我们首先训练了一个XGBoost模型在原始的146个描述符上(作为基线),其宏观AUC为0.604。这个数字高于随机猜测(0.5),说明模型确实捕捉到了一些信号,但离实用还有很大距离。

接下来是重头戏。表2和图5(论文中)清晰地展示了结果:

  • 专家分类法:宏观AUC提升至0.684,F1分数从0.268跃升至0.496。
  • 数据驱动分类法:表现略优于专家分类法,宏观AUC达到0.698,F1为0.513。
  • 随机分组:1000次随机分组的平均宏观AUC为0.648,显著低于ET和DT,但其标准差显示其性能分布在一个范围内。

结论非常明确:ET和DT带来的性能提升,远非仅仅因为将输出类别从146个减少到16个。随机分组同样减少了类别数,但其性能提升有限。ET和DT显著优于随机分组,证明有意义的、反映描述符内在关系的分类结构,能为模型提供强大的先验知识,引导其学习更本质的“结构-气味”关联

有趣的是,随机分组的平均性能(0.648)也明显高于基线(0.604)。这说明即使是无意义的随机分组,由于将相关描述符偶然分到一起的概率不为零(毕竟146个描述符随机分到16组,同组内出现共现描述符的概率不低),以及分类任务本身的简化,也能带来一定增益。但这更反衬出ET/DT通过有意设计的、高信息量的分组所能带来的额外巨大收益。

4.2 分类法概念对比:专家与数据的共识与分歧

表3(论文中)的对比极具启发性。我们将DT的16个簇(A-P)与ET的16个类别进行映射,并请ChatGPT-4o为DT的每个簇生成一个类别名称。

  • 高度共识领域:对于“美食调”、“花香”、“酒精”、“鲜味”、“果香”、“硫磺”、“木香”这些类别,DT和ET表现出高度一致性。这说明在这些领域,数据的共现模式与人类的语义感知高度吻合。例如,DT的“果香”簇清晰地包含了各种具体水果的描述符。
  • 有趣的分歧领域:DT的某些簇揭示了数据中隐藏的、可能被专家忽略的关联。
    • 簇E:包含了“肉桂”、“丁香”、“辛辣”、“香草”,但也混入了“香脂”、“药味”、“苯酚味”、“烟熏味”。专家可能倾向于将前四个归为“辛香”,后四个归为“药香/烟熏”。但数据告诉我们,这些气味在分子层面上经常共存。ChatGPT将其概括为“辛辣”,忽略了后半部分。这个簇或许揭示了某些分子结构(如含苯环、酚羟基的化合物)同时能唤起“辛香”和“药感”的复杂感知。
    • 簇F:包含“黄油”、“奶油”、“椰子”、“甜”等,DT将其映射为“乳制品/奶油”,而ET中类似的描述符可能分散在“美食调”和“脂肪味”中。数据驱动的方法将它们聚在一起,提示了“脂肪族酯类”等结构可能同时产生这些气味。
    • 簇K:包含“柑橘”、“清新”、“松木”、“薄荷”等,DT映射为“清新”,而ET的“柑橘”类更纯粹。数据表明,“清新”感可能与萜烯类(柑橘、松木)和薄荷烷结构都有关系。

深度解读:DT与ET的分歧不是谁对谁错,而是提供了两种视角。ET反映了人类基于语义和经验的、相对清晰的概念划分。DT则反映了分子气味描述在现实数据中的“纠缠”状态——一个分子往往被赋予多个在感知上可能不直接相关、但在化学结构上有关联的描述符。这种“纠缠”恰恰是“结构-气味”关系复杂性的体现。DT可以作为一种工具,来检验和修正专家分类法,使其更贴近数据的真实分布。

4.3 模型可解释性:什么样的结构闻起来像什么?

我们使用SHAP值分析来解读XGBoost模型。SHAP能告诉我们,对于预测某个气味类别(如“果香”),哪些分子特征贡献最大。

  • 对于“果香”类:SHAP分析显示,较低的分子量、较高的氧原子数量(可能与酯基、醛基有关)、特定的拓扑极性表面积值以及某些氢键受体的存在,是正向贡献最大的特征。这与化学常识相符:许多水果香气分子是低分子量的酯类或醛类。
  • 对于“木香”类:高碳原子数、复杂的环系统(如倍半萜结构)、较高的疏水性描述符显示出高SHAP值。这对应了檀香、雪松等木质香气分子通常具有较大、疏水的碳骨架。
  • 对于“硫磺”类:最重要的特征是分子中硫原子的存在(这是显然的),但SHAP进一步揭示了硫原子的特定化学环境(如硫醇-SH vs 硫醚-S-)以及其他辅助特征(如短碳链)的影响。

可解释性的价值:它不仅仅是为了满足好奇心。通过SHAP分析,我们可以:

  1. 验证化学直觉:确认模型是否学到了我们已知的化学知识。
  2. 发现新线索:对于某些分类,模型可能依赖一些意想不到的特征组合,这可以启发化学家设计新的分子。
  3. 诊断模型错误:分析模型对错误预测样本的SHAP值,可以判断是特征表征能力不足,还是数据标签本身有问题。

5. 挑战、局限与未来方向

尽管结果令人鼓舞,但我们必须清醒地认识到当前工作的局限性和未来的挑战。

5.1 当前方法的局限性

  1. 数据质量与一致性的根本制约:我们工作的天花板是数据本身。Pyrfume数据集是众包的,不同来源的描述符主观性强,且缺乏强度信息。“果香”是一个二值标签,但“强烈的草莓香”和“微弱的苹果香”都被标记为“果香”,这丢失了大量信息。未来需要更标准化、定量化的感知数据。
  2. 分类法的粒度与刚性:无论是16类的ET还是DT,都是一种粗粒度的简化。气味空间很可能是连续、多维的。强制划分为离散的、互斥的类别,会损失信息。更理想的方式可能是学习一个连续的“气味嵌入”空间。
  3. 分子表征的瓶颈:我们使用的713个传统分子描述符可能无法充分捕捉与嗅觉受体结合相关的立体电子特性。图神经网络(GNN)等深度学习方法能提供更丰富的表征,但其“黑箱”特性又不利于可解释性。如何结合GNN的表征能力和我们分类法的约束,是一个值得探索的方向。
  4. 浓度效应的缺失:如论文中提到的葡萄柚硫醇,其气味会随浓度从“果香”变为“硫磺味”。我们的模型目前无法处理这种浓度依赖的效应,这是一个重要的生物学现实。

5.2 实际应用中的注意事项

如果你打算复现或在此基础上进行开发,请牢记以下几点:

  • 不要过度解读DT的簇:数据驱动的簇反映了统计相关性,不一定是因果性或感知相似性。需要结合化学知识进行解读。
  • 分类法是领域相关的:我们构建的ET偏向于西方调香和食品科学的语境。对于描述东亚特有气味(如“沉香”、“抹茶”),可能需要扩展或构建新的分类体系。
  • 模型适用于“类药”或“类香”分子:我们的数据集主要来源于香料和食品添加剂,分子量大多在300道尔顿以下。对于非常大的分子或无机物,模型的预测能力未知。

5.3 未来可行的拓展方向

  1. 层次化多任务学习:不将分类法作为硬性的标签替换,而是设计一个层次化模型。底层预测16个大类,然后每个大类下再预测具体的描述符。这样既能利用分类法的约束,又能保留细粒度信息。
  2. 融合多模态信息:结合分子的3D结构(构象)、与已知嗅觉受体的对接分数(如果数据可得),甚至文本描述(从专利或文献中挖掘),构建更全面的预测模型。
  3. 主动学习与实验设计:利用模型的不确定性,指导化学家合成哪些最有信息量的新分子,以快速验证和迭代模型,形成“计算-合成-测试”的闭环。
  4. 面向应用的细化:针对特定应用场景(如“设计一种具有海洋调的新型香水分子”),可以在我们的通用模型上进行微调,或构建专门的数据集和分类法。

回顾整个项目,最大的体会是:在充满噪声和复杂性的感官科学领域,机器学习的力量不在于替代人类专家,而在于提供一个新的、数据驱动的视角来辅助人类理解。专家分类法代表了人类智慧的结晶,数据驱动分类法则揭示了数据中隐藏的规律。当两者对话、碰撞甚至产生分歧时,往往是最有洞见产生的时刻。我们开源所有的数据集、分类法和代码,就是希望邀请社区一起加入这场对话,共同绘制那份尚未完成的“气味地图”。这项工作只是一个起点,通往理性气味设计之路依然漫长,但每一步都让我们离“闻香识分子”的梦想更近了一些。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询