Skip to content

Latest commit

 

History

History
50 lines (37 loc) · 6.25 KB

File metadata and controls

50 lines (37 loc) · 6.25 KB

H/D/N/Q provenance map

本页记录当前精选分支如何保留 Ma Xiao 的手写痕迹,同时区分历史原件、派生适配、2026 年新增工程能力和待隔离材料。它是首批映射台账,不表示所有 legacy/ 文件都已经现代化。

分级定义

标记 名称 判定标准 修改与发布规则
H Handwritten / verbatim 能与原 master blob 对应的 Ma Xiao 手写文本、代码或自制资产 原件保持内容和字节不变;不格式化、不批量翻译、不静默修正。项目自有 H 受根 MIT 许可
D Derived / adapted 从已确认的 H 原件提炼出的现代实现或双语适配 必须记录原路径/符号、保留语义、主动变化和验证入口;不得用整文件替换冒充保留手写实现
N New engineering 2026 年新增且没有直接 H 实现对应的 API、校验、测试、打包、示例或 CI 明确标为现代工程能力;不得倒填成 2018-2021 年已有成果
Q Quarantine / unclear 第三方材料、来源或许可不清、依赖私有 API,或无法确认是否可再分发的历史资产 默认冻结并排除公开发布与根 MIT;只有补齐来源和许可证据后才能重新分级

D 不是对 H 的逐字复制。它允许增加输入校验、显式参数、稳定依赖和现代适用条件,但必须把这些变化写出来。N 可以受历史研究问题启发,却不能声称与某个 H 实现保持 parity。

首批 legacy → modern 映射

来源 现代入口 保留的手写语义 主动变化 验证与状态
H legacy/original-readme.zh-CN.md D docs/zh-CN/theory.md;D docs/en/theory.md 保留 sampling、weighting、prior、cost 与 threshold 的原推理顺序 中文整理不替换原件;英文按欧美读者习惯补上下文与标准术语;2026 限定单独标注 人工逐节对照;原件继续作为字节级证据
H legacy/cost-sensitive-learning/ReadMe.md D src/class_imbalance/decision.py::cost_sensitive_threshold 保留误分类成本与概率阈值之间的 Bayes 决策关系 要求目标总体上的校准概率、稳定且实例无关的成本;显式拒绝负增量成本和退化成本 tests/unit/test_decision.py;只对公式契约负责,不声称复现历史实验
H legacy/original-readme.zh-CN.md 中 prior、cost 与 posterior 的手写分析 D src/class_imbalance/probability.py::prior_probability_correction 保留类别先验改变会影响 posterior 解释的核心思路 公式引用的第三方截图已按 Q 从当前树排除;现代实现明确 pure prior shift、源总体校准、目标总体 prevalence 等条件,不处理拒绝推断、选择偏差或概念漂移 tests/unit/test_probability.py;书目见 THIRD_PARTY.md
H legacy/metrics/gmean.py::gmean D src/class_imbalance/metrics.py::geometric_mean_score 两类都存在时保留 sqrt(recall * specificity) 公式 增加二元标签、形状、正类标签与 zero_division 契约;另提供 sklearn scorer tests/unit/test_metrics.py::test_specificity_and_gmean_have_exact_binary_semantics 及相关非法输入测试
H legacy/metrics/coverage.py::weighted_coverage D src/class_imbalance/operating_points.py::competition_weighted_tpr;D 兼容入口 src/class_imbalance/metrics.py::weighted_coverage 保留原目标 FPR、权重、最近 ROC 点和历史 drop_intermediate 口径 自定义参数显式校验;插值仅为显式兼容选项;与业务 FPR ceiling 分开 tests/unit/test_operating_points.py::test_competition_metric_reproduces_historical_drop_intermediate_semantics 及 nearest-point 测试
H legacy/weighting/scale_pos_weight.py 中的 ratio 表达式与 get_weight;同义逻辑见 weight_performance.py D src/class_imbalance/rebalancing.py::class_imbalance_ratiosample_weight_from_costs 保留负/正样本比与“正类对应 FN cost、负类对应 FP cost”的映射 删除 import-time 训练、捕获式 y_train 默认值和隐式模型;增加标签与正成本校验 tests/unit/test_rebalancing.py
H legacy/sampling/oversampling_contrast.py::over_sample D src/class_imbalance/sampling.py::make_oversamplerresample_training_data 保留 RandomOverSampler、SMOTE、Borderline-SMOTE、ADASYN 与 SVM-SMOTE 的方法选择路径 使用当前 imbalanced-learn 公共类;保留历史拼写为兼容别名;删除 import-time 实验和 Original no-op;强制训练集边界 tests/unit/test_sampling.pytests/integration/test_sklearn_pipeline.py
Q(目标当前树排除、Git 历史保留)legacy/cost-sensitive-learning/AdaCost.pylegacy/ensemble-methods/AdaCost/adacost.pyAdaCost.ipynb N src/class_imbalance/experimental/adacost.py::adacost_beta 现代 helper 仅参考 FN/FP/correct 三类因子的研究问题 不继承旧 estimator,不依赖 sklearn 私有 boosting API,不声称 estimator parity;历史来源许可未清前不得标为 D tests/unit/test_adacost.py;experimental,待来源复核后再决定是否重分类

明确属于 N 的首批工程层

以下内容没有对应的历史稳定实现,属于 2026 年新增工程能力:

  • src/class_imbalance/_validation.py 的 fail-closed 校验;
  • operating_point_at_fpr_caprecall_at_fpr_capOperatingPoint,用于可实现的业务 FPR ceiling,而不是历史竞赛 metric;
  • average_misclassification_costbinary_cross_entropybinary_focal_lossfocal_modulation_factor
  • tests/ 下的 unit、contract、integration、scenario 测试;
  • pyproject.toml、构建/仓库检查脚本、合成示例和只测试不发布的 CI。

维护流程

每次新增 D 映射时,按以下顺序更新:

  1. 确认来源是 H,而不是 Q 或第三方代码。
  2. 记录精确的历史路径和符号;必要时附原 commit/blob。
  3. 先补 characterization 或 golden test,锁定需要保留的语义。
  4. 记录现代实现刻意改变的参数、边界、依赖和业务假设。
  5. 只做函数级、小步适配;现代代码不得运行时导入 legacy/
  6. 同步本页、legacy/MANIFEST.md 与对应 API docstring。

如果来源证据后来推翻原分类,应直接修正 H/D/N/Q,不为先前标签辩护。