跳转至

P4-3.2 启发式与模型选择

Section ID: P4-3.2 Version: v2026.07.20

在 P4-3.1 里,我们把 heuristic 看成 在有限时间和有限信息下缩小候选集的判断标准。这一节要把这个视角应用到 model selection 上。

学习机器学习时,到底该用哪个 model? 这个问题常常会显得很大。但 model selection 并不是单纯挑一个有名算法名字,而是把问题形态、数据状态、可解释性、计算成本、评估标准一起摆出来,然后先缩小 应该先试什么 的候选集合。

这里 heuristic 不是最终结论,而是出发点。你会先决定 这个问题先从这些 model 开始试,然后再去验证这种选择在真实数据上到底是否合适。

这一节不会再次把 heuristic 本身讲很长。缩小候选集的判断 这一基础含义,会通过 P4-3.1 和 概念词汇表 再接回来;这里专注的是,这种判断在 model selection 阶段到底怎样发挥作用。

本节范围

这一节先把 model selection 中 heuristic 缩减的是什么,以及它会建立怎样的比较起点 关上。数据拆分和 validation 会在 P4-4 继续处理,overfitting 和 generalization 会在 P4-5 继续处理,metric 会在 P4-6 继续处理,preprocessing 和 feature 会在 P4-7 继续处理,model selection 的流程会在 P4-8 继续处理,hyperparameter tuning 会在 P4-9 继续处理。具体 model 会从 P4-10 到 P4-19 按问题类型再次遇到。

这一节回答下面这些问题。

  • 在 model selection 里,heuristic 到底缩减的是什么?
  • 问题类型会怎样缩小 model 候选?
  • 为什么需要 baseline model?
  • performance、interpretability、cost 会怎样彼此冲突?
  • 如果想把 heuristic 留成可验证的记录,应该写下什么?

用启发式与模型选择留下的判断标准

  • 能把 model selection 解释成 缩小候选并进行验证的流程,而不是单纯挑 model 名字。
  • 能说明为什么随着问题类型不同,先看的 model 候选也会不同。
  • 能说明 baseline model 是用来判断复杂 model 是否值得使用的比较基准。
  • 能理解 model selection 不只受 performance 影响,还会同时受到 interpretability、计算成本和当前数据状态影响。
  • 能学会把 model-selection heuristic 记录成 working hypothesis。

先用一个场景来理解

想一想一个小型客户流失预测项目。数据里有客户最近登录次数、购买金额、咨询次数、订阅时长。目标是找出下个月更可能流失的客户。

在这个场景里,可选 model 很多。但一开始就把所有 model 全试一遍,并不一定是好的起点。

候选 为什么会先想到它 要小心什么 后面会在哪里再处理
logistic regression 在预测流失/留存这类两类输出时,它是很自然的简单 baseline。 只靠线性关系可能不够。 P4-11
decision tree 很容易解释 在什么条件下流失增加 如果长得太深,可能过度贴合训练数据。 P4-14
random forest 把很多树组合起来,往往能期待更稳定的表现。 比单棵树更难解释。 P4-15
gradient boosting 在表格型数据上经常能表现很强。 调参与验证要更谨慎。 P4-16

这里 heuristic 并不是说 logistic regression 就是答案。它更像是在安排实验顺序:先立一个简单 baseline,再比较解释性和性能是否还需要更强的候选。

把这个判断画成案例流程后,就会更清楚地看到:model selection 不是 挑名字,而是 根据问题与约束先缩小候选,再做一个小比较集合

flowchart TD
  A["流失问题<br/>预测流失 / 留存"]
  B["任务类型<br/>分类"]
  C["约束条件<br/>可解释性 / 表格数据 / 成本"]
  D["先立基准模型<br/>逻辑 回归"]
  E["树模型候选<br/>决策树"]
  F["更强的集成候选<br/>随机森林"]
  G["用验证比较<br/>召回率 / 精确率 / 成本"]
  H["保留或扩展候选集<br/>记录原因"]

  A --> B
  B --> C
  C --> D
  C --> E
  C --> F
  D --> G
  E --> G
  F --> G
  G --> H

模型选择是缩小候选集的过程

model selection 通常会按下面这样的流程推进。

