# IS5126 完整复习资料

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

本资料依据你提供的考试说明，以及当前文件夹中的全部 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–15 | PCA 保留什么？k-means 怎样分组？分组怎样支持行动？  |
| 16–18 | 时间顺序有什么作用？ARIMA 怎样解释？怎样评价预测？     |
| 最后两节  | 怎样写有理由的答案？怎样检查自己是否掌握了主线？         |


## 全课程共用的四个问题

1. **目的：** 我们要回答什么业务问题？预测结果会触发什么行动？
2. **方法：** 输出是数值、类别、分组，还是未来一段时间的数值？
3. **可信度：** 评价是否模拟真实使用？有没有泄漏、错误指标或不公平比较？
4. **解释：** 结果具体说明什么？它不能说明什么？下一步应做什么？

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

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

---

## 第 1 章　从数据到问题：先确定要预测什么

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

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

数据集（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 只表示线性关系弱，不表示没有任何关系。相关不证明因果。

---

## 第 2 章　用损失函数描述错误：大小与比例

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

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


| 指标                | 计算方式                           | 数值表示什么          |
| ----------------- | ------------------------------ | --------------- |
| SSE：平方误差和         | Σeᵢ²                           | 全部平方误差的总量       |
| MSE：均方误差          | Σeᵢ² / n                       | 平均平方误差          |
| RMSE：均方根误差        | √(Σeᵢ² / n)                    | 与目标同单位；重罚大错误    |
| MAE：平均绝对误差        | Σ|eᵢ| / n                      | 平均偏离多少原始单位      |
| MAPE：平均绝对百分比误差    | 100 × Σ(|eᵢ|/|yᵢ|) / n         | 相对于实际值的百分比      |
| SMAPE：对称平均绝对百分比误差 | 100 × Σ[2|eᵢ|/(|yᵢ|+|ŷᵢ|)] / n | 相对于实际值与预测值的平均大小 |


**教学例子**

实际值为 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 评价它。此时训练优化的目标与报告的指标不同。回答选指标题时，应连接三件事：哪种错误有成本，指标怎样计算该错误，为什么这种计分适合当前业务。

---

## 第 3 章　线性回归：用一条规则形成预测

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

如果完全不用输入，所有观测都收到同一个预测 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(价格) 放入价格预测的输入；使用时你还不知道答案。系数描述预测关系，不证明因果。即使切工系数为正，也不能据此断言改变切工必然使价格增加该数值。超出训练输入范围的预测称为外推，通常需要额外证据。

---

## 第 4 章　泛化与模型选择：训练好不等于使用好

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

泛化（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 只是常见划分，没有统一最佳比例。同一客户的重复记录或有时间顺序的数据，需要对应的分组或时间划分；随机打散未必合理。

---

## 第 5 章　交叉验证与缺失值：让评估保留边界

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

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

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

---

## 第 6 章　异常值与预测约束：把业务规则放进流程

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

异常值（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”不够，还要回答高价商品是否属于实际服务范围，以及删后分数还能代表谁。

---

## 第 7 章　分类：先估计概率，再作决定

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 之间的概率。

---

## 第 8 章　分类评价：看清错误的代价

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。

---

## 第 9 章　选择阈值，并完成可信的分类流程

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。与多数类基准比较。训练成绩远高于验证成绩，提示需要检查过拟合。
- 若使用交叉验证，每一折都只在该折的训练部分学习填补和编码规则。若验证结果已用于改模型或阈值，该验证集就参与了选择。最终独立检验需要从未指导这些选择的数据。

---

## 第 10 章　决策树：沿条件走到一个叶节点

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，可限制复杂度。后两者分别约束每个新叶的最少样本和允许分裂前的节点样本。两条规则必须同时满足。用验证结果决定限制程度。过浅的树也可能遗漏真实结构，造成欠拟合。

---

## 第 11 章　随机森林：让多棵不同的树共同预测

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% 的生还，也不表示提高票价会提高生还率。指标不提供作用方向或因果关系。可选切点较多的输入可能获得偏高的重要性。相关输入也可能分享贡献。比较图时应核对模型和编码列。

---

## 第 12 章　Boosting 与模型选择：看清依赖和证据

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 不说明作用为正，也不证明因果。最终解释应同时说明模型、评价数据、指标、错误代价和限制。

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

---

## 第 13 章　无监督学习与主成分分析 PCA

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

无监督学习（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% 是分析选择，不是通用正确答案。

---

## 第 14 章　k-means：从距离形成客户分组

理解分配、更新与 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 的编号没有大小或风险含义。

---

## 第 15 章　从客户聚类到可验证的业务行动

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

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

**判断步骤：一条完整流程**

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

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


| 教学例：画像  | A 簇：200 人 | B 簇：800 人 |
| ------- | --------- | --------- |
| 年消费均值   | 10000     | 3200      |
| 年交易次数均值 | 95        | 58        |
| 持有产品数均值 | 2         | 4         |


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

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

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

**三种容易误读的图和表**

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

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

---

## 第 16 章　时间序列：先看时间，再选模型

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

时间序列（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 混为一谈。

---

## 第 17 章　ARIMA：过去值、差分与过去误差

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

---

## 第 18 章　预测评估：用同一未来任务比较模型

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

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

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

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

### 滚动起点验证 Rolling-origin evaluation

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


| 指标             | 如何计算                      | 怎样解释                     |
| -------------- | ------------------------- | ------------------------ |
| MAE 平均绝对误差     | 对每个 |实际 − 预测| 求平均         | 典型绝对偏差；电力例单位为 MW         |
| RMSE 均方根误差     | 误差平方取平均，再开平方              | 对大误差更敏感；单位仍为 MW          |
| MAPE 平均绝对百分比误差 | 对 |误差| ÷ |实际| 求平均，再乘 100% | 便于看相对大小；实际为零时不可用，接近零时不稳定 |


**教学例：同一误差，不同摘要**

三个小时的实际值均为 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 未被修改。