ml-evaluation-designlisted
Install: claude install-skill fieldlu/Machine-learning-skills
# ML 实验三层设计:切数据 · 选尺子 · 信比较
## R — 原文 (Reading)
> 测试集应该尽可能与训练集互斥……老师出了10道习题供同学们练习,考试时老师又用同样的这10道题作为试题,这个考试成绩能否有效反映出同学们学得好不好呢?答案是否定的。
>
> — 周志华,《机器学习》第2章 2.2节
> 自助法在数据集较小、难以有效划分训练/测试集时很有用;此外,自助法能从初始数据集中产生多个不同的训练集,这对集成学习等方法有很大的好处。然而,自助法产生的数据集改变了初始数据集的分布,这会引入估计偏差。
>
> — 周志华,《机器学习》第2章 2.2.3节
> 错误率和精度虽常用,但并不能满足所有任务需求。以西瓜问题为例,假定瓜农拉来一车西瓜……若我们关心的是"挑出的西瓜中有多少比例是好瓜",或者"所有好瓜中有多少比例被挑了出来",那么错误率显然就不够用了。
>
> — 周志华,《机器学习》第2章 2.3.2节
> 性能度量反映了任务需求,在对比不同模型的能力时,使用不同的性能度量往往会导致不同的评判结果;这意味着模型的"好坏"是相对的,什么样的模型是好的,不仅取决于算法和数据,还决定于任务需求。
>
> — 周志华,《机器学习》第2章 2.3节
> 它们大都隐式地假设了均等代价……在非均等代价下,我们所希望的不再是简单地最小化错误次数,而是希望最小化"总体代价"(total cost)。
>
> — 周志华,《机器学习》第2章 2.3.4节
> 若一个学习器的P-R曲线被另一个学习器的曲线完全"包住",则可断言后者的性能优于前者……如果两个学习器的P-R曲线发生了交叉,则���以一般性地断言两者孰优孰劣。
>
> — 周志华,《机器学习》第2章 2.3.2节
> 在使用交叉验证等实验估计方法时,不同轮次的训练集会有一定程度的重叠,这就使得测试错误率实际上并不独立,会导致过高估计假设成立的概率。为缓解这一问题,可采用"5×2交叉验证"。
>
> — 周志华,《机器学习》第2章 2.4.2节
---
## I — 方法论骨架 (Interpretation)
任何"跑实验"都可以拆成三个先后必须想清楚的设计层,顺序不能颠倒:
**第一层:数据怎么切。** 你只有一份数据,却既要拿它训练又要拿它证明模型好用——所以必须人为制造"没见过的题"。三种主流切法各有适用域:留出法简单但单次结果不稳(要分层采样+多次随机划分取均值);k 折交叉验证让每个样本都轮到过测试位,是中等数据的默认选择;自助法(bootstrap)专为"小到难以划分"或"需要制造多个不同训练集"的场景而生,代价是改变了数据分布、引入估计偏差。切法的本质权衡是:训练数据利用率 vs 估计的无偏性。
**第二层:用什么尺子量。** 度量不是客观事实而是任务需求的编码。"好坏是相对的"——换一把尺子,排名可能反转。选尺子的推理链:先问业务最怕哪种错(漏放 vs 误杀)→ 映射为查准/查全取向 → 用 β 或代价矩阵把偏好形式化 → 再检查所选度量的隐藏前提(多数经典度量隐含"所有错误同价"和"类别均衡"两个假设,现实常常都不成立)。类别极不平衡时 accuracy 会彻底失灵。
**第三层:怎么比才可信。** 测试错误率本质上是一次随机采样的实现值,不是真值;加上测试集选择效应与算法随机性两重干扰,直接比大小不可信。可信的比较 = 多次重复运行消除随机性 + 统计检验确认差距不是噪声;多算法多数据集走 Friedman+Nemenyi 流程;注意 k