flowchart TB
  A["问题类型<br/>分类 / 回归 / 聚类"]
  B["约束条件<br/>数据规模 / 可解释性 / 成本"]
  C["基准模型<br/>先从简单模型开始"]
  D["候选模型<br/>要比较的小集合"]
  E["验证<br/>按约定指标比较"]
  F["决策记录<br/>为什么保留或更换"]

  A --> B
  B --> C
  C --> D
  D --> E
  E --> F
  F --> D

这里最重要的一点是:它并不试图一步就猜中最终 model。它会先看问题类型,再确认约束,再立 baseline,然后比较一个小候选集合。如果 validation 结果不好,就再次调整候选集合。

先根据问题类型缩小第一轮候选

最先要看的,是问题类型。要预测的是数值、类别,还是没有标签的结构,这会直接改变你首先想到的候选。

问题 问题类型 首先想到的候选 后面会在哪里再处理
要预测像房价、营收、温度这样的数字吗? regression linear regression、tree-based regression P4-10、P4-14
要预测像通过/未通过、流失/留存这样的类别吗? classification logistic regression、decision tree P4-11、P4-14
想在没有标签时寻找相似分组吗? clustering k-means、DBSCAN P4-17
想把很多 feature 压成较少的轴吗? dimensionality reduction PCA、t-SNE P4-18
是在选择动作并接收 reward 吗? reinforcement learning Q-learning、policy gradient P4-19

这张表不是答案表,而是缩小候选的地图。真正的选择仍然要通过数据和评估结果再次确认。

baseline model 是比较基准

baseline model 不是一开始就为了拿到最好性能的 model。它是用来判断 复杂 model 到底值不值得上 的比较基准。

例如,在流失预测里,就算完全不用 model,只是一直预测 大部分用户不会流失,accuracy 也可能看起来不低。此时,如果一个复杂 model 只把 accuracy 稍微提高一点,也很难说它就真的有实际价值。还必须一起看 precision、recall、cost 和业务目的。

baseline model 会帮助回答下面这些问题。

  • 它有没有比完全不用 model 的简单规则更好?
  • 复杂 model 到底有没有比简单 model 好到值得使用?
  • 性能提升是否值得牺牲解释性或运营成本?
  • 在当前数据条件下,是不是该先修数据质量,而不是继续推 model?

baseline 会在 P4-8.2 里更详细地处理。这里先只把它当成 model-selection heuristic 的第一个固定比较点。

不能只按 performance 来选

在 model selection 里,performance 很重要。但如果只按 performance 来选,实务中很容易出问题。

基准 要问的问题 例子
performance validation data 上目标指标够好吗? 在 recall 很重要的问题里,不能只看 accuracy。
interpretability 人能不能解释并检查结果? 如果业务人员必须理解规则,简单 model 可能更合适。
computational cost 训练和预测时间是否可接受? 在实时服务里,prediction latency 会很重要。
data requirement 它适合当前数据规模和质量吗? 如果数据太少,复杂 model 可能会很不稳定。
operability 能不能部署、监控、再训练? 就算 model 很好,如果难以运营,也可能失败。

这些基准会相互冲突。容易解释的 model 可能性能一般,而性能强的 model 可能更贵或更难解释。model-selection heuristic 的作用之一,就是提前把这些冲突显露出来。

常见的模型选择 heuristic

下面这些 heuristic 在前期实验中经常使用。但全部都仍然需要 validation。

heuristic 为什么可以用 一定要确认的点
先做一个简单 model。 可以很快立住 baseline。 要确认简单 model 是否已经足够,以及复杂 model 是否真的更好。
按问题类型分候选。 regression、classification、clustering 的目标不同。 要重新确认实际目标是否定义清楚。
如果业务要求解释,就先看可解释 model。 因为结果可能需要解释给人听。 不能因为好解释就忽视 performance 风险。
数据小的时候,不要急着上很复杂的 model。 overfitting 风险可能更高。 仍要检查数据拆分和 validation 结果。
对 feature scale 敏感的 model,要连同 preprocessing 一起看。 k-NN、SVM 这类 model 会受距离与尺度影响。 preprocessing 条件要公平地纳入比较。
如果连 baseline 都很弱,先怀疑数据。 问题可能在 label、缺失值或样本,而不在 model。 要重新检查数据质量和问题定义。

这些 heuristic 不是 永远都要这样做 的规则,而是让前期探索更有秩序的起点。

