想象一下,有一颗载着治疗任务的“药丸旅行者”走进了一座名为“人体”的城市。他首先要通过机场安检(吸收)、搭乘公共交通(分布)、在本地工厂被加工成新身份(代谢)、把废物交给垃圾清运(排泄),全程还不能制造混乱(毒性)。这五个关口,医药界统称为 ADMET。药物能不能真正成为治病救人的好药,很大程度取决于它能否顺利走完这段旅程。 在传统研发中,这些实验往往要耗费数年时间和上亿美元。如今,AI模型可以从分子的结构特征出发,快速预测 ADMET 风险并给出综合的“成药性评分”,相当于给每个候选分子发一张“旅行风险评估卡”。本文就以这场人体城市冒险为线索,带你理解成药性评估的底层逻辑、经验规则和 AI 建模方法。

岗位关联

掌握 ADMET 预测与成药性评估,是 AI 制药工程师进入药物发现流程的必备技能,能帮你用代码更快筛选出安全、有效、可制造的候选分子。

目录
  1. 可视化演示
  2. 一、ADMET五兄弟
  3. 二、成药性三要素
  4. 三、Lipinski规则
  5. 四、Veber规则
  6. 五、AI特征表示
  7. 六、深度学习评分
  8. 七、筛选与验证
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

演示Lipinski五规则、Veber规则与多维成药性评分,理解AI预测分子成药潜力。

本节配有交互动效(进入视口后自动加载,约 3KB)。

Lipinski五规则 MW HBD MW≤500 违反规则越多成药性越低

一、ADMET五兄弟

想象一个药分子是远道而来的旅行者,走进“人体城市”前,他必须依次通过五个检查口:机场入境(吸收)、城市交通(分布)、当地加工厂(代谢)、垃圾清运(排泄),以及全程的治安检查(毒性)。任何一个口子亮红灯,这位旅客都可能被挡在门外,或者在城市里惹出麻烦。医药科学家把这五道关口称为 ADMET。

从实验室试管到人体临床,药物首先要经历的就是这五兄弟的考验。吸收指药物从肠道进入血液的效率;分布指它能否随血流到达病灶;代谢指肝脏等器官如何改造它;排泄指肾和胆汁如何把它清理出去;毒性则关注药物是否伤害细胞或器官。过去,这些只能靠动物实验和体外实验反复测试,慢且贵。

AI 的介入,让药物分子刚画出来就能预判“五关成绩”。我们常把每个属性量化成 0 到 1 的分数,再合成一个简单的综合评分。就像给旅行者做一张通关积分卡,分数越高,成药潜力越大。

五关全顺只是成为合格“市民”的第一步。它带来了治疗能力,但能不能被接受,还要看它是否具备真正的“工作能力”——这就是成药性的三要素。

ADMETscore=15(sA+sD+sM+sE+sT)\mathrm{ADMET}_{\mathrm{score}} = \frac{1}{5}(s_A + s_D + s_M + s_E + s_T)
这句话的意思是:把吸收、分布、代谢、排泄、毒性五个指标分别打分,取平均值,得到一个一眼能看的“五关总分”。
  1. 单一属性评分每个关卡用 0 到 1 的分数表示通过程度,1 表示完美。
    si∈[0,1],i∈{A,D,M,E,T}\displaystyle s_i \in [0,1],\quad i \in \{A,D,M,E,T\}
  2. 求和累加把五个属性的分数加起来,得到总得分。
    S=sA+sD+sM+sE+sT\displaystyle S = s_A + s_D + s_M + s_E + s_T
  3. 平均归一除以 5,让成药性评分保持在 0~1 区间,方便做阈值判断。
    ADMETscore=S5\displaystyle \mathrm{ADMET}_{\mathrm{score}} = \frac{S}{5}

二、成药性三要素

旅行者五关全过,说明他不惹祸、能顺利在城市里走一圈;但一个不惹祸的人未必能胜任医生或消防员的工作。药物同样如此:除了 ADMET 过关,还必须“能干”“安全”“好制造”。这三点被称为 成药性三要素。

第一是药效,药物必须能精准击中靶点,产生治疗作用;第二是安全性,副作用和毒性要在可接受范围内;第三是可制造性,包括合成路线是否简单、原料是否便宜、制剂是否稳定。一个分子即使活性极高,如果合成要三十步、或在空气里三天就变质,也很难成为商品药。

