第三部 · 从数据中学习 · 第 9 章

机器学习的基本逻辑

从任务、经验与性能出发,把机器学习理解为用有限数据调整函数;以可复算的虚构房价案例解释泛化、切分、泄漏、正则化、交叉验证与分布漂移。

导读:不是“把答案喂给机器”

机器学习(machine learning,ML)是一类让计算系统依据数据中的经验调整可执行模型,以改善某项任务表现的方法。比如,模型从过去成交记录中调整“面积、房龄、地区等输入如何对应价格”的函数,再给新房屋估价;它学到的是数据与目标共同限定的统计关系,不是房产常识的完整副本,也不会仅因名字里有“学习”就具有人的理解。一个经典操作性定义用任务(task)—经验(experience)—性能(performance)三件事判断系统是否在学习。[1, Chapter 1, p. 2]

读完本章,应能回答四个问题:训练、验证和测试为什么不能混用?训练误差很低为何仍会失败?随机切分何时制造过度乐观的印象?预测得准为什么不能直接回答“采取某项措施会怎样”?我们只讲这些方法共享的逻辑;线性回归、决策树、神经网络和强化学习的具体构造留到第10—13章。

9.1 把“学习”拆成任务、经验与性能

先写清任务。房价系统可能预测成交总价、估计价格区间,或把房源分入价位档;三个输出需要不同的误差计分尺度和使用流程。再写经验:哪些城市、月份、房屋、成交渠道构成数据?最后才是性能:平均绝对误差是几万元,在哪些地区和时间段测得,和什么基线比较?不声明三者,“准确率90%”几乎没有可解释的对象。

训练时,算法拿一批输入与目标答案,调整模型内部的参数(parameter)。使用时,固定下来的模型做推断(inference),把新输入映射为预测。用一句不神秘的话说:训练是在候选函数中找一个;推断是把选中的函数算一遍。 算力、优化步骤和数据规模会影响找到哪个函数,但训练并不是把现实规律从数据中无损“读出来”。

一个重要技术的五问由此有了答案:机器学习是什么——用经验调整模型的技术族;为何出现——很多感知或预测边界难以逐条手写;如何工作——定义输入、目标与损失(loss,即把预测与目标差异映射为数值的计分规则),依数据调整参数,再在未见数据上评价;能做什么——在任务和分布相近时作可量化预测或排序;不能做什么——它不能从有限观测唯一恢复世界规律,也不能自动保证新地区、公平性或因果效果。

若要把统一逻辑压成可执行的四步,就是:先定义任务对象、预测时点与性能尺度;再检查经验数据、目标和每个特征在预测时是否可得;然后只用训练数据拟合,以验证流程选择方案;最后冻结方案,用未参与选择的评价机制检验,并在部署中监测变化。后文逐步解释每一步为何不能省略。

9.2 候选函数从哪里来:假设空间与归纳偏置

假设空间(hypothesis space)是训练过程允许选择的候选函数集合。只允许直线关系、允许分段弯曲,或允许极多局部变化,构成不同空间。空间太窄可能连主要规律也表达不了;空间很宽则能容纳更多规律,也更容易追随样本偶然性。

归纳偏置(inductive bias)是学习方法从有限已见样本推广到未见样本时所依赖的偏好或假设。例如,“相近面积的房屋价格通常不会无缘无故跳变”会偏好较平滑的函数。这里的“偏置”不是专指社会歧视,也不等于一个可消除的错误:没有任何偏好,许多在训练点上同样正确、在新点上却任意分歧的函数便无法取舍。学习理论的“没有免费午餐”结果也只是否定跨所有可能任务都占优的方法;它不表示现实问题中不能利用结构选择好方法。[2, Chapters 2, 4–5]

偏置来自模型形式、特征选择、上述损失规则、限制模型自由度的做法、优化过程和数据收集方式。把“地区”编码成三个名字,已经假定哪些差异值得保留;删除成交月份,则是假定时间信息不重要。算法并非到训练按钮按下时才开始作判断。

9.3 经验风险:在有限样本上算平均损失