在真实工作里,更核心的是先判断:当前应该先缩减哪些 model 候选。

当前问题状态 先缩减到哪一类候选 原因
输出是类别,而且解释性也很重要 先看 logistic regression、decision tree 这类简单分类候选 因为它们很适合快速比较 baseline 和规则感。
在表格型数据里怀疑存在非线性关系 把 tree family 候选一起放进来 因为它们更可能抓到 feature 交互。
当前比起 label,更需要结构探索 把方向切到 clustering 或 dimensionality reduction 候选 因为此时目标是先理解结构,而不是比较 prediction model。
连 baseline 都非常弱 先回头重看数据和 label,而不是继续换 model 因为问题定义或数据质量可能已经先不稳。

heuristic 必须被记录下来

如果 heuristic 只留在脑子里,就很难验证。在 model selection 过程中,必须记录:为什么先看这个 model、担心什么、以及以后按什么标准决定是否更换。

记录项 例子
选中的候选 先比较 logistic regression 和 decision tree。
选择理由 这是一个流失分类问题,而且需要解释性。
预期风险 线性关系可能不够,或者 tree 可能会过拟合。
验证方式 用 P4-4 会处理的 validation data 来比较。
评估标准 一起看 P4-6 会处理的 recall 和 precision。
下一步动作 如果没有明显优于 baseline,就回头重看数据和 feature。

像这样写下来,heuristic 就不再是 凭感觉挑的,而会变成 从一个可验证的 working hypothesis 出发

这一节里要小心的误解

在 model selection 里,最常见的误解之一,就是认为越有名的 model 就一定越好。现实里,如果数据很少、label 不稳定、或者解释性非常重要,简单 model 反而可能更合适。

第二个误解,是只看一个 validation score 就决定 model。这也可能导致过度贴合 validation data。这个问题会在 P4-5 的 overfitting 和 generalization 里再次处理。

第三个误解,是把 model selection 看成纯粹的 model 问题。如果性能不好,在把 model 变复杂之前,应该先确认 data、label、feature、evaluation 基准 是否真的适合当前问题。

案例与示例

案例 1. 客户咨询分类里,应该先比较哪一种 model?

假设客服中心想把咨询自动分成 退款配送延迟账户问题商品咨询。业务人员到现在为止,一直是通过标题里有没有 退款取消配送 等词,先用手工规则做初步分类。

这种方式在起步时很快,但只要表述稍微变化,漏掉的咨询就会变多。像 我想退款 这种句子能抓到,但 这笔支付能取消吗 这种换了说法、意思相近的句子,就很容易被规则漏掉。于是,团队必须在 直接上最复杂 model继续只用原规则 之间找到起点。

这时 model-selection heuristic 可以变成:先用 logistic regression 这类简单 baseline,看文本分类大致能走到什么程度;然后再比较是不是还需要更强的性能或更好的解释性。 接着再把 decision tree 或更强的候选加进来比较,就能看见 复杂度上升之后到底有没有真正收益

真正可检查的结果也很明确。你可以比较 baseline model 和 rule-based classifier 的错误类型,再看各个 class 的 precision 和 recall,就能知道到底是哪一类咨询得到了改善。如果 baseline 已经能稳定抓住大多数重复咨询,就可以把更复杂 model 延后。反之,如果在表达变化很大的咨询上持续出错,就应该考虑更强的表示模型。

flowchart TD
  A["咨询分类问题"]
  B["规则型起点"]
  C["措辞变化导致漏判过多"]
  D["先试简单基准模型"]
  E["与树模型或更强候选比较"]
  F["检查各类 精确率 和 召回率"]
  G["保留候选短名单或继续扩展"]

  A --> B --> C
  C --> D --> E --> F --> G

Checklist

  • 能不能说明为什么 model selection 不是 挑一个有名 model,而是 先缩小候选集
  • 能不能说明在什么状态下,比起继续加复杂度,更应该先重新检查 data 和 label?
  • 能不能说明为什么 baseline model 会成为解释复杂候选性能的比较基准?
  • 能不能说明,model selection 不是猜 model 名字,而是缩小候选并验证的过程?
  • 能不能说明,问题类型是缩小 model 候选的第一基准,而 baseline model 是比较复杂候选的最小标准?
  • 能不能说明为什么 performance、interpretability、computational cost、data state、operability 必须一起看?

来源与参考资料