AI 模型通常把三要素变成可计算的分数,再用加权方式合成“总评分”。权重的确定可以来自行业经验,也可以从历史数据中回归学习。这样,模型在筛选阶段就能同时兼顾“能不能治病”和“能不能落地”。

有了综合评分,仍需要一个“秒筛”工具快速排除明显不合格的分子。医药史上最著名的两道安检门,就是 Lipinski 规则和 Veber 规则。

DrugScore=w1⋅Potency+w2⋅Safety+w3⋅Manufacturability\mathrm{DrugScore} = w_1 \cdot \mathrm{Potency} + w_2 \cdot \mathrm{Safety} + w_3 \cdot \mathrm{Manufacturability}
这个公式像一份加权简历:药效、安全、制造三项各有评分,乘以权重后加起来,就是综合录取分。
  1. 药效项表示分子达成治疗目标的活性强度,越强越好。
    Potency∈[0,1]\displaystyle \mathrm{Potency} \in [0,1]
  2. 安全项表示毒性风险的倒数,分数越高代表越安全。
    Safety∈[0,1]\displaystyle \mathrm{Safety} \in [0,1]
  3. 制造项代表合成可行性、稳定性与成本友好度。
    Manufacturability∈[0,1]\displaystyle \mathrm{Manufacturability} \in [0,1]
  4. 权重相加用权重 \(w_1,w_2,w_3\) 平衡三方面的重要性,三者之和为 1。
    w1+w2+w3=1\displaystyle w_1 + w_2 + w_3 = 1

三、Lipinski规则

很多旅行者连机场自动安检门都过不去:有的体型太大,有的浑身油腻,有的随身携带太多“氢键行李”。1997 年,科学家 Chris Lipinski 统计了上千个口服药物,总结出著名的 Lipinski 类药五规则,专门用来快速预判口服吸收潜力。

规则本身并不复杂:分子量不超过 500,脂水分配系数 logP 不超过 5,氢键供体数不超过 5,氢键受体数不超过 10。超标的分子往往渗透性差、溶解度低,还没到血液就被挡在了肠道里。它像一张体检表,几分钟就能完成初筛。

但要注意,Lipinski 规则是经验筛选,不是“及格线”。很多好药偶尔也会违反一两条,只是整体上符合规则的分子成为口服药的概率更高。这也让它成为 AI 特征工程里最重要的先验知识之一。

过了第一道安检,还有第二道:行李的形状和湿度也要控制。这就要请出 Veber 规则。

MW≤500,log⁡P≤5,HBD≤5,HBA≤10\mathrm{MW} \le 500,\quad \log P \le 5,\quad \mathrm{HBD} \le 5,\quad \mathrm{HBA} \le 10
这四条就像安检站的四项快速检查:体型、油腻度、供体行李数量和受体行李数量。
  1. 分子量(MW)分子总质量不超过 500,否则难以穿过生物膜这道“安检门”。
    MW≤500\displaystyle \mathrm{MW} \le 500
  2. 脂水系数(logP)衡量分子亲油还是亲水,数值太高像一身油腻的乘客,容易在体内“惹事”。
    log⁡P≤5\displaystyle \log P \le 5
  3. 氢键供体数(HBD)能给出氢键的基团不超过 5 个,否则易与水结合而难以穿膜。
    HBD≤5\displaystyle \mathrm{HBD} \le 5
  4. 氢键受体数(HBA)能接受氢键的基团不超过 10 个。
    HBA≤10\displaystyle \mathrm{HBA} \le 10

四、Veber规则

旅行者过了“身高体重”检查,但随身行李如果是一捆缠在一起的绳子,或者一块湿漉漉的海绵,照样会在城市里寸步难行。Veber 规则正是针对这类问题的补充安检。

Veber 团队研究发现,除了分子量和氢键,可旋转键数(RB) 和 极性表面积(TPSA) 对口服生物利用度影响很大。可旋转键太多,分子太“软”,晃动剧烈,难以稳定结合靶点;极性表面积太大,分子太“湿”,不容易穿透细胞膜。