先定义全部符号。共有 nn 个已观测训练样本,nn 是正整数;ii 是样本索引,取 1,2,,n1,2,\ldots,n。第 ii 个输入向量记为 xi\mathbf{x}_i,可包含面积、房龄等特征;对应目标记为 yiy_i,在房价任务中单位为万元。模型 fθf_{\boldsymbol\theta} 把输入映射为预测,θ\boldsymbol\theta 是训练要调整的参数向量。损失函数 L(y^,y)L(\widehat y,y) 把一次预测 y^=fθ(xi)\widehat y=f_{\boldsymbol\theta}(\mathbf{x}_i) 与目标 yiy_i 的差异映射为非负实数;绝对误差的单位是万元,平方误差的单位是万元平方,不可把两者数值直接比较。

经验风险最小化(empirical risk minimization,ERM)把训练集上的平均损失作为选择参数的依据。其经验风险定义为:

R^n(θ):=1ni=1nL ⁣(fθ(xi),yi).(9-1)\widehat R_n(\boldsymbol\theta) := \frac{1}{n}\sum_{i=1}^{n} L\!\left(f_{\boldsymbol\theta}(\mathbf{x}_i),y_i\right). \tag{9-1}

式(9-1)先为每个样本计算一次损失,再相加并除以样本数。若三个样本的平方损失分别为4、1、9万元平方,则经验风险是 (4+1+9)/3=14/34.667(4+1+9)/3=14/3\approx4.667 万元平方。求平均没有改变损失量纲;帽号提醒我们,这只是这批有限样本上的量,不是对未来所有房屋的总体风险。分类、回归等任务都可用这个框架,但损失的尺度和解释必须随任务声明。

“最小化”还需写出选择规则。令 Θ\Theta 为预先允许的非空参数集合(参数空间),ERM选择

θ^arg minθΘR^n(θ).(9-2)\widehat{\boldsymbol\theta}\in\operatorname*{arg\,min}_{\boldsymbol\theta\in\Theta}\widehat R_n(\boldsymbol\theta). \tag{9-2}

arg min\operatorname{arg\,min} 返回的是取得最小风险的参数集合,所以式中用“属于”;若有多个并列解,规则本身不指定选哪一个。在参数空间不闭合、目标不连续或无下界可达等情形,最小值可能不存在;实际优化也常只找到近似解。此时应明确算法的停止条件与容差,或报告某个 θ~Θ\widetilde{\boldsymbol\theta}\in\Theta 满足 R^n(θ~)infθΘR^n(θ)+ε\widehat R_n(\widetilde{\boldsymbol\theta})\le \inf_{\boldsymbol\theta\in\Theta}\widehat R_n(\boldsymbol\theta)+\varepsilon 这类近似边界,其中 ε>0\varepsilon>0 是与经验风险同量纲的加性优化容差,而不能把“运行了优化器”写成“找到了全局最小值”。经验风险与ERM规则的标准定义见学习理论教材。[2, Chapter 2, §2.2, eqs. (2.2), (2.4)]

理论常把样本视为独立同分布(independent and identically distributed,i.i.d.):样本来自同一数据生成过程,且一个样本不携带另一个样本的依赖。它是推导某些泛化结论的常用条件或近似,不是现实保证。相邻月份、同一小区多套房、同一卖家的重复记录会相关;政策、利率或人口迁移又会改变分布。经验风险可照算,但“它代表未来”的论证会变弱。[2, Chapter 2, §§2.1–2.2]

9.4 泛化、欠拟合与过拟合:看未见情境

泛化(generalization)是模型在训练时未见、但符合目标使用情境的数据上仍保持有用表现的能力。例如,用2022—2024年的成交训练,能否在2025年另一批房屋上维持可接受误差?它不是某个训练分数的别名,也不保证任意遥远环境。

欠拟合(underfitting)指候选函数、特征或训练过程过于受限,连训练数据中的主要可预测结构也没有捕捉;例如只用一个全城平均价估每套房。过拟合(overfitting)则是模型连训练样本的偶然噪声或特有线索也适应了,训练误差很低,新数据误差却上升。二者是相对于任务、数据量、损失和使用分布的诊断,不是“简单模型/复杂模型”的固定标签。

