# Pidd Leakage Audit

> 1. Never cite CRISP-DM without citing Shearer (2000) or Wirth & Hipp (2000). These are the original

- Skill: `yakeworld/pidd-leakage-audit` (Agent Skill, multi-file: 12 files)
- Install (CLI): `npx skillmds@latest add yakeworld/pidd-leakage-audit`
- Raw SKILL.md: https://api.skillmd.com/api/skills/yakeworld/pidd-leakage-audit/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Security
- License: MIT
- Author: yakeworld (https://skillmd.com/u/yakeworld)
- Updated: 2026-09-21
- Page: https://skillmd.com/skills/yakeworld/pidd-leakage-audit

---



|
| Varoquaux | Olivier | 2018 | arXiv:1806.04876 |
| Shearer | Chris | 2000 | CRISP-DM Consortium |
| Wirth & Hipp | R. & J. | 2000 | Data-Mining |
| Kapoor | S. & A. | 2024 | Patterns 5(9):101065 |
| Chawla | N.V. et al. | 2002 | JAIR 16:321-357 |
| Stiglic | G. et al. | 2012 | Journal of Medical Systems |
| Lundberg | S.M. & S.I. | 2017 | NeurIPS |
| Collins | G.S. et al. | 2015 | Annals of Internal Medicine (TRIPOD) |
| Moons | K.G.M. et al. | 2019 | Annals of Internal Medicine (PROBAST) |
| Norgeot | B. et al. | 2020 | Nature Machine Intelligence (MI-CLAIM) |
| Smith | J.W. et al. | 1988 | CAMC |

## Pitfalls
- 
- 

## Verification
- 
- 

1. Never cite CRISP-DM without citing Shearer (2000) or Wirth & Hipp (2000). These are the original papers.
2. Never run CV without isolating preprocessing inside folds. This is the core of the methodology.
3. SMOTE before splitting = severe leakage. Recall collapses to ~0.50, Precision inflates to 1.00.
4. PIDD has 768 samples. Best model only reaches F1~0.71. Claims of F1>0.90 are always suspicious.
5. Global imputation = minor leakage. Only +0.6% F1 inflation. Technically incorrect.
6. Use imblearn.Pipeline, NOT sklearn.Pipeline. sklearn.Pipeline does NOT support SMOTE properly.
7. For SHAP analysis, use venv with numpy>=2.0. System Python on Debian has numpy 1.x compiled packages (numexpr, bottleneck) that crash with numpy 2.x. Create isolated venv.
8. CatBoost needs compilation from pip. Takes ~4 minutes. Install separately in venv.

## Output Contracts

- cv_results.csv: 10-fold CV metrics per model
- comprehensive_results.json: all results including CV, ensemble, SHAP
- run_shap.py: SHAP analysis script
- report.py: summary report generation

## 契约层 · BOUNDARY

**边界**：技能功能边界。

## 契约层 · IO_CONTRACT

**输入**：请求描述、上下文信息。
**输出**：执行结果、状态反馈。

## 验证清单 · VERIFICATION
## 原则 (Principles)

- **凡引必溯**：CRISP-DM 必并引 Shearer (2000) 或 Wirth & Hipp (2000) 之原典，单引 CRISP-DM 者，非学术之诚。
- **预处入折**：交叉验证必使预处理（含 SMOTE、imputation）落入 fold 之内；折外预处即泄漏，Recall 崩、Precision 虚高。
- **知界而警**：PIDD 768 样本，最佳模型 F1 不过 0.71；凡 F1>0.90 之声称，皆疑，必查泄漏。
- **工具择用**：SMOTE 用 `imblearn.Pipeline`，勿用 `sklearn.Pipeline`（不支持 SMOTE）；SHAP 用独立 venv（numpy≥2.0）。


- [ ] 交叉验证中预处理（含 SMOTE、imputation）已隔离在 fold 内部，无折外预处理
- [ ] 已使用 `imblearn.Pipeline` 而非 `sklearn.Pipeline` 执行 SMOTE
- [ ] 若报告 F1 > 0.90，已视为异常并立即排查数据泄漏（PIDD 768 样本最佳 F1≈0.71）
- [ ] SHAP 分析已在独立 venv（numpy≥2.0）中执行，未使用系统 Python（Debian numpy 1.x 编译包冲突）
- [ ] 引用 CRISP-DM 方法论时已并引 Shearer (2000) 或 Wirth & Hipp (2000) 原始文献
- [ ] 缺失值处理已禁止全局 imputation，填充值在验证折内独立计算
- [ ] 输出契约完整：`cv_results.csv`（10-fold CV metrics）、`comprehensive_results.json`、`run_shap.py`、`report.py` 均已生成


## Genes (策略基因)

> 紧凑策略表示。条件→策略。需要深度时参考完整文档。

- **[PIDD-001]** 执行交叉验证时 → 必须将预处理（含 SMOTE、imputation）隔离在 fold 内部，严禁在数据分割前执行
- **[PIDD-002]** 处理类别不平衡数据时 → 必须使用 `imblearn.Pipeline` 而非 `sklearn.Pipeline`，以确保 SMOTE 正确支持
- **[PIDD-003]** 评估 PIDD 数据集模型性能时 → 若 F1 分数超过 0.90，必须视为异常并立即排查数据泄漏
- **[PIDD-004]** 进行 SHAP 可解释性分析时 → 必须创建独立 venv 并安装 numpy>=2.0，以避免系统 Python 编译包冲突
- **[PIDD-005]** 引用 CRISP-DM 方法论时 → 必须同时引用 Shearer (2000) 或 Wirth & Hipp (2000) 原始文献
- **[PIDD-006]** 处理缺失值时 → 禁止使用全局 imputation，必须在验证折内独立计算填充值以消除轻微泄漏

## 约束规则 · RULES

1. **输入约束**: 参数类型、范围、格式必须校验
2. **输出约束**: 返回值结构、编码、命名必须一致
3. **异常约束**: 错误信息必须包含上下文和恢复建议
4. **安全约束**: 不执行未验证的任意代码，不暴露内部状态

## Golden 集合 · GOLDEN SET

- **Golden Input**: PIDD 数据集（768 样本，类别不平衡）+ 在数据分割前执行 SMOTE 的 10-fold CV 脚本（覆盖泄漏路径）
- **Golden Output**: 按 PIDD-001/002 用 `imblearn.Pipeline` 将 SMOTE/imputation 隔离入折后重跑，F1 回落至 ≈0.71 界内；`cv_results.csv`、`comprehensive_results.json` 均生成，Recall 不再虚崩至 ~0.50
- **Golden Error**: F1 > 0.90（如 0.93）→ 触发 PIDD-003 泄漏异常，须回查折外预处理与全局 imputation（PIDD-006）并复算 F1 回落到 0.71 量级

> Golden 集合是测试的单一真理来源。所有改进必须通过 golden 测试。

## 示例 · EXAMPLES

**示例 1**（折内预处理）
- **输入**：对 PIDD（768 样本，不平衡）做 10-fold CV 前，在数据分割前执行 SMOTE 的全量脚本
- **操作/输出**：按原则「预处入折」与 **PIDD-001**，改用 `imblearn.Pipeline`（**PIDD-002**）把 SMOTE/imputation 放进 Pipeline，仅在各 fold 训练折内执行；产出 `cv_results.csv` 等输出契约
- **验证**：Recall 不再虚崩至 ~0.50、Precision 不再虚高至 1.00；F1 落于 ≈0.71 界内，未触发 **PIDD-003** 的 F1>0.90 泄漏异常

**示例 2**（F1 异常排查）
- **输入**：某运行报告 PIDD 模型 F1=0.93
- **操作/输出**：按 **PIDD-003** 判定为异常，回查折外预处理与全局 imputation（**PIDD-006**），将填充值改为折内独立计算后重跑
- **验证**：复算 F1 回落到 0.71 量级；`comprehensive_results.json` 前后对照记录泄漏来源

**示例 3**（SHAP 环境）
- **输入**：对获胜模型做 SHAP 可解释性分析，系统 Python 为 Debian numpy 1.x
- **操作/输出**：按 **PIDD-004** 建独立 venv 并安装 numpy≥2.0、单独编译安装 CatBoost（约 4 分钟），运行 `run_shap.py`
- **验证**：SHAP 运行无 numexpr/bottleneck 崩溃；引用 CRISP-DM 时按 **PIDD-005** 已并引 Shearer (2000) 或 Wirth & Hipp (2000)

> 违反规则的操作视为不安全，必须拒绝或隔离。

> 每项验证必须可执行、可记录、可复现。验证失败时记录原因和修复。