因此 Veber 规则给出了两个补充阈值:可旋转键不超过 10 个,极性表面积不超过 140 平方埃。它和 Lipinski 规则一起,构成了经验规则时代最经典的两道筛选关卡。在 AI 特征工程中,RB 和 TPSA 也常被当作关键输入特征。

经验规则给了人类一份“肉眼可见”的标准,但面对成千上万的候选分子,还需要 AI 把这份标准变成机器能读的“登记照”。

RB≤10,TPSA≤140 A˚2\mathrm{RB} \le 10,\quad \mathrm{TPSA} \le 140\ \AA^2
这句话的意思是:药物分子要像行人一样轻装上阵,行李既不能太缠绕,也不能太吸水。
  1. 可旋转键数(RB)分子中能自由旋转的单键数量,越少则柔性越低、结构越固定。
    RB≤10\displaystyle \mathrm{RB} \le 10
  2. 极性表面积(TPSA)分子表面所有极性原子的总面积,它影响细胞膜渗透能力。
    TPSA≤140 A˚2\displaystyle \mathrm{TPSA} \le 140\ \AA^2
  3. 联合判断两条同时满足时,口服生物利用度通常更有保障。
    RB≤10 ∧ TPSA≤140 A˚2\displaystyle \mathrm{RB} \le 10 \ \wedge \ \mathrm{TPSA} \le 140\ \AA^2

五、AI特征表示

如果我们想让 AI 面试官判断药物分子是否靠谱,第一步得把分子拍成一张“登记照”。不同拍摄方式,就是不同的 特征表示。选错了表示方式,再聪明的模型也认不出这个分子。

最常用的有三种登记照。第一种是 分子指纹:把分子结构哈希成一段 0/1 位向量,相当于“带刀不带刀”“有无羟基”这类布尔问题清单。第二种是 理化参数:分子量、logP、氢键数、TPSA 等连续数值,像登记表上的身高体重。第三种是 分子图:把原子看成节点、化学键看成边,保留完整的拓扑连接,适合图神经网络。

在成药性评估里,常把这几种特征拼接起来,组成一个综合特征向量。比如把指纹向量和理化参数向量首尾相连,共同喂给深度学习模型。特征越丰富,模型才越有可能看到完整的“旅行者档案”。

登记照拍好了,接下来轮到资深面试官——深度学习模型——来综合打分。

x=[f;p]∈Rn+k\mathbf{x} = [\mathbf{f};\mathbf{p}] \in \mathbb{R}^{n+k}
这个公式把“0/1 指纹”和“连续理化参数”拼成一根长向量,作为神经网络的输入。
  1. 分子指纹位向量将分子结构编码为 0/1 序列,每一位对应一种子结构是否存在。
    f∈{0,1}n\displaystyle \mathbf{f} \in \{0,1\}^n
  2. 理化参数向量把分子量、脂水系数等连续描述符排成数值列表。
    p∈Rk\displaystyle \mathbf{p} \in \mathbb{R}^k
  3. 拼接为总特征用分号把两个向量首尾相连,得到新的 n+k 维特征向量。
    x=[f;p]∈Rn+k\displaystyle \mathbf{x} = [\mathbf{f};\mathbf{p}] \in \mathbb{R}^{n+k}

六、深度学习评分

资深面试官不会只看一个体检指标,而是把所有特征揉在一起,甚至能发现“个子矮但特别敏捷”这类隐性优势。深度学习评分模型就是这样的面试官:它不打自己的经验规则,而是从大量数据里自动学习特征组合。

在 ADMET 预测中,深度学习模型接受分子指纹或分子图作为输入,输出 0 到 1 之间的可信评分。最基础的结构是多层感知机:先做线性变换,再经过 ReLU 激活引入非线性,最后一层用 sigmoid 压缩为概率。若采用多任务学习,还能同时预测吸收、毒性等多个性质,让模型共享底层表征,泛化能力更强。

这类模型的价值在于,它不依赖人工规则的线性组合,能捕捉“看似违反了 Lipinski 规则,但因为特殊三维结构仍然能够成药”的复杂模式。当然,它也需要大量高质量标注数据和严谨验证,否则就只是一张乱打分的嘴。

面试官打完分,必须接受“考评委”的检验。候选分子能不能真正拿到入场券,还要看筛选流程和验证方法是否可靠。