模型评估与选择的经典讨论区分训练误差、测试误差,并说明复杂度、偏差和方差间的权衡。[3, Chapter 7] 这里的验证误差,是候选方案在未用于本轮拟合的开发数据上的误差。正则化(regularization)是在拟合时加入偏好或约束,以限制模型对训练细节的敏感度;它是调节有效复杂度的一种办法,不等同于所有复杂度变化。但常见的“复杂度增大时验证误差呈U形”只能当条件受限的教学示意:有限样本、特定候选序列、训练过程和损失改变后,曲线可以有多个拐点、近似平坦或只显示一侧。图9-2没有声称自然界存在普遍U形定律。

横轴为模型有效复杂度,纵轴为误差。虚线训练误差总体下降;实线验证误差在本教学条件下先降后升,低复杂度区域标可能欠拟合,高复杂度区域标可能过拟合;醒目标注该形状不是普遍定律,测试集不参与选点。

窄屏提示:图可横向滚动;曲线只表达一种可能关系,不提供算法性能数据。

图 9-2 模型有效复杂度—误差的条件性教学示意。 验证曲线用于说明可能的取舍,测试集不参与选择;曲线无外部数据,不是经验定律。本项目原创,CC BY 4.0

9.5 三个集合,三种责任

训练集(training set)用于拟合参数;验证集(validation set)用于比较候选方案与选择超参数;测试集(test set)只在流程冻结后作一次或严格受控的最终估计。本文按统计学习惯例,把模型参数(parameter)称为拟合过程中从训练数据估计的量(如回归系数);超参数(hyperparameter)是不由估计器内部直接学得、而由训练前设置或外层选择流程确定的量。比如上节已定义的正则化,其强度就是超参数。scikit-learn API有时把构造器设置统称为parameter,不等于本文的“模型参数”。[4, §3.2 opening paragraph; “Fitting”; “Estimated Attributes”]

数据按目标部署情境预先分为封存测试集与开发数据;开发数据中的训练折拟合参数,验证折比较超参数并反馈选择;方案冻结后才打开测试集作最终估计;上线后另行监测漂移,不把测试结果反馈为本轮调参。

窄屏提示:从左到右查看;红色封条表示测试集在方案冻结前不可用于调参。

图 9-1 训练、验证、测试与部署监测的职责边界。 切分规则应模拟使用情境;测试集只作冻结后的最终估计,部署监测是另一条持续反馈。本项目原创,CC BY 4.0

反复查看测试分数再改模型,测试信息便参与了选择:即使样本没有直接进入训练,团队也会对测试集过拟合。权威实践文档明确区分验证与最终测试,并警告用测试集调超参数会让知识“泄入”模型选择。[5, §3.1 opening discussion]

交叉验证(cross-validation,CV)是在开发数据内部轮换训练折与验证折,汇总多次验证结果的模型选择方法。例如五折CV每次用四折拟合、一折验证,共轮换五次;外部测试集仍需封存。它为何出现,是因为单一验证切分可能浪费数据且结果依赖偶然切法;它能在有限数据上更充分比较方案,却不能修复错误标签、预测时不可得的未来/目标信息混入开发流程,或分布错配,也不把五个相关分数变成五项独立研究。当CV用于选择方案时,最终评价必须来自未参与选择的信息,可以是封存测试集,也可以是设计严谨的嵌套交叉验证外层;关键不是文件名字,而是评价信息没有反馈进本轮选择。

正则化(regularization)是在拟合时加入偏好或约束,以限制模型对训练细节的敏感度;例如对过大的参数施加代价。它把归纳偏置显式带进选择,可能改善新数据表现,但强度太大也会欠拟合。正则化强度是超参数,应由验证流程选择,不由测试集挑选。学习理论教材把正则化作为控制复杂度与稳定性的明确方法族讨论。[2, Chapter 13]

9.6 一套完全虚构、可以复算的房价实验

下面的“河湾—松岭—新港”不是现实城市,全部144条成交、地区名、月份和价格均为本章原创教学构造,不得用作市场判断。每月每区各一条,共48个月;面积56—139平方米,房间1—4间,房龄0—30年。生成式以万元为单位:12 + 0.32×面积 + 5.2×房间 − 0.45×房龄 + 0.28×月份 + 地区项 + 冲击 + 噪声。地区项依次为0、7、13;“新港”第37月起加18万元不可观测冲击;噪声由固定种子20260826在[−2,2]均匀抽取。成交总价保留三位小数;另有一个由目标反算的教学字段从舍入前价格构造并保留六位,因此只在显示精度内交还目标。

