IS5126 完整复习资料

0 comments0 reviews

中文解释 · 英文术语 · 从基础到判断与推理

本资料依据你提供的考试说明,以及当前文件夹中的全部 9 个 Jupyter notebooks。你可以按本文顺序学习。理解本文不需要打开原 notebook,也不需要运行代码。文中的小型数值例子用于教学,不是重新运行课程数据得到的结果。

2026 年 10 月 12 日的 Week 9 PDF 第 9 页说明:考试在 10 月 19 日 18:30 开始,使用纸笔;可带 一张双面 A4 参考纸;题型包括 选择题、判断题和论述题。老师强调判断与推理,不考记忆、编程能力或数学公式与定理。第 8 页说明考试不使用互联网,占课程成绩 10%。自备笔,答题纸由老师提供。

Week 7 的较早公告写过 18:30–20:30,并写有“Open book,细节待定”。较新的 PDF 将参考资料明确为一张双面 A4。因此,不要把早期的 open book 理解成可以携带整份复习资料。最新 PDF 没有再次写出结束时间,时间安排以老师最新通知为准。

本文用公式帮助你理解含义。复习时,优先学会说明“为什么”,再用小例子检查理解。不要把背公式作为主线。

顺序内容建议时间完成标准
1第 1–6 章:数据、回归、损失与验证70–90 分钟能识别任务、指标和数据泄漏
2第 7–12 章:分类、阈值与树模型70–90 分钟能解释错误成本、模型差异与复杂度
3第 13–18 章:聚类与时间序列70–90 分钟能评价分组,能设计可信的未来预测
4完成另一份中英模拟卷,再对照答案90 分钟作答 + 30–45 分钟订正每道错题能说出错误条件
5阅读双面 A4 参考纸15–20 分钟能迅速找到判断步骤

这些时间是学习建议。每学习 50–60 分钟,可休息 5–10 分钟。若某一章读不懂,先回看该章例子,不必先记下全部英文缩写。

章节要解决的问题
1–3数据是什么?误差怎样计分?回归怎样形成预测?
4–6怎样判断模型能泛化?怎样处理缺失、异常值和数据划分?
7–9概率怎样变成决策?为什么 accuracy 不够?怎样选择阈值?
10–12树怎样划分?RF 和 XGBoost 怎样组合树?怎样选择设置?
13–15PCA 保留什么?k-means 怎样分组?分组怎样支持行动?
16–18时间顺序有什么作用?ARIMA 怎样解释?怎样评价预测?
最后两节怎样写有理由的答案?怎样检查自己是否掌握了主线?
  1. 目的: 我们要回答什么业务问题?预测结果会触发什么行动?
  2. 方法: 输出是数值、类别、分组,还是未来一段时间的数值?
  3. 可信度: 评价是否模拟真实使用?有没有泄漏、错误指标或不公平比较?
  4. 解释: 结果具体说明什么?它不能说明什么?下一步应做什么?

例如,银行要减少欺诈损失。预测“是否欺诈”是分类任务。预测为欺诈后,银行可能暂停交易。暂停真实交易与放过欺诈交易会造成不同损失。因此,评价必须连接错误类型与业务后果。

技术语言采用 ASD-STE100 的等价中文表达原则:使用短句;一句表达一个主要意思;先定义术语;同一概念使用一致名称。中文没有该英文标准对应的正式受控词表。本文保留课程所需的技术名称,并在首次使用时解释。


建立术语与判断顺序。先理解任务,再选择模型。

#每一行是谁?每一列是什么?

数据集(dataset)是一张表。每一行通常表示一个观测(observation),例如一颗钻石、一位乘客或一个小时。每一列表示一种记录。特征(feature)是模型可用的输入,例如钻石重量。目标(target)是你要预测的结果,例如价格。用 x 表示一个输入,用 y 表示实际结果,用 ŷ 表示模型给出的预测。预测前,先说明这些符号对应什么。

训练(training)让模型从已有数据中学习。预测(prediction)把学到的规则用于一条输入。训练时可以知道历史目标。使用模型时,目标通常尚未出现。例如,贷款批准前可以知道申请收入,却不能知道这笔贷款未来是否违约。输入必须在作出预测的时点可取得。记录编号通常只用于识别行,不能因为编号存在就认为它有预测价值。

任务是否需要已知目标本课程例子
回归(regression)需要;目标是数值预测钻石价格
分类(classification)需要;目标是类别预测乘客是否存活
聚类(clustering)不需要预先给出组别按行为给客户分组
预测时间序列(forecasting)用过去数值预测未来预测明天的用电需求

回归与分类属于监督学习(supervised learning):模型通过已知输入和已知结果学习。聚类属于无监督学习(unsupervised learning):模型依据输入的相似性建立分组。没有真实组别时,不能直接用分类准确率评价聚类。时间序列预测还要求保持时间顺序。知道任务类型,才能选择有意义的评价方法。

#先理解几个统计量

均值(mean)是总和除以数量。中位数(median)是排序后的中间值;数量为偶数时,取两个中间值的均值。方差(variance)描述数值离均值有多远。计算时先取各值与均值之差,再平方和求平均。标准差(standard deviation)是方差的平方根。标准差与原数据具有相同单位,因此更容易解释。样本方差常用数量减一作分母;这里先用描述数据的平均平方偏差理解概念。

教学例子

三位客户购买 2、4、6 件商品。均值和中位数都是 4。平方偏差为 4、0、4;方差为 8/3,标准差约为 1.63 件。如果最后一位买 60 件,均值升到 22,中位数仍为 4。一个极大值会强烈影响均值。这解释了为什么缺失值填补有时使用中位数。

业务问题先于算法。例如,商店希望减少缺货。预测销量只是中间步骤,订货才是行动。少预测 10 件会导致缺货,多预测 10 件会导致库存。两种损失可能不同。你应先说明行动和错误成本,再决定怎样评价预测。一个模型在某个指标上更好,不代表它对每种业务决策都更好。

相关(correlation)描述两个量如何一起变化。常用的相关系数在 −1 到 1 之间。接近 1 表示较强的同向线性变化,接近 −1 表示较强的反向线性变化。接近 0 只表示线性关系弱,不表示没有任何关系。相关不证明因果。


学会解释误差。理解为什么不同指标会选出不同模型。

对第 i 条观测,残差(residual)或预测误差为 eᵢ = yᵢ − ŷᵢ。yᵢ 是实际值,ŷᵢ 是预测值。正误差表示预测偏低;负误差表示预测偏高。误差直接相加会相互抵消。因此,我们常取绝对值或平方。下表中,n 是观测数量,Σ 表示把所有观测对应的数值相加,|e| 表示误差的绝对值。