y^=σ(W2⋅ReLU(W1x+b1)+b2)\hat{y} = \sigma(\mathbf{W}_2 \cdot \mathrm{ReLU}(\mathbf{W}_1 \mathbf{x} + \mathbf{b}_1) + \mathbf{b}_2)
这个公式是神经网络的一次“前向传播”:从特征向量出发,经过两层变换,最终输出一个 0~1 的成药性概率。
  1. 输入特征向量把分子登记照传给网络的第一站。
    x∈Rn+k\displaystyle \mathbf{x} \in \mathbb{R}^{n+k}
  2. 隐藏层线性变换用权重矩阵 \(\mathbf{W}_1\) 和偏置 \(\mathbf{b}_1\) 对输入做第一次投影。
    h=W1x+b1\displaystyle \mathbf{h} = \mathbf{W}_1 \mathbf{x} + \mathbf{b}_1
  3. ReLU 激活把负值归零,引入非线性,让模型能学到复杂模式。
    ha=ReLU(h)\displaystyle \mathbf{h}_a = \mathrm{ReLU}(\mathbf{h})
  4. 输出层线性变换用第二组权重和偏置把隐藏状态压缩成一个实数。
    z=W2ha+b2\displaystyle z = \mathbf{W}_2 \mathbf{h}_a + \mathbf{b}_2
  5. Sigmoid 映射把实数压缩到 0~1,解释为“可成药”的概率。
    y^=σ(z)=11+e−z\displaystyle \hat{y} = \sigma(z) = \frac{1}{1+e^{-z}}

七、筛选与验证

再优秀的面试官,也要用“历届旅客记录”来证明自己不是瞎打分。在 AI 制药中,模型给出的成药性评分必须经过 筛选与验证,才能被信任。筛选负责“找得准”,验证负责“判得稳”。

虚拟筛选是第一步:用训练好的模型扫描百万级分子库,给每个分子打分排序,把排名靠前的分子挑出来做实验。随后要建立高质量的验证流程,包括数据集构建、交叉验证、外部验证和实验回测。比如把数据切分成训练集和测试集,用交叉验证估计模型在未知分子上的表现;再用完全没见过的独立数据集做外部验证;最后把预测高分分子送去湿实验室实测,确认“纸上分数”和“真实环境”一致。

在评估分类效果时,不能只看准确率,因为阳性分子往往很少。业界更常用 F1 分数,它同时惩罚“漏报”和“误报”,能更公道地评价模型在候选筛选中的表现。

唯有通过层层筛选和验证,这位“药丸旅行者”才真正从 AI 评分卡走进实验室,踏上成为新药的征途。

F1=2×Precision⋅RecallPrecision+RecallF1 = 2 \times \frac{\mathrm{Precision} \cdot \mathrm{Recall}}{\mathrm{Precision} + \mathrm{Recall}}
F1 是精确率和召回率的调和平均,专门用来平衡“挑得准”与“捡得全”之间的矛盾。
  1. 精确率(Precision)预测为阳性的候选中,真正有活性的比例。
    Precision=TPTP+FP\displaystyle \mathrm{Precision} = \frac{TP}{TP+FP}
  2. 召回率(Recall)真实有活性的分子中,被成功捡出来的比例。
    Recall=TPTP+FN\displaystyle \mathrm{Recall} = \frac{TP}{TP+FN}
  3. 调和平均对两者取倒数平均再取倒数,避免被一个过高数字拉高整体评价。
    F1=2×Precision⋅RecallPrecision+Recall\displaystyle F1 = 2 \times \frac{\mathrm{Precision} \cdot \mathrm{Recall}}{\mathrm{Precision} + \mathrm{Recall}}

AI 应用场景

虚拟筛选中的初筛哨兵

阶段:候选化合物发现

解决的问题:传统方法用实验逐个体外测试上百万个分子,成本极高、周期极长。AI 模型先用 ADMET 预测给分子排序,把明显不合格的候选淘汰,再用实验验证少量高分分子。

具体案例:药企在化合物库中部署一个成药性评分模型,输入分子指纹和理化特征,输出 0~1 评分。筛选后,排名前 1% 的分子进入后续活性测试,命中率比随机筛选提升数倍。

先导化合物优化

阶段:先导化合物优化

解决的问题:先导化合物常有“活性很棒但毒性偏高”或“水溶性太差”的缺陷。工程师用 AI 评分模型作为快速反馈,指导化学修饰方向。