本节还构造数据泄漏(data leakage):本应在预测时不可得的目标或未来信息进入训练、选择或评价流程。这里专设由目标价格反算的字段,展示它怎样制造虚假好成绩。

下载:144行CSV · 复算结果JSON · 生成与带 10810^{-8} 固定微小岭惩罚(截距除外)的最小二乘复算脚本位于发布源码 tools/ch09-generate-case.py。脚本只用Python标准库,固定种子、切分、特征、求解器和MAE定义;在项目根目录运行 python3 tools/ch09-generate-case.py --check 会只读比较已提交数据,显式使用 --write 才覆盖数据包。

我们用同一个带截距、面积、房间、房龄、月份和地区指示项的简单函数做三次对照:

表 9-1 虚构房价实验的三种评价设计。 误差单位为万元;三行的评价人群与样本量并不完全相同。
实验训练/评价切法评价样本平均绝对误差
随机切分144条混合后115条训练、29条测试;各月各区互相穿插293.150万元
面向部署切分第1—36月三区108条训练;只测新港第37—48月1217.208万元
泄漏的随机切分同第一行,却加入由成交总价反算的“每平方米成交价×面积”290.000万元(数据精度内)

第一行看似不错,因为随机切分让训练集看见了冲击后的新港样本,也让临近月份分散在两边;它回答的是“混合后的同类记录中随机留出一些会怎样”,不是“只见过去,能否应对新港未来冲击”。第二行更接近预定部署问题,误差约为第一行的5.46倍。这个比较同时改变了时间范围、地区构成、评价样本量和是否遭遇未观测冲击,因此不能把5.46倍解释为“仅由切分方法造成”,也不能推断现实房价模型会有同一倍数。

第三行展示这种数据泄漏:leak_price_per_m2由目标成交总价除以面积得到,预测发生前并不可得;再乘回面积几乎直接交还答案。零误差证明管线读到了目标,不证明模型学会定价。预处理参数、重复房源、未来统计量、人工标注后的字段也可能形成较隐蔽的泄漏。

随机切分并非总错。若未来样本确实近似从稳定、独立、同一过程随机到来,它可以匹配问题;若按时间、个人、医院、设备或地区成组,就应考虑时间顺序、整组留出或二者组合。scikit-learn文档也明确说i.i.d.在实践中很少严格成立,并分别建议时间感知和分组交叉验证。[5, §§3.1.2.1, 3.1.2.4, 3.1.2.6]

现实案例:医院来源成了肺炎预测的捷径

2018年11月6日,Zech等人在 PLOS Medicine 发表一项回顾性横断面研究:用美国国立卫生研究院临床中心(NIH,影像期1992—2015年)、西奈山医院(MSH,2009—2016年)和印第安纳大学(IU,日期范围未提供)的胸片,评估卷积神经网络识别放射学报告中与肺炎一致的影像表现。这不是临床前瞻部署,也不是完整的肺炎诊断。NIH和MSH按患者固定为70%训练、10%调优、20%测试,IU的3,807张正位片全部作为外部测试;主要结果定义为ROC曲线下面积(AUC)。[6, Methods §§Datasets, Separation of patients, Internal and external performance testing; Table 1]

联合NIH—MSH模型在两院合并的内部测试集上AUC为0.931(95% CI 0.927—0.936),到外部IU为0.815(0.745—0.885)。更关键的是,MSH、NIH、IU的肺炎标记率分别为34.2%、1.2%、1.0%;只按医院在训练集中的患病率给病例排序、不读取影像,在NIH—MSH合并测试集也得到AUC 0.861(0.855—0.866),在另一个医院来源分类实验中,网络在各自留出测试集识别MSH、NIH和IU来源的准确率分别达99.98%、99.95%和95.59%;该任务对IU也另作70%/10%/20%划分,并非把全部IU影像当外部集。这说明患者构成、设备/流程和标签生成方式等站点线索可能成为捷径,使随机留出的同院测试看起来很强,却未保证跨院迁移。[6, Methods §Separation of patients; Results §§Internal and external performance testing, Hospital system and department prediction; Table 2; Figs. 1–2]