指标计算方式数值表示什么
SSE:平方误差和Σeᵢ²全部平方误差的总量
MSE:均方误差Σeᵢ² / n平均平方误差
RMSE:均方根误差√(Σeᵢ² / n)与目标同单位;重罚大错误
MAE:平均绝对误差Σeᵢ
MAPE:平均绝对百分比误差100 × Σ(eᵢ
SMAPE:对称平均绝对百分比误差100 × Σ[2eᵢ

教学例子

实际值为 10、20,预测值为 12、16。误差是 −2、4。SSE = 4 + 16 = 20;MSE = 10;RMSE ≈ 3.16;MAE = 3。MAPE = (20% + 20%)/2 = 20%。SMAPE ≈ (18.18% + 22.22%)/2 = 20.20%。这些数值都评价同一组预测,但使用了不同的尺度。

#为什么 SSE、MSE、RMSE 的最优解相同?

在同一批观测上,n 固定且大于零。MSE 只是把 SSE 除以 n;RMSE 再取平方根。这两步都保持大小顺序。因此,SSE 最小的预测也使 MSE 和 RMSE 最小。此结论要求比较同一批数据、相同权重与相同候选模型。若样本数量不同,不能直接用 SSE 大小比较模型质量。跨批次平均多个 RMSE,也不等于把所有误差合并后计算一次 RMSE。

平方损失会放大大错误。误差从 2 增到 4 时,绝对误差加倍,平方误差变为四倍。若一个很大的预测错误会造成特别严重的损失,RMSE 可能有用。MAE 对误差大小按相同比例计分。MAPE 更看重相对于目标的错误:实际值为 10 时错 5 是 50%;实际值为 100 时错 5 只有 5%。因此,改变指标可以改变最佳模型。

易错点

MAPE 在实际值为零时无定义,实际值接近零时也会非常大。此处 SMAPE 使用课程公式,取值通常在 0% 到 200% 之间;当实际值和预测值都为零时,需要预先约定处理方法。SMAPE 也不能消除所有零值问题。不要为了得到好看的分数,事后删除难预测的观测。

损失函数(loss function)可以用于训练,也可以用于评价。普通最小二乘按平方误差训练,但你仍可用 MAE 评价它。此时训练优化的目标与报告的指标不同。回答选指标题时,应连接三件事:哪种错误有成本,指标怎样计算该错误,为什么这种计分适合当前业务。


理解参数、类别输入和特征工程。通过计算解释模型。

如果完全不用输入,所有观测都收到同一个预测 c。在平方损失下,最佳 c 是训练目标的均值。教学例子:目标为 2、4、6,取 c = 4 时 SSE 为 8;取 c = 5 时 SSE 为 11。均值给出一个简单基线(baseline)。加入输入之后,模型应在新数据上比这个基线更有用;训练误差下降本身还不够。

一元线性回归写成 ŷ = β₀ + β₁x。β₀ 是截距(intercept),β₁ 是斜率(slope)。普通最小二乘(ordinary least squares,OLS)选择参数 β₀、β₁,使训练数据的 SSE 最小。多元模型可以加入更多输入,例如 ŷ = β₀ + β₁x₁ + β₂x₂。此时 β₁ 表示:在其他模型输入固定时,x₁ 增加一个单位所对应的预测变化。

教学例子

假设钻石预测规则是价格 ŷ = 100 + 500w,其中 w 为重量,单位为克拉。重量为 2 时,预测价格为 1100 个货币单位。斜率 500 表示重量每增加 1 克拉,模型预测增加 500。截距对应重量为零的预测;若零重量远离训练数据,它未必有实际意义。这里的系数仅用于教学。

#类别输入需要明确编码

类别通常没有数值间距。不能直接把普通、优质、顶级编码为 1、2、3,就假定每一级差距相同。指示变量(indicator)只取 0 或 1,说明一条记录是否属于某类。对含截距的线性模型,常给 K 个类别建立 K−1 个指示变量。未单独建立一列的类别称为参考组(reference group)。这样可以避免类别列与截距重复表达同一信息。

教学例子:令 I = 1 表示优质切工,I = 0 表示普通切工。模型为 ŷ = 100 + 500w + 80I。在相同重量下,优质组比参考组多预测 80。两组都使用斜率 500,因此图上是两条平行线。类别系数表示相对参考组的差异,不是该类别的全部预测价格。改变参考组会改变系数的表达,但可以表示同一组预测。

#特征工程可以改变曲线和关系

特征工程(feature engineering)从已有输入建立新输入。加入 w² 后,模型可表示弯曲关系。它仍对待学习的系数呈线性,所以可以用线性回归拟合。加入交互项(interaction)wI 后,重量的作用可以随类别改变。例如 ŷ = 100 + 500w + 80I + 40wI:普通组斜率为 500,优质组斜率为 540。对 w = 2 的优质钻石,预测为 1260。

判断限制

增加特征会增加拟合能力,也可能拟合噪声。用验证结果决定是否保留。训练与新数据必须使用相同的特征定义。不能把价格或 log(价格) 放入价格预测的输入;使用时你还不知道答案。系数描述预测关系,不证明因果。即使切工系数为正,也不能据此断言改变切工必然使价格增加该数值。超出训练输入范围的预测称为外推,通常需要额外证据。


区分参数、超参数与数据用途,建立可信的评价。

泛化(generalization)是模型在新观测上保持有效预测的能力。训练数据包含可重复的模式,也包含偶然出现的噪声。欠拟合(underfitting)是规则过于简单,连主要模式都没有学好。过拟合(overfitting)是模型学到了训练数据特有的细节,这些细节不能稳定地帮助新预测。判断时必须看新数据表现,不能只看模型是否复杂。

教学例子

三个模型预测同一个目标。固定均值模型的训练/验证 RMSE 为 25/26,简单回归为 12/13,高阶多项式为 2/21。固定均值可能遗漏有用模式。高阶模型在训练中很好,在验证中明显变差。简单回归在这次验证上更好。这些数值说明一种判断方法,不证明简单模型总会获胜。

数据用途可以做什么不能据此声称什么
训练集(training set)学习系数、树划分等模型参数训练好就能泛化
验证集(validation set)比较输入、算法与设置;选择模型被反复查看后仍是独立测试
测试集(test set)最后评价已经选定的整个流程看完后调参,再称其为最终独立结果

教学安排:1000 条记录中,先留出 200 条作最终测试。余下 800 条可分成 600 条训练、200 条验证。用训练部分拟合候选模型,用验证部分选择方案。选定后,可按既定方案使用全部 800 条重新训练,再检查那 200 条测试记录。最终测试模拟从未参与决策的新数据。若根据测试结果继续修改方案,就需要新的独立评价数据。

holdout 意为留出的数据,不自动等于最终测试。课程钻石任务的隐藏 holdout 没有向你提供目标,因此不能拿它来计算自己的误差。另一份被称为 validation 的数据,如果已多次指导选择,也不能再被称作完全独立的最终测试。关键在实际用途,不在文件名。

#参数与超参数由谁决定?

参数(parameter)由训练过程估计,例如线性回归的系数、决策树的划分点。超参数(hyperparameter)规定学习方式,例如多项式次数、树的深度、树的数量。课程还把特征选择、损失选择、异常值规则等流程选择纳入广义超参数。我们先给出候选设置,再用验证比较。设置属于人为选择,不代表应该凭感觉决定。

为什么反复试同一验证集也会过拟合?假设你比较很多方案。某个方案可能恰好适合验证集中的偶然误差。你不断追随这次分数,就逐步利用了验证集信息。交叉验证能减少对单次划分的依赖,但不能保证任意数量的尝试都没有选择偏差。最终测试仍有独立作用。训练与验证差距大也可能来自分布变化,应检查数据背景。

作答顺序

先说模型需要泛化到谁、何时和什么场景。再说明各数据集用于学习、选择还是最终评价。最后比较训练与验证表现,给出下一步检查。70/30 或 80/20 只是常见划分,没有统一最佳比例。同一客户的重复记录或有时间顺序的数据,需要对应的分组或时间划分;随机打散未必合理。


理解每一折的训练过程,防止预处理泄漏信息。

k 折交叉验证(k-fold cross-validation,CV)把可用于选择的数据分成 k 份。对同一组设置,轮流用一份作本轮验证,其余份作本轮训练。每条观测都在一次验证中被评分。汇总 k 次结果后,再比较其他设置。CV 是多次重新训练模型;它不是训练一次后重复读取同一组预测。

教学例子

继续使用上一章保留测试后的 800 条记录。5 折 CV 每轮使用 640 条训练、160 条验证,共训练 5 次。一组设置的五次 MAE 为 10、12、11、13、9,均值为 11。另一组均值为 10.5,表面上较好;还要看差距是否稳定、各折波动以及计算成本。最终那 200 条测试记录始终不进入这五折。

网格搜索(grid search)列出多种设置组合,再对每种组合运行相同的 CV。若有两种树深度和三种树数量,就有六种组合。使用 5 折需进行 30 次训练,最后通常还要用全部选择数据重新拟合获胜设置。相同折划分有利于公平比较。分类可使用分层划分,让各折保持相近的类别比例。

缺失值(missing value)不等于零。未填写收入可能是随机漏填,也可能是高收入者不愿公开。删除不完整记录可能改变样本代表性,也可能使某些用户得不到预测。简单填补可用数值的均值或中位数、类别的众数。众数是出现次数最多的值。填补并没有恢复真实数据;它只是使当前流程能够继续处理该记录。

教学例子

本轮训练数据中的已知年龄为 20、30、40,另有一个缺失。训练中位数为 30,因此用 30 填补。验证数据中有年龄 80 和一个缺失,也使用 30 填补。不能把验证中的 80 加入中位数计算。我们要模拟未来使用过程;未来用户不能参与今天这次训练。进入下一折时,需要从那一折的训练部分重新计算中位数。

数据泄漏(data leakage)是学习或选择过程获得了实际预测时不应获得的信息。常见情况包括:在划分前用全数据计算填补值;用目标的变形当输入;把违约发生后的催收记录用于预测此前的违约风险。同一人的近似重复记录跨越训练和验证,也可能使分数过于乐观。没有使用验证目标,不代表所有泄漏都已经排除。

#预处理也属于模型流程

管道(pipeline)把填补、编码、缩放和模型训练连成固定步骤。每轮 CV 先只从本轮训练部分学习处理规则,再把规则应用于本轮验证。最后部署时,新记录也用同样的已拟合规则。验证数据应接受相同的处理,但不能参与规则估计。若加入“收入是否缺失”指示变量,应说明缺失可能包含什么信息,再用验证判断它是否有用。

易错点

CV 分数是模型选择证据,不是未来表现的保证。每折标准差描述结果波动,不自动等于置信区间。最终选好流程后,可以用全部非测试数据重新学习填补值和模型参数;之后只在保留测试集上作最终评价。支持原生缺失值的算法是另一种处理方案,但仍要检查缺失原因与验证边界。

还可以用其他已知特征训练一个模型,预测某列的缺失值。这个填补模型也必须只在本折训练部分拟合,再用于本折验证部分。模型填补不能保证恢复真值,也不能使用预测时尚未出现的目标信息。


区分真实极端值、数据错误与使用限制,完整解释决策。

异常值(outlier)是与其他观测差异很大的值。它可能来自录入错误,也可能是真实但少见的客户。例如购买金额 10000 可能是多录了两个零,也可能是重要的大客户。先查单位、来源和业务规则,再决定保留、纠正、删除或截尾。平方损失会放大极端误差,因此异常值常会明显影响 OLS。这个影响说明需要检查,不直接证明需要删除。

四分位数 Q1 和 Q3 分别对应排序数据的约 25% 和 75% 位置。四分位距 IQR = Q3 − Q1。常用检查界限为 Q1 − 1.5×IQR 与 Q3 + 1.5×IQR。教学例子:Q1 = 10,Q3 = 20,则 IQR = 10,界限为 −5 和 35。值 40 会被标记。这个规则只提示检查,并不证明 40 错误。

课程考试示例:目标大于 500

题目已经决定:目标值大于 500 太少,不希望它影响模型学习;但生产中仍可能出现。先做 70/30 划分,再仅从训练部分删除这些记录。保留验证部分的大于 500 记录,因为验证要反映使用时可能遇到的情况。若也从验证中删除,就把评价场景人为变容易。这个答案依赖题目给定条件,不是“所有异常值都只从训练删除”的通用规则。

还要区分删除记录与转换输入。若训练时采用输入截尾,例如把过高的输入值压到训练的第 99 百分位,就应对验证和新输入应用同一个已确定的界限。验证不参与估计该界限,也不因预测困难而删除记录。若删除规则依赖尚未知晓的目标,部署时通常无法按同样规则先筛选客户。应评价最终服务对象中的实际表现。

#怎样处理不合理的负预测?

普通线性回归的输出没有非负限制。若目标必须非负,可以事先规定把负预测改成零,再评价这一完整流程。这样保证范围合理,但是否符合业务含义仍需判断。若零表示“不交易”,把负价格映射为零可能是一项业务规则。预测值处于合法范围,并不代表预测已经足够准确。

另一方法是对严格为正的目标取自然对数 log(y),训练模型预测这个对数,再用指数函数 exp 变回原单位。log 与 exp 互为逆运算。这样输出总为正,但平方损失现在作用在对数尺度上,选出的模型可能不同。y 为零或负数时不能直接使用 log(y)。不能只做变换就忽略目标的取值限制。

教学例子:逆变换不等于原尺度均值

目标只有 10 和 40。原尺度均值为 25。两个对数的均值再取 exp,结果为 20,即几何均值。原因是“先平均再取指数”与“先取指数再平均”不同。因此,直接对预测的平均对数取 exp,不保证得到原尺度的平均目标。若业务要求金额的平均预测,应考虑逆变换偏差,并在原单位上评价。

把流程串起来:先确定预测时点、服务对象和错误成本;保留最终测试;在训练内部选择输入、预处理和模型设置;用验证比较完整预测流程;检查极端值、业务约束和模型解释;最后报告独立结果与限制。每项建议都要说明原因。比如“删掉高价商品会降低 RMSE”不够,还要回答高价商品是否属于实际服务范围,以及删后分数还能代表谁。


Classification · Logistic regression · Log loss

#分类任务在预测什么

分类(Classification)预测类别。二元分类只有两类。先指定正类(Positive),记为 y = 1。另一类为负类(Negative),记为 y = 0。这里的“正”不表示结果较好。欺诈检测把欺诈设为正类。Titanic 练习把生还设为正类。改变正类定义,会改变 precision 和 recall 的业务含义。多类别分类则有三个或更多互斥类别,例如邮件类型。

#概率模型怎样工作

用 p 表示模型估计的正类概率。负类概率为 1 − p。先把输入 x 与训练得到的系数 β 组合成分数 z:z = β₀ + β₁ × x₁ + β₂ × x₂。z 可以小于 0,也可以大于 1,因此不能直接当概率。逻辑回归(Logistic regression)用 S 形函数把 z 转成 p:p = 1 / (1 + e^(−z))。e 是约等于 2.718 的数学常数。z = 0 时 p = 0.5。z 越大,p 越高。名称含 regression,但本课用它完成分类。

教学例子

假设某模型只用学习时数 x,分数为 z = −2 + x。学习 1 小时时 z = −1,p 约为 0.27。学习 3 小时时 z = 1,p 约为 0.73。这表示模型估计通过考试的概率增加。它没有证明多学两小时会造成这一变化。其他因素也可能同时变化。

Probit 回归也先计算 z。它用标准正态分布的累积概率函数 Φ 把 z 转为 p。Φ(z) 表示该分布中不大于 z 的概率。两种模型都能用二元负对数似然,即 log loss,训练。它们的主要区别是概率映射。把模型类型作为待验证的选择。不要仅凭名称判断哪种更好。逻辑回归的概率不是输入的直线函数;其分数 z 才是输入的线性组合。

对数损失(Log loss)越小越好。真实 y = 1 时,单条损失为 −ln(p)。真实 y = 0 时,单条损失为 −ln(1 − p)。ln 是自然对数。只需理解规律:给真实类别的概率越小,损失越大。对错误结果非常自信,会受到很大惩罚。对各条损失取平均,可比较同一批样本上的模型。训练时若加入正则化,还会限制系数大小。

教学例子与阈值

真实结果为 1。预测 p = 0.9 的损失约为 0.105;预测 p = 0.6 的损失约为 0.511;预测 p = 0.1 的损失约为 2.303。在阈值 0.5 下,前两者都预测为 1,但概率质量不同。阈值 t 把概率变成类别:p ≥ t 预测为 1;否则预测为 0。p = 0.6 在 t = 0.5 时为正类,在 t = 0.8 时为负类。改阈值不改变已算出的概率,也不改变这些概率的 log loss。

答题时分清三件事:模型给出概率;阈值给出类别;业务规则把类别变成行动。0.5 是常见默认阈值。它不是任何业务都适用的最优阈值。单次预测为 70% 也不保证某个人一定成功。要用未参与训练的数据检查概率和最终决策。

标准正态分布是一条对称的钟形分布,均值为 0,标准差为 1。Φ 表示该分布的累积概率。本课只需理解:它把任意实数分数转换成 0 到 1 之间的概率。


Confusion matrix · Accuracy · Precision · Recall

#先确定正类,再读混淆矩阵

混淆矩阵(Confusion matrix)同时记录真实类别与预测类别。本节把欺诈设为正类 1。行表示真实结果,列表示预测结果。True 表示预测正确。False 表示预测错误。Positive 和 Negative 表示预测为哪一类。先看行列标签,再读数字。不同图可能使用不同排列。

真实结果 / 预测结果预测 0:放行预测 1:拦截
真实 0:正常TN 真负:正常放行FP 假正:误拦正常交易
真实 1:欺诈FN 假负:漏过欺诈TP 真正:发现欺诈

设总交易数为 N,则 N = TP + TN + FP + FN。准确率(Accuracy)= (TP + TN) / N。它回答全部交易中有多少判断正确。精确率(Precision)= TP / (TP + FP)。它回答被拦截的交易中,有多少是真欺诈。召回率(Recall)= TP / (TP + FN)。它回答全部真欺诈中,有多少被发现。记住分母比记住名称更重要。Precision 从预测正类开始。Recall 从真实正类开始。

教学例子:逐步计算

有 1,000 笔交易,其中 20 笔欺诈。模型发现 15 笔欺诈,漏过 5 笔。同时误拦 45 笔正常交易。因此 TP = 15,FN = 5,FP = 45,TN = 935。Accuracy = 950 / 1,000 = 95%。Precision = 15 / 60 = 25%。Recall = 15 / 20 = 75%。这三个数字分别说明整体判断、拦截质量和发现能力。它们回答不同问题。

#高准确率为什么可能没有用

上例中,全部预测为正常也有 98% 准确率,却漏掉全部欺诈。这叫类别不平衡(Class imbalance):一个类别远多于另一个类别。多数类基准(Majority-class baseline)只预测训练数据中最多的类别。候选模型必须与适合任务的基准比较。但准确率低于基准,不足以说明模型没有业务价值。还要比较错误类型和代价。

教学例子:把错误换成成本

假设每次误拦 FP 损失 10 元,每次漏过 FN 损失 1,000 元。为便于教学,暂不计其他成本。上述模型的错误成本为 45 × 10 + 5 × 1,000 = 5,450 元。全部放行的成本为 20 × 1,000 = 20,000 元。模型准确率较低,但在这些成本假设下更划算。实际决策还要计入核查人员、等待时间和客户流失。正常拦截也可能需要核查成本。

没有预测正类时,TP + FP = 0,precision 在数学上未定义。样本没有真实正类时,TP + FN = 0,recall 未定义。软件可以约定显示 0 或空值。这个约定不代表指标本身有定义。比较结果前,检查这一约定。F1 是 precision 与 recall 的调和平均:当 precision 和 recall 都有定义,且两者之和非零时,F1 = 2 × precision × recall / (precision + recall)。F1 不直接表示金钱成本,也没有使用 TN。


Threshold decisions · Titanic workflow

#阈值变化:哪些结论一定成立

固定同一批样本、真实标签和预测概率。采用 p ≥ t 判正的规则。降低阈值 t,会扩大或保持预测正类集合。因此 TP 和 FP 只能增加或不变;FN 和 TN 只能减少或不变。若真实正类存在,recall 只能增加或不变。提高阈值时,方向相反。“只能增加或不变”不等于每次必然增加。若两个阈值之间没有预测概率,所有类别都不变。

教学反例:precision 不保证单调

三人的预测概率依次为 0.9、0.8、0.7,真实类别依次为 0、1、1。阈值为 0.9 时,只选到一个负类,precision = 0。阈值降到 0.8 时,precision = 1/2。降到 0.7 时,precision = 2/3。本例中降低阈值反而提高 precision。一般数据中常见 precision 与 recall 的取舍,但不能把常见趋势写成严格保证。Accuracy 也不保证随阈值单调变化。

阈值为 0 时,所有合法概率都会判为正类。若样本有正类,则 recall = 1,precision 等于正类比例。阈值为 1 时,p = 1 的记录仍判正。若没有 p = 1,才会全部判负。全判负时,若真实正类存在,则 recall = 0;precision 未定义。先检查边界条件,再判断绝对说法。

#用业务约束选择阈值

先写出 FP 与 FN 的后果。再在训练内部的验证结果中比较候选阈值。对每个阈值,计算错误数量、预计成本及需处理的数量。若每天只能人工核查 100 笔,预测正类数量就是容量约束的一部分。模型可以按风险排序,再检查前 100 笔的发现能力。相同概率可能造成边界并列,因此必须预先规定并列处理方式。

教学例子:相同模型,不同行动

某天 1,000 笔交易。阈值 0.5 标记 60 笔;阈值 0.2 标记 180 笔。后者可能找到更多欺诈,也可能超出 100 笔核查容量。不能只说“recall 更高,所以采用 0.2”。应比较漏报成本、误报成本和处理能力。阈值属于模型选择过程。最终评估数据也不能反复用于选阈值。

#Titanic:从原始表到最终解释

  • 定义任务:每行是一名乘客。survived 为目标,1 表示生还。row_id 只用来识别乘客。目标和编号都不作为本练习的输入。可用输入包括年龄、票价、性别、舱等、亲属人数和登船港。
  • 先分训练集与验证集。课程采用 70% 与 30%。分层抽样(Stratification)使两组生还比例接近。固定随机种子帮助重复比较。它不消除抽样误差。
  • 只用训练数据学习年龄中位数和登船港众数。用相同数值填补验证数据。把文字类别转换为指示变量。保证两组列的含义及顺序一致。分类器的概率列必须对应正类 1。
  • 训练模型后,为验证乘客计算生还概率。应用事先选定的阈值。读取混淆矩阵、accuracy、precision 和 recall。与多数类基准比较。训练成绩远高于验证成绩,提示需要检查过拟合。
  • 若使用交叉验证,每一折都只在该折的训练部分学习填补和编码规则。若验证结果已用于改模型或阈值,该验证集就参与了选择。最终独立检验需要从未指导这些选择的数据。

Decision tree · Gini impurity · Regression tree

#从一组问题得到预测

决策树(Decision tree)逐步询问输入条件。最上方是根节点(Root)。每次分裂(Split)把样本分成两组。最终停在叶节点(Leaf)。一个样本只走一条路径。课程图中,条件成立走左侧,条件不成立走右侧。例如 age ≤ 10 时,年龄恰好为 10 也走左侧。下一层可继续询问年龄,也可询问另一个输入。训练算法学习分裂变量与切点。使用者选择可用输入及深度限制。

教学例子:读节点与概率

假设一名乘客先满足 age ≤ 10,再满足 fare > 20,进入某个叶节点。该叶显示 samples = 20,value = [12, 8]。课程类别顺序是 [未生还, 生还]。所以叶内生还概率为 8/20 = 0.4,多数类为未生还。所有进入这个叶的乘客都获得相同概率。默认按最大类别概率分类时,本例预测为 0。类别正好各半时,本练习的 sklearn 按类别顺序选择 0。

图中的 class 是该节点的多数类。gini 表示类别混杂程度。若开启比例显示,value 可能显示类别比例而非人数,因此先查看显示设置。树的绘图深度只控制显示几层。它不改变已经训练好的树。拟合深度才会限制模型可以学习的路径长度。已经拟合的树会确定地处理同一输入。随机性通常影响训练过程,不会让乘客在预测时随机选路。

#用加权 Gini 判断分裂

令 p 为节点中正类比例。二元 Gini impurity = 1 − p² − (1 − p)²。纯节点只有一种类别,Gini = 0。两类各半时,Gini = 0.5。树倾向于选择让子节点更纯的分裂,但必须按子节点人数加权。只看一个很小的纯节点,不能判断整个分裂好坏。贪心选择(Greedy choice)只选择当前较好的分裂,并不保证得到所有可能树中的全局最佳树。

教学例子:一次完整计算

父节点有 10 人,其中正类 5 人,Gini = 0.5。某次分裂得到左侧 4 人,其中正类 4 人;右侧 6 人,其中正类 1 人。左侧 Gini = 0。右侧 Gini = 1 − (1/6)² − (5/6)² = 10/36。加权子节点 Gini = 4/10 × 0 + 6/10 × 10/36 ≈ 0.167。减少量约为 0.333。不能直接把两个子节点 Gini 作不加权平均。Entropy 是另一种分类纯度指标。

回归树(Regression tree)预测连续数值。采用平方误差时,叶输出为该叶训练目标的平均值。例如叶内目标为 10、12、14,输出为 12。分裂要减少子节点的总平方误差 SSE。分类树强调类别纯度,回归树强调数值误差。它们都能通过多层条件表达非线性关系和输入之间的交互。普通回归树的叶输出为常数,因此对训练范围之外的数据通常不善于延伸趋势。

深树能形成更小的群组,也更容易追随训练噪声。一个只含一人的纯叶,不证明新样本预测一定正确。限制 max_depth、提高 min_samples_leaf 或提高 min_samples_split,可限制复杂度。后两者分别约束每个新叶的最少样本和允许分裂前的节点样本。两条规则必须同时满足。用验证结果决定限制程度。过浅的树也可能遗漏真实结构,造成欠拟合。


Random forest · Bootstrap · Feature importance

#为什么要组合多棵树

单棵树可能对训练样本的细小变化敏感。随机森林(Random forest,RF)训练多棵有差异的树,再汇总预测。各树不需要等待前一棵树的预测结果,因此可以并行训练。若各树的错误不完全相同,汇总可降低对某次抽样的敏感程度。各树仍使用同一来源的数据,不能据此宣称它们在统计上完全独立。若全部树都有同一偏差,增加树数不会自动消除该偏差。

教学例子:两种随机性

训练集有乘客 A、B、C、D。某树进行四次有放回抽样,可以得到 B、B、D、A。B 重复,C 没被抽到。这是 bootstrap。抽样次数等于原人数,不表示每个人都出现一次。另一种随机性发生在每次分裂:例如从 10 个模型输入列中随机提供 3 列,让树从这些候选中选择分裂。下一节点可以得到不同的 3 列。

课程前面的随机单树活动采用无放回抽人,并为整棵树一次选好原始输入。它与后面的标准森林不同。森林采用有放回抽样,并在每次分裂抽取候选模型列。类别编码后的列分别计数。例如登船港可形成三个指示列。不要把三个模型列理解为三个原始业务字段。实现有时会检查额外候选列,以找到有效分裂。

教学例子:平均概率

三棵树对同一人的生还概率分别为 0.2、0.7、0.9。森林概率为 (0.2 + 0.7 + 0.9)/3 = 0.6。最大概率类别为生还。它平均每棵树的类别概率,并非必须先把每棵树变成 0 或 1 再多数投票。例如三棵树给出 0.49、0.49、1.00,平均概率为 0.66,而硬投票只有一票为正。这两种汇总可得到不同类别。回归森林通常平均各树的数值预测。

设置控制内容判断方向
n_estimators树数更多树增加计算;收益可能趋缓
max_depth路径的最大分裂次数越深越灵活,也可能过拟合
min_samples_split / leaf分裂前人数 / 子叶人数更大通常限制小群组
max_features每次分裂的候选列数较少可增加差异,也可能削弱树
bootstrap / max_samples是否有放回 / 每树抽样量抽样量不等于不同样本数

这些方向是调参依据,不是性能保证。较少特征或较少抽样可能增加树之间的差异,也可能让每棵树缺少信息。增加树数通常使平均结果更稳定,但不能保证验证分数每次上升。深度和叶大小仍需验证。若训练准确率接近 100%,而验证分数较低,先检查泛化差距、泄漏和数据差异。不要只继续增加树数。

#特征重要性表示什么

本课森林的 impurity importance 汇总各输入在树中减少不纯度的贡献。通常会归一化,使重要性之和为 1;没有分裂时可全为 0。票价重要性为 0.3,表示在这一指标下的相对贡献。它不表示票价解释了 30% 的生还,也不表示提高票价会提高生还率。指标不提供作用方向或因果关系。可选切点较多的输入可能获得偏高的重要性。相关输入也可能分享贡献。比较图时应核对模型和编码列。


Gradient boosting · XGBoost · GridSearchCV

梯度提升(Gradient boosting)按顺序增加树。每棵新树针对当前组合仍存在的误差,提供进一步修正。树之间存在训练依赖。它不同于 RF 中分别训练树再平均的方式。XGBoost 是梯度提升的一种高效实现。分类时,新树修正的是模型分数,不是简单地对错误样本重新作一次独立投票。最终组合再产生类别概率。

教学例子:理解学习率

用平方误差回归说明纠错。真实目标为 10,当前预测为 6,残差为 4。假设新树建议增加 4,学习率为 0.1,则预测变为 6 + 0.1 × 4 = 6.4。下一轮面对的是更新后的误差。较小学习率让每次改变更小,通常需要更多轮。这是原理例子。二元分类按照其损失进行梯度修正,不能直接套用这个残差算式。

XGBoost 设置含义主要取舍
n_estimators本课二元模型的提升轮数更多轮增加计算,也可能过拟合
learning_rate新树修正的缩放比例较小通常需要更多轮
max_depth每棵树的最大深度较深可表达更复杂的交互
min_child_weight子节点所需的最少总权重较大更限制分裂;并非最少人数
subsample每轮使用的训练行比例随机抽样可减少过拟合
colsample_bytree每树使用的编码列比例较小增加随机性,也可能丢信息

二元 logistic 目标中的 child weight 来自损失的曲率,即损失变化率如何变化。它不是直接数人数。可把 min_child_weight 理解为对叶节点证据量的限制,但不要把它当作 RF 的 min_samples_leaf。RF 侧重平均有差异的树。Boosting 侧重逐轮改进当前组合。两者都可能欠拟合或过拟合。不能根据算法较复杂就判定它必胜。

#公平选择:GridSearchCV

网格搜索(Grid search)列出各超参数的候选值,再评价所有组合。五折交叉验证把训练集分成五组。每轮用四组拟合,在剩余一组评分。轮流留出每一组,取五个分数的平均值。所有候选使用相同的折和相同指标,比较才更公平。若六个设置各有两个候选,共有 2⁶ = 64 个组合。五折需要 320 次拟合。选出配置后,再用全部训练数据拟合一次。

教学例子:不要只读排名

假设配置 A 的训练 accuracy 为 0.99,平均 CV 为 0.78;配置 B 分别为 0.88 和 0.82。若目标是 CV accuracy,则 B 排名更高。A 的训练优势不能弥补其泛化差距。还应查看各折成绩及波动。CV 标准差描述折间变化,不是现成的置信区间。差异很小时,不能把单次排名当成确定结论。搜索指标也必须符合业务目的。

每折只从其拟合数据学习缺失值填补和类别编码。Pipeline 把准备与训练连在一起,避免评分折提前提供信息。Bootstrap 则在某次森林拟合内部,为树抽取训练行。它不是交叉验证。搜索以外的验证集可以检查所选模型。但一旦用其结果继续调参,它就参与了选择,不能再作为完全独立的最终证据。

XGBoost 练习的特征重要性采用 gain:使用某输入的分裂带来的训练目标改善量取平均,再作归一化。它与 RF 的不纯度重要性不是同一尺度。较大的 gain 不说明作用为正,也不证明因果。最终解释应同时说明模型、评价数据、指标、错误代价和限制。

设置网格时,可以先用较宽范围和较大间隔搜索,再在有效区域细化。若分数改善很小或不稳定,应考虑停止扩张。搜索更多组合也会增加计算成本和选择偏差。


先理解数据的尺度,再判断降维保留了什么。

无监督学习(unsupervised learning)没有给定的目标标签。任务是发现数据结构。例如,银行有客户的消费额、交易次数和信用额度,但没有正确的客户分组。聚类可以探索相似客户。它不能直接回答谁会流失。主成分分析(Principal Component Analysis,PCA)则压缩变量。两种方法的目的不同。

#先清理,再统一尺度

先检查重复客户、缺失值和异常值。数值缺失可用该变量的中位数填补,但要保留缺失原因。人口属性中的 Unknown 是未知类别,不能当成数值零。四分位距 IQR 是第 75 百分位数 Q3 减去第 25 百分位数 Q1。低于 Q1 − 1.5 × IQR 或高于 Q3 + 1.5 × IQR 的值需要检查。这个规则只发出提示。真实的高消费客户可能正是研究对象。

教学例:标准化 Standardization

z-score =(原值 − 均值)÷ 标准差。标准差描述数值围绕均值的分散程度。若平均消费为 4000,标准差为 2000,则消费 6000 的 z-score 为 1。这表示高于均值一个标准差。标准化能减轻金额、次数和比例的单位差异。它不会删除异常值,也不会消除变量之间的相关性。

#PCA 寻找变化最大的方向

方差(variance)描述数值的分散程度。PCA 将原变量组合成新的轴。第一主成分 PC1 保留最大的方差。PC2 在与 PC1 垂直的方向中保留最多剩余方差。每个客户在新轴上的坐标叫成分得分。若消费额和交易次数高度相关,它们可能主要描述同一种客户活跃程度。PCA 可以用较少的轴表示这种重叠信息。

教学例:读系数与解释方差

设 z_消费和 z_次数是两个标准化特征。某成分为 PC1 = 0.707 × z_消费 + 0.707 × z_次数。两个值都是 1 时,PC1 约为 1.414。两项共同推高得分。若各成分解释率依次为 50%、30%、15%、5%,累计保留 85% 至少要留三个成分,实际保留 95%。不能保留半个成分。

成分系数(component coefficient)的绝对值说明该变量对该成分的权重。正负号说明方向。载荷(loading)也用于解释变量与成分的关系,但软件定义可能不同。结合本章的系数例子,检查哪些变量的权重较大,以及它们的符号是否相同。整条轴反转符号不会改变信息。解释率高表示保留较多方差,不表示分类准确率高,也不保证保留了最有用的业务信息。

易错点

PCA 得分在拟合数据上不相关,但不相关不等于统计独立。两个不相关的量仍可能存在非线性关系。标准 PCA 先中心化,不自动把每个变量缩放为相同标准差。消费额和交易次数单位不同,应先考虑标准化。选 85% 或 90% 是分析选择,不是通用正确答案。


理解分配、更新与 K 的选择,并识别评分的限制。

k-means 将客户分成 K 个簇(cluster)。K 由分析者指定。模型先设 K 个中心,再把每个客户分给最近的中心。它随后把每个中心移到当前成员的平均位置。这个平均位置叫质心(centroid)。重复分配和更新,直到变化很小或达到迭代上限。质心是一个平均坐标,不一定对应真实客户。

#距离说明什么叫相似

欧氏距离(Euclidean distance)是坐标空间中的直线距离。在二维平面中,两个坐标分别相差 3 和 4,距离就是 5。k-means 使用所选特征或保留的 PCA 得分计算距离。因此,特征、尺度和保留的成分都在定义相似。若金额直接用千位数,而比例只在 0 到 1 之间,金额通常会主导距离。

教学例:完整的一轮分配与更新

一维客户位置为 1、2、8、9。设 K = 2,初始中心为 1 和 8。第一轮把 1、2 分到第一簇,把 8、9 分到第二簇。更新后,质心分别为 1.5 和 8.5。再分配时成员不变,可以停止。这里的两簇很清楚,但真实客户可能连续分布,没有明显边界。

簇内平方和(within-cluster sum of squares,WCSS)也叫 inertia。它把每个客户到所属质心的距离平方后相加。上例中,每个客户离质心 0.5,故 inertia = 4 × 0.5² = 1。这个值越低,表示在当前空间中越紧凑。增加 K 通常会降低它。若每个客户自成一簇,它可以降为零。因此,不能只选 inertia 最小的 K。

方法怎样读限制
肘部法 Elbow找增加 K 后改善开始变小的位置弯折可能不明显;不能保证唯一答案
轮廓系数 Silhouette接近 1:分离清楚;接近 0:重叠;负值:可能错分只衡量所选距离下的分组;不直接衡量业务价值

教学例:轮廓系数

a 是客户到同簇其他客户的平均距离。先分别计算该客户到每个其他簇全部成员的平均距离。取这些平均距离中最小的一个,记为 b。轮廓系数为(b − a)÷ max(a,b)。若 a = 2,b = 5,得分为 0.6。若 a = 5,b = 2,得分为 −0.6,说明它平均更接近另一簇。总体得分是客户得分的平均。K = 1 时没有其他簇,不能用这个指标。全部客户各自成簇时也不能使用。单成员簇通常按软件约定记为 0。

实际选择要合看评分、簇大小、稳定性和可解释性。例如,K = 2 的平均轮廓系数为 0.30,K = 3 为 0.27。若第三簇揭示了可服务的小群体,仍可考虑 K = 3。但要说明评分下降的代价。不能说它在数学上更优。只在相同特征空间和一致的样本规则下比较这些评分。

模型限制

k-means 偏好围绕中心的紧凑分组。它可能难以识别弯曲、大小差异很大或密度不同的簇。异常值会拉动均值。不同初始中心也可能得到不同结果。多次初始化有帮助。固定随机种子只保证可复现,不证明结果稳定或正确。簇 1 和簇 2 的编号没有大小或风险含义。


用原始单位解释客户,再检查分组是否稳定且有用。

银行客户案例的目标是探索使用行为。先选关系时长、持有产品数、闲置月份、消费额、交易次数和额度等输入。客户编号只用于识别记录,通常不能表示行为。人口属性和流失状态可留作分组后的描述。是否把某列用作输入,要由问题决定。已有流失标签也不意味着本次分析就是流失预测。

判断步骤:一条完整流程

明确客户和观察期间 → 选择行为特征 → 检查缺失和极端值 → 标准化 → 用 PCA 检查并压缩方差 → 比较多个 K → 检查簇大小和原始特征 → 提出业务解释 → 验证行动效果。无监督分析没有正确标签,也仍需要验证。验证重点包括分组的稳定性、解释的一致性和实际用途。

强相关特征会使同一种行为在距离中得到重复权重。标准化只解决尺度。PCA 将坐标旋转到不相关的方向,保留全部成分,而且不再把各成分分别缩放到相同方差时,仍保留 PCA 输入空间中的距离。只有截取部分成分才真正降维,并改变所保留的距离信息。低方差方向也可能区分重要客户。因此,降维后必须回看客户画像。

教学例:画像A 簇:200 人B 簇:800 人
年消费均值100003200
年交易次数均值9558
持有产品数均值24

A 簇消费更多,交易更频繁,但持有的产品更少。可以提出一个假设:部分 A 簇客户可能需要其他银行产品。先访谈,再做小规模对照试验。不能直接断言 A 簇利润更高,因为还缺手续费、服务成本和坏账数据。B 簇交易较少也不等于客户将流失。还要核对观察期间,以及行为是否发生在流失之前。

#在 PCA 空间分组,在原始变量上解释

将簇标签按客户记录对应回原表。先比较消费金额、次数等原单位均值和中位数。二者差异大时,要检查是否少数高值拉高均值。再用全体客户的均值和标准差计算各簇的平均 z-score。蛇形图(snake plot)连接这些分数。某簇消费得分为 +1.5,表示其均值高于全体均值 1.5 个全体标准差。它不表示高出 150%。

三种容易误读的图和表

二维 PCA 图只显示两个轴。若聚类用了七个成分,图上重叠不能证明七维空间也重叠。人口属性应比较各簇内部百分比。例如,两簇各有 100 名某类客户,在 200 人簇中占 50%,在 800 人簇中只占 12.5%。信用额度表示可借用额度,不能直接当成收入或利润。

检查稳定性时,每次只改变一个选择。例如,更换初始种子、把保留方差从 85% 改为 90%,或对极端值做合理截尾。比较成员重叠、簇大小和原始画像。不要只比较簇编号。若小改动就颠倒业务解释,应降低结论强度。描述现有客户时可以用全体数据拟合。新客户必须沿用已拟合的填补值、缩放、PCA 和质心,才能进入同一分组体系。


理解单位、重复模式、滞后和差分。

时间序列(time series)是按时间排列的观测值。电力案例每小时记录需求。这里的顺序本身有信息。今天下午与昨天下午可能相似,也可能与一小时前相似。先检查时间戳(timestamp)、时区、重复记录、缺失时点和采样间隔。将记录按时间排序后,才解释滞后或建立预测模型。

教学例:时间戳与单位

10:00 有两条记录时,要先查明原因。课件将重复时间戳取均值,这是一项数据处理选择。若缺少 11:00,直接取上一行不能保证它代表上一小时。先补齐小时索引,再决定怎样填补。课件用过去最近值向前填补。此法只用过去信息,但会制造平坦段,也可能掩盖真实峰值。

重采样(resampling)把小时数据汇总为日或月数据。MW 是功率,MWh 是能量。小时功率求均值后仍是 MW。若两个小时的平均功率为 100 MW 和 200 MW,两小时平均功率是 150 MW,能量则为 100 × 1 + 200 × 1 = 300 MWh。日求和只有在每条值代表一小时平均功率且时段完整时,才数值对应日能量。缺失时段会影响总量。

模式含义电力教学例
趋势 Trend较长时期的水平变化连续几年需求逐步上升
季节性 Seasonality在固定时间间隔重复每日高低峰、每周工作日差异
不规则变化未被稳定模式解释的变化临时停电或异常天气造成偏离

滞后(lag)表示回看多少个时间步。用 y_t 表示当前小时需求。y_(t−1) 是上一小时,y_(t−24) 是昨天同一小时,y_(t−168) 是上周同一小时。这些解释要求每一步确实是一小时。自相关(autocorrelation)衡量序列与自身过去值的相关性。自相关函数 ACF 将不同滞后的相关系数画出来。lag 24 附近有峰值支持每日重复模式,但不证明因果。

#平稳性 Stationarity:统计特征是否稳定

这里关注均值、方差和同一时间间隔的相关结构是否随时间大致稳定。这叫弱平稳。平稳序列仍可有相邻时点的相关性,并不等于纯随机噪声。只有均值稳定还不够。若波动幅度越来越大,方差也在变。明显趋势或随时段改变的季节均值会妨碍直接使用平稳模型。

教学例:普通差分与季节差分

普通一阶差分为 w_t = y_t − y_(t−1)。序列 100、110、120 的差分为 10、10,上升水平被转为稳定变化。小时数据的每日季节差分为 y_t − y_(t−24)。若今天 10:00 是 130,昨天 10:00 是 120,差分为 10。它比较相同日内位置。每周季节差分则用 lag 168。

差分的目标是减轻不稳定结构。它不保证序列一定平稳。不要因模型名称包含 I 就自动差分一次。过度差分可能放大噪声,并降低预测质量。应在历史数据中检查差分后的图和预测表现。也不要把一阶差分的次数 1 与季节间隔 24 混为一谈。


会解释 p、d、q,并区分随机模型与可计算预测。

ARIMA 是自回归差分移动平均模型(AutoRegressive Integrated Moving Average)。它把三种信息结合起来:序列的过去值、为稳定序列所做的差分,以及过去的预测误差。写作 ARIMA(p,d,q)。这些参数说明结构,不表示准确率。模型是否有用,需要用真实的未来预测任务验证。

部分参数含义直观解释
AR 自回归p:连续使用多少个过去值最近的水平或变化会延续
I 差分d:做几次普通差分先预测较稳定的变化,再还原水平
MA 移动平均项q:使用多少个过去创新项最近未预期的偏差会影响现在

教学例:AR 不等于 ACF

设 d = 0,模型的一步预测为 ŷ_t = 10 + 0.8 × y_(t−1)。若上一小时为 100,预测就是 90。AR 是估计系数后建立的预测模型。ACF 则是描述各滞后相关程度的工具。看到 lag 24 的相关性高,不代表 ARIMA 的 p 自动等于 24,也不保证某种模型能准确预测。

创新项(innovation)是当前实际值与利用过去信息所得一步预测的差。拟合时用估计的误差表示这些未知创新。设模型预测上一小时为 30000 MW,实际为 32000 MW,则误差是 +2000 MW。如果最近的正误差具有可利用的持续影响,MA 项可以上调下一次预测。未来的创新尚未发生,不能作为已知输入。

教学例:完整 MA 模型与预测式

设 μ 是稳定均值,θ 是误差权重,ε_t 是当前创新。MA(1) 的完整模型为 y_t = μ + θ × ε_(t−1) + ε_t。若 μ = 30000,θ = 0.5,上一误差为 2000,且未来创新的条件均值为零,则一步预测为 31000 MW。完整模型保留当前创新;预测式用它的条件均值。两者不能直接混写。

#d 大于零时,模型处理的是差分序列

ARIMA(2,1,1) 先做一次差分。然后对差分后的变化量,使用过去两个变化量和过去一个创新项。它不是把差分开关打开后,仍直接对两个原始水平应用同一个 AR 解释。假设最后观测水平为 100,未来两个变化量的预测为 +3 和 +2,还原后的水平预测是 103 和 105。第二个预测要从 103 累加,不能从 100 重新加 2。

三个常见混淆

MA 项不是最近几个观测值的普通移动平均。d = 1 是做一次普通差分,不是自动减去昨天同一小时。非季节 ARIMA 不等于季节 ARIMA(SARIMA)。SARIMA 另有季节项和季节周期参数。本课的非季节模型可能难以表达强烈的每日模式。理解这个限制,比记住某个参数组合更重要。

模型在一个预测起点输出未来 24 小时结果时,后续步骤不能偷看尚未发生的实际需求。若预测需要尚未知晓的过去位置,模型会使用自己的预测及相应的误差假设。预测距离变远后,不确定性通常增大。业务若每小时获得新数据并更新预测,那是另一个任务。评估时必须复现实际使用方式。


建立简单基线,按时间验证,并保留最终测试期。

先定义预测任务。例如,每天 00:00 一次性预测当天未来 24 小时需求。此时最多能使用前一天 23:00 已取得的数据。预测窗口内的实际需求只能在事后评分时读取。数据清理、参数选择和任何额外输入也必须遵守这个时间边界。随机打乱后划分训练集,可能让未来信息进入过去的预测。

教学例:季节朴素基线 Seasonal naïve

以昨天同一小时作为今天的预测。若昨天 14:00 为 32000 MW,今天 14:00 就预测 32000 MW。生成今日 24 小时预测只需复制昨日 24 小时记录。它能利用每日重复模式,且不需拟合复杂模型。若今天是节假日,昨日的工作日模式可能失效。基线也有条件,但复杂模型应证明自己的额外价值。

#滚动起点验证 Rolling-origin evaluation

选多个历史预测起点。每次仅用该起点前的数据拟合,再预测随后的 24 小时。记录误差后向前移动。可用固定长度窗口,例如每次使用最近 180 天;也可用逐渐扩大的窗口。两者要与计划的使用方式一致。所有候选模型和基线应使用相同起点、预测长度和可用信息。比较不同日期的分数,不足以说明模型优劣。

指标如何计算怎样解释
MAE 平均绝对误差对每个实际 − 预测
RMSE 均方根误差误差平方取平均,再开平方对大误差更敏感;单位仍为 MW
MAPE 平均绝对百分比误差对误差

教学例:同一误差,不同摘要

三个小时的实际值均为 100 MW,预测为 90、100、70 MW。误差是 10、0、30 MW。MAE = 40 ÷ 3 ≈ 13.3 MW。RMSE = √[(100 + 0 + 900) ÷ 3] ≈ 18.3 MW。MAPE ≈ 13.3%。RMSE 更突出最后一个大误差。指标需结合业务成本选择。若漏报峰值的损失大,还应检查高峰时段。

假设四个验证日的平均 MAE 为:季节朴素 900 MW,ARIMA-A 为 1100 MW,ARIMA-B 为 950 MW。这些是教学数值。B 是两个 ARIMA 中较好的候选,但仍未超过基线。不能因为它复杂就选它。也要看各日期表现和最大失误,避免平均值掩盖某个季节的失败。一天胜出不足以建立可靠结论。

auto_arima 在限定范围内自动搜索参数。其内部准则通常平衡样本拟合与复杂度,例如 AIC。这个过程不等于已经证明未来 24 小时预测最好。必须把实际选出的参数用于同样的时间验证,并与基线比较。若先用较晚日期数据选好参数,再回测更早起点,参数选择也可能泄漏未来信息。自动搜索应在每个允许的训练边界内完成,或使用更早的独立选择期。

判断结论是否可信

用历史验证选方法后,保留一个未参与选择的末段做最终测试。验证分数是选择依据,不能替代最终测试。报告预测长度、训练窗口、日期、指标和基线。若复杂模型收益小且不稳定,简单基线可能更适合当前业务。


#用四步形成答案

  1. 先给结论。 直接回答是否合适,或应选什么方法。
  2. 指出证据。 引用题中的信息。说明哪些数据、错误或业务约束支持结论。
  3. 解释机制。 说明原因怎样影响结果。不要只写“会过拟合”或“会有偏差”。
  4. 提出检查或修正。 给出可实行的下一步,并说明结论的限制。

不要只写“取决于情况”。要说明它取决于什么,以及怎样据此作选择。

#完整示范:发现数据泄漏

题目。 分析者先用全部乘客数据的年龄中位数填补缺失,再划分训练和验证集。验证准确率很高。是否足以说明模型可以预测新乘客?

答案。 还不够。分析者在填补时使用了验证集的信息。验证集本应模拟尚未见到的新乘客。将它纳入中位数计算,会使评价流程与真实使用不同。应先划分数据,再只用训练集计算填补值。验证集沿用该值。若用交叉验证,每一折都重新拟合填补器。然后用合适指标重新评价。准确率本身也不能说明两类错误是否满足业务要求。

这里没有断言泄漏一定造成某个固定幅度的分数上升。问题在于独立评价的边界已经被破坏。

#常用英文答题句式

中文意思简短英文表达
该指标没有反映两种错误的不同成本。This metric does not reflect the different costs of the two errors.
验证集应代表未来会遇到的观测。The validation set should represent the observations that the model will encounter.
只用训练数据估计预处理设置。Estimate preprocessing settings from the training data only.
这个结果支持预测关系,不能证明因果。This result supports a predictive relationship. It does not prove causation.
在相同日期和相同预测长度下比较模型。Compare the models on the same dates and for the same forecast horizon.
先与简单基线比较,再判断复杂模型的价值。Compare the model with a simple baseline before you assess its added value.

遮住右列。先口头作答,再检查。如果无法解释理由,回到对应章节的小例子。

检查问题应掌握的答案
SSE、MSE、RMSE 为什么会选同一个模型?同一批数据上,除以正的固定 n 和取平方根都保持排序。
验证集为何不能删除真实的困难样本?未来也可能遇到这些样本;删掉会改变被评估的人群或情形。
使用 CV 是否可以取消最终测试?不可以据此断言。CV 仍参与选择,反复搜索也会产生选择偏差。
precision 与 recall 分别看谁?precision 看预测为正者;recall 看实际为正者。
提高阈值能保证什么?固定评分下,预测正类集合缩小或不变。TP、FP 不增;recall 不增。precision 未必上升。
RF 与 boosting 的树怎样组合?RF 独立拟合多棵有随机性的树,再聚合。Boosting 依次加入树,改进当前模型的损失。
PCA 保留 90% 方差意味着什么?保留输入变化的 90%,不是预测准确率 90%,也不保证业务信息保留 90%。
inertia 更小是否代表 K 更好?不一定。增加 K 本身就能降低最优 inertia;还要看分离、稳定性、大小与用途。
聚类标签可以直接称为风险等级吗?不可以。编号没有顺序含义,风险解释需要额外证据。
lag 24 在小时数据中表示什么?相隔 24 个小时步。它不表示每天的第 24 点钟。
ARIMA 的 q 是最近 q 个观测的平均吗?不是。它描述过去 q 个创新项的作用。
复杂时序模型输给季节朴素基线时怎么办?先保留基线作为可用候选,再检查验证设计、季节结构与复杂模型的收益。

以下清单用于追溯范围。阅读和解题不需要再打开这些文件。 当前目录没有第 1–2 周的独立 notebook;本文已补充理解现有材料需要的数据与统计基础。时间序列文件在 wk8 目录,但 notebook 内标题使用 Week 09。本文按主题组织,避免周次差异造成遗漏。

原文件本文覆盖
VK.wk9.2026 (1).pdf,第 4、6–9 页课程判断框架、四类任务、考试规则
IS5126_week03_linear_regression.ipynb第 1–3 章:常数基线、OLS、损失、编码、特征工程
IS5126_week04_Hyperparameters.ipynb第 2、4、6 章:指标、泛化、超参数、异常值、非负预测
IS5126_week05_Classification.ipynb第 5、7–9 章:CV、缺失、分类、阈值、错误成本
IS5126_week05_logistic_regression_tutorial.ipynb第 7–9 章:Titanic 流程、混淆矩阵、阈值变化
IS5126_week06_Decision_Trees.ipynb第 10–12 章:树、RF、boosting、超参数与搜索
IS5126_week06_decision_trees_handson.ipynb第 10–12 章:Gini、叶概率、bootstrap、CV 与重要性
IS5126_week06_xgboost_exercise.ipynb第 12 章:XGBoost 六项设置、验证、gain 解释
IS5126_week07_clustering.ipynb第 13–15 章:标准化、PCA、聚类、客户画像
IS5126_wk8_timeseries.ipynb第 16–18 章:时间模式、ACF、ARIMA、基线、滚动验证

原 notebook 的操作细节,例如安装依赖、上传文件、导出作业 CSV,没有列为复习重点。这与本次考试不考编程能力的说明一致。本文保留这些流程背后的分析与验证原则。

本文已校正几处容易误导学习的简化:IQR 上下界采用标准四分位数边界;PCA 的不相关不等同于独立;precision 不保证随阈值提高而提高;MA 随机模型保留当前创新项;RF 的课程实现使用树概率均值。原 notebooks 未被修改。