具体案例:团队对先导物进行骨架替换,每生成一个类似物就立即用深度学习评分模型预测其吸收、毒性和可制造性得分,保留高分结构继续迭代,将优化周期从数月压缩到数周。

多任务 ADMET 预警

阶段:临床前安全性评价

解决的问题:单靶点预测容易忽视 ADMET 属性之间的关联。多任务深度学习模型同时预测 hERG 心脏毒性、CYP 代谢抑制等多个指标,提前拦住“高危旅客”。

具体案例:使用分子图神经网络对候选药物做多标签分类,一次推理得到 5 个 ADMET 风险概率,供毒理学家做早期风险权衡,减少动物实验数量。

Python 演示

python28 行
import numpy as npfrom sklearn.linear_model import LogisticRegression def generate_data(n=500):    np.random.seed(42)    mw = np.random.normal(350, 100, n)    logp = np.random.normal(2, 2, n)    hbd = np.random.randint(0, 8, n)    hba = np.random.randint(0, 12, n)    tpsa = np.random.normal(70, 40, n)    rotb = np.random.randint(0, 14, n)    X = np.column_stack([mw, logp, hbd, hba, tpsa, rotb])    y = ((mw <= 500) & (logp <= 5) & (hbd <= 5) & (hba <= 10) &         (rotb <= 10) & (tpsa <= 140)).astype(int)    return X, y X, y = generate_data()clf = LogisticRegression(max_iter=1000)clf.fit(X, y)print('训练精度:', clf.score(X, y)) def predict(mw, logp, hbd, hba, tpsa, rotb):    arr = np.array([[mw, logp, hbd, hba, tpsa, rotb]])    prob = clf.predict_proba(arr)[0][1]    return '候选' if prob >= 0.5 else '淘汰' print(predict(400, 3, 2, 6, 80, 5))print(predict(700, 4, 3, 8, 100, 9))
目的:用逻辑回归模拟 AI 制药中的成药性初筛,根据 Lipinski 和 Veber 规则生成训练标签,预测新分子是否值得进入下一轮研发。
  1. y = ((mw <= 500) & (logp <= 5) & (hbd <= 5) & (hba <= 10) & (rotb <= 10) & (tpsa <= 140)).astype(int)用经验规则生成“成药/淘汰”标签,供模型学习。
  2. clf = LogisticRegression(max_iter=1000)创建一个轻量级分类器,模拟深度学习评分模型的简化版。
  3. clf.fit(X, y)让模型从 500 个样本中学习规则背后的线性边界。
  4. prob = clf.predict_proba(arr)[0][1]输出分子“可成药”的概率,相当于模型评分。
  5. return '候选' if prob >= 0.5 else '淘汰'按 0.5 阈值把概率转成业务决策。

常见误区

误区总觉得只要分子量、logP、氢键数都符合 Lipinski 规则,这个分子就能成药。

正解Lipinski 规则只是经验统计,不是物理定律。它对口服吸收有较好的“初筛”意义,但很多上市药物也会违反一两条。它不能预测活性、毒性和可制造性,更不能替代实验。它更像机场安检第一条队伍,过了安检不代表一定被录用。

为何常见:因为规则简单好记、数字明确,初学者容易把它当成万能筛选标准。

误区认为只要拿到分子指纹,深度学习就能自动学会所有 ADMET 性质。

正解分子指纹只能表达子结构存在与否,会丢失三维构象、手性、电荷分布等关键信息。实际项目中通常需要指纹、理化参数、分子图等多模态特征融合,才能较准确预测吸收、毒性等复杂性质。

为何常见:因为很多入门教程只演示指纹输入,让人觉得它是唯一标准输入。

误区认为多层神经网络在 ADMET 预测任务上一定优于浅层模型。

正解ADMET 数据通常样本少、噪声大,过深的网络容易过拟合训练集,导致外部验证分数大幅下降。模型结构要根据数据量、任务复杂度做取舍,多任务学习和正则化往往比单纯加深层数更有效。

为何常见:受图像识别、自然语言处理等大模型成功经验影响,忽略了制药数据“小而贵”的特点。

误区只盯着训练集准确率或测试集准确率,认为 98% 就是好模型。