边界也同样重要:三院标签构造不同,IU只有39个阳性病例,作者无法完全分离患者构成、设备、护理场景与标注阈值的作用;外部表现也不必然总是更差。因此这个案例证明的是合并数据中的站点混杂与跨院泛化风险,不是某一种漂移的单因果实验,更不是模型影响患者结局的证据。[6, Methods §Generating labels for pathology; Discussion limitations]

9.7 分布外与漂移:测试通过不是永久执照

数据集偏移(dataset shift)指训练阶段与测试或使用阶段的输入—目标联合分布不同。分布外(out-of-distribution,OOD)是相对于事先声明的训练或参考分布而言的状态;现代分类文献中常窄指新语义或训练标签空间之外的输入,更广语境也可能涵盖输入变化。分布漂移(distribution drift)强调分布随时间或环境变化。三者相关但不是无条件同义词。[7, Book description; Chapter 1 introductory definition][8, §2.4, Definition] 例如新港第37月后的未观测冲击改变了同样特征对应的价格。OOD不是“任何模型答错”的同义词,漂移也不保证性能必然下降;关键是变化是否碰到模型依赖的关系。

测试集是某个时点、某个使用情境的样本。上线后还须监测输入范围、缺失率、分群误差、标签延迟和业务后果,设人工升级与停用条件。NIST AI RMF把有效性与可靠性放在具体部署情境中,并要求在生产中持续监测风险、记录并响应变化。[9, pp. 13, 29–31; MEASURE 2.4; MANAGE 4.1] 监测不是偷偷继续拿测试集调参;新一轮开发应重新定义训练/验证/测试边界并记录版本。

数据质量也不只是“行数多”。抽样决定谁被看见;测量决定面积、房龄和价格是什么意思;标签延迟可能只留下快速成交者;缺失值可能对应特定渠道;历史目标还可能固化旧制度。性能平均数应配合地区、时间和重要人群分组查看,但小分组的不确定性也要诚实报告。

9.8 预测相关性不是干预因果

房价模型可能发现“带电梯”与高成交价相关,却不能据此计算“给同一栋楼加装电梯会使价格上涨多少”。带电梯的房屋可能同时更新、地段更好、楼层更高;训练函数利用这些共同出现的模式做预测,并未区分电梯本身的作用。

因果效应(causal effect)比较同一目标在不同干预下的反事实结果;现实中同一套房不能在同一时刻既加装又不加装,因此需要研究设计、可辩护假设和相应分析来识别。预测问题问“看见这些特征时价格通常是多少”,干预问题问“主动改变一个因素后结果会怎样”。二者可共享数据与模型部件,却不是同一结论。因果推断教材因此从反事实、交换性和研究设计另行建立识别条件。[10, Introduction; Chapters 1–3]

本章虚构冲击特意未进入特征:17.208万元的未来误差提示存在分布错配,但不能单凭误差识别冲击原因,更不能估计某项政策的干预效果。若目标是决策,团队必须先画出从预测到行动再到结果的链条,考虑谁会被行动改变、反馈是否反过来改写数据,以及不采取模型建议的基线。

上线前应问的八个问题

  1. 任务、目标人群、预测时点和不可接受错误分别是什么?
  2. 每个特征在预测当时真的可得吗,还是目标或未来信息的影子?
  3. 候选函数与归纳偏置是什么,哪些现实关系被排除?
  4. 损失与业务后果量纲一致吗,平均值掩盖了哪些分组?
  5. 参数只由训练集拟合、超参数只由验证流程选择了吗?
  6. 测试集是否模拟时间、地区、主体或设备的真实外推,且没有被反复查看?
  7. 部署后怎样发现OOD/漂移,谁能暂停、回退和纠错?
  8. 当前结论是预测关系,还是有独立设计支持的因果干预效应?

核心概念

  • 任务—经验—性能把“学习”变为可检验陈述;训练选函数,推断使用函数。
  • 假设空间限定可选函数,归纳偏置让有限样本外的选择成为可能。
  • ERM最小化有限训练样本的平均损失;经验风险不等于总体风险。
  • 泛化欠拟合过拟合都相对于任务、样本和使用分布判断。
  • 正则化交叉验证和超参数选择属于开发流程;测试集不参与调参。
  • OOD/分布漂移要求部署监测;预测相关性不能直接回答干预因果。

本章小结

  • 机器学习不是从数据中自动取得真理,而是在假设空间与损失规定下,用有限经验调整函数。
  • 训练误差衡量已见样本;泛化要求评价与实际使用情境相匹配。i.i.d.是常用条件,不是现实承诺。
  • 随机切分适合某些稳定抽样问题,却可能在时间、地区或主体相关时泄漏相似性并高估表现。
  • 验证集服务选择,测试集服务冻结后的最终估计;反复用测试结果改方案,就失去独立估计。
  • 正则化和交叉验证能管理部分过拟合风险,不能修复错误目标、泄漏、漂移或因果偷换。

相关词条与继续阅读

经验风险最小化 · 归纳偏置 · 泛化 · 欠拟合 · 过拟合 · 正则化 · 交叉验证 · OOD/分布漂移 · 数据泄漏 · 因果

上一章:专家系统与符号主义的兴衰。下一章:监督学习:分类与预测

资料与案例说明 本章方法来源核查至 2026-08-26。河湾、松岭、新港及144条记录均为原创虚构教学构造;数据生成、切分与结果可由发布源码复算,不对应现实城市、交易或政策,也不构成估值、投资或政策建议。

本页参考来源

  1. Mitchell T M. Machine Learning [M]. McGraw-Hill, 1997. 定位:Chapter 1, p. 2. 稳定来源(访问 )。
  2. Shalev-Shwartz S, Ben-David S. Understanding Machine Learning — From Theory to Algorithms [M]. Cambridge University Press, 2014. 定位:Chapter 2, §§2.1–2.2, especially eqs. (2.2), (2.4); Chapters 4–5 and 13. 稳定来源(访问 )。
  3. Hastie T, Tibshirani R, Friedman J. The Elements of Statistical Learning — Data Mining, Inference, and Prediction [M]. Springer, 2009. Second edition. 定位:Chapter 7, especially §§7.1–7.10. DOI稳定来源(访问 )。
  4. scikit-learn developers. Tuning the hyper-parameters of an estimator; Developing scikit-learn estimators [EB/OL]. scikit-learn, 2026. 1.9.0. 定位:§3.2 opening paragraph; “Fitting”; “Estimated Attributes”. 稳定来源(访问 )。
  5. scikit-learn developers. Cross-validation — evaluating estimator performance [EB/OL]. scikit-learn, 2026. 1.9.0. 定位:§§3.1, 3.1.2.1, 3.1.2.4, 3.1.2.6 and 3.1.3. 稳定来源(访问 )。
  6. Zech J R, Badgeley M A, Liu M, et al.. Variable generalization performance of a deep learning model to detect pneumonia in chest radiographs — A cross-sectional study [J]. PLOS Medicine, 2018-11-06. 定位:Methods §§Datasets, Separation of patients, Internal and external performance testing; Results §§Internal and external performance testing, Hospital system prediction; Tables 1–2; Discussion limitations. DOI稳定来源(访问 )。
  7. Quiñonero-Candela J, Sugiyama M, Schwaighofer A, Lawrence N D, eds.. Dataset Shift in Machine Learning [M]. MIT Press, 2009. 定位:Book description; Chapter 1 introductory definition. 稳定来源(访问 )。
  8. Yang J, Zhou K, Li Y, Liu Z. Generalized Out-of-Distribution Detection — A Survey [J]. International Journal of Computer Vision, 2024. 定位:§2.4 “Out-of-Distribution Detection”, Definition. 稳定来源(访问 )。
  9. Tabassi E. Artificial Intelligence Risk Management Framework (AI RMF 1.0) [R]. National Institute of Standards and Technology, 2023-01. NIST AI 100-1. 定位:pp. 13, 29–31; MEASURE 2.4 and MANAGE 4.1. DOI稳定来源(访问 )。
  10. Hernán M A, Robins J M. Causal Inference — What If [M]. Chapman & Hall/CRC, 2020. 定位:Introduction; Chapters 1–3. 稳定来源(访问 )。