正解在候选药物筛选中,活性分子占比往往很低,这时准确率可能被“多数类”主导。只有使用精确率、召回率、F1、AUC 以及外部独立验证,才能反映真实筛选能力。准确率高不等于真的能捞回阳性分子。

为何常见:因为分类问题里准确率是最直观、最容易理解的指标,初学者习惯拿它当唯一标准。

面试题

Q1. 在 ADMET 中,“吸收”描述的是?

单选题 · easy

  • A.药物在体内如何分布
  • B.药物从给药部位进入血液← 正确答案
  • C.药物如何被肝脏代谢
  • D.药物对器官的毒性反应

答案:B。吸收指药物从肠道等给药部位进入血液循环的过程。分布是进入血液后的去向,代谢是化学改造,毒性则是有害作用,所以选 B。

Q2. Lipinski 规则对分子量的上限是多少?

单选题 · easy

  • A.300
  • B.400
  • C.500← 正确答案
  • D.600

答案:C。Lipinski 类药五规则规定分子量不超过 500,超过这个阈值的分子通常口服吸收较差,因此选 C。

Q3. 下列哪个属于 Veber 规则的补充指标?

单选题 · mid

  • A.logP
  • B.对映体纯度
  • C.可旋转键数← 正确答案
  • D.pKa

答案:C。Veber 规则关注可旋转键数和极性表面积,用来补充判断口服生物利用度。logP 属于 Lipinski 规则,故选 C。

Q4. 以下哪些是 AI 常用于成药性预测的分子特征表示?

多选题 · mid

  • A.分子指纹编码← 正确答案
  • B.分子图结构← 正确答案
  • C.人口普查数据
  • D.理化参数数值← 正确答案

答案:ABD。分子指纹、分子图和理化参数是三种主流表示方式,分别刻画子结构、拓扑与连续性质。人口普查数据与分子结构无关,所以不选。

Q5. 深度学习成药性评分模型的输出常用什么激活函数映射到 0-1?

单选题 · mid

  • A.ReLU
  • B.Sigmoid← 正确答案
  • C.Tanh
  • D.Softmax

答案:B。Sigmoid 能把任意实数压缩到 0~1,适合做二分类概率输出。ReLU 常用于隐藏层,Tanh 输出范围是 -1~1,Softmax 用于多分类,所以选 B。

Q6. F1 分数是精确率和召回率的什么?

单选题 · mid

  • A.算术平均
  • B.几何平均
  • C.调和平均← 正确答案
  • D.加权对数和

答案:C。F1 是精确率和召回率的调和平均,能同时惩罚漏报和误报,尤其适合正负样本不平衡的药物筛选场景,所以选 C。

Q7. 交叉验证的主要作用是?

单选题 · hard

  • A.增加模型参数量
  • B.减少训练数据
  • C.评估模型对新数据泛化能力← 正确答案
  • D.提高分子合成产率

答案:C。交叉验证通过多次切分训练/验证集来估计模型在未见数据上的表现,是评估泛化能力的常用手段。它不改变参数量,也不涉及湿实验,故选 C。

Q8. 下列关于成药性三要素的说法,正确的有?

多选题 · hard

  • A.药效指目标活性足够强← 正确答案
  • B.安全性关注副作用风险← 正确答案
  • C.可制造性关注合成难度← 正确答案
  • D.三要素完全相互独立

答案:ABC。药效、安全性、可制造性分别刻画活性、风险和落地难度。它们之间常有矛盾,比如提高活性可能增加毒性,并非完全独立,所以 D 错误。

Q9. hERG 毒性预测通常被归入 ADMET 中的哪个环节?

单选题 · hard

  • A.吸收
  • B.代谢
  • C.毒性← 正确答案
  • D.排泄

答案:C。hERG 通道抑制会导致心脏毒性,属于安全性/毒性评估范畴,是临床前最受关注的指标之一,所以归入毒性环节。

Q10. 在模型验证中,下列哪些做法可降低过拟合风险?

多选题 · extreme

  • A.扩大训练集多样性← 正确答案
  • B.使用交叉验证调参← 正确答案
  • C.外部独立测试← 正确答案
  • D.增加模型隐藏层数

答案:ABC。更多样化的训练数据、交叉验证和外部独立测试都能帮助发现过拟合;单纯增加隐藏层数通常会加剧过拟合,故 D 不正确。