v2.0 · 数据实验室

把选择题
拆开看看
里面

一个研究"4 选 1 到底有没有规律"的小项目。 36 套真题 · 5 个模型 · 11 条规则 — 跨考试时期验证。 跑完了老实告诉你: 别指望靠这个蒙题过六级

数据驱动 · 开源 · MIT
领域

目前攒了这些

每个领域都是独立配置 + 独立数据 — 想加第四个, 在 exams.json 加一条就行, 代码不用动。

加载中…

读注册表

数字

现在能告诉你的事

跨时期严格切分, 数字能信就信, 不能信的我会标出来。

加载中…
方法论

为啥要跨时期切

这是整个项目最关键的 1 步, 不搞清楚就别看后面的数字。点击展开看细节。

不公平。CET-6 在 2014 / 2016 / 2020 改过三次题, 题型结构都不一样。如果用 2010 的题训练、再用 2010 的题测, 模型只要记住"那年出题老师喜欢什么", 就能把 AUC 飙到 0.6+ — 看着漂亮, 其实是 过拟合历史

我们改成: Era 4 (2020-2025) 训练 → Era 1+2 (2010-2015) 测试。这种切法比 K-Fold 更狠, 也更接近真实预测场景。代价是数字难看 — 跨时期后真实 AUC ≈ 0.537, 接近瞎蒙的 0.5。

不够。36 套里只有 695 道是"4 个选项都完整"的题。对 ML 训练来说样本偏小, 这就是 Stacking 集成 AUC 才 0.537 的根本原因 — 不是模型不行, 是数据不够。

CET-6 真题版权不开放, 公开渠道基本只有回忆版。能用上的都用了, 后续要扩展只能等公开历史卷。

有出处。全是流传在考生圈 / 教辅书里的"老经验" — 比如"末位 25/55 选 D"、"3 长 1 短选最短"、"听力 5/10/15/20 不选 C"。我们把它们写成代码、在数据上跑, 看看哪些真有效、哪些是玄学。

结果: 大部分规则在测试集上比瞎蒙高 2-5 个百分点, 但每条都有 跨时期衰减 (decay < 0) — 过去灵, 现在就没那么灵。详细数据在 CET-6 详情页

不证明蒙题是合理策略。真实备考请老老实实背单词练听力。

这个仓库只适合三件事: 数据科学方法的演示、跨时期分布偏移的实证、ML 模型在 4 选项离散选择上的过拟合研究。如果你想找"必过六级的捷径", 这儿没有。

技术栈

用的

前端纯静态, 不挑 CDN, 国内直接打开。

  • HTML + CSS + 原生 JS — 不上 Vite 不上 React, 四个 JS 文件搞定全站
  • 字体: 思源黑体 / 思源宋体 + 系统降级链, 国内系统自带
  • 布局: clamp() 流式字号 + 自适应 grid, 320px-1920px 通吃
  • 响应式: 三个断点 (480 / 640 / 768), 触摸目标 ≥ 44px
  • 图表: 纯 SVG 自绘, 不引第三方库, 0 KB 依赖
  • 动画: IntersectionObserver 滚动揭示 + CSS keyframes + count-up 数字滚动
  • data/_meta/exams.json — 考试注册表, 加领域只改这里
  • data/<exam_id>/config.json — 单个考试的所有数据 (规则/模型/审计/统计)
  • scripts/validate-data.py — CI 校验, schema 错就 build 失败
  • scripts/ 在 Jekyll exclude 里, 不污染站点
  • LightGBM / CatBoost / RandomForest / XGBoost / LogisticRegression
  • Stacking 集成 (Meta LR)
  • 11 条规则投票系统
  • 跨 Era 验证, 贝叶斯平滑

方法细节: 跨 Era 切分训练/测试, 贝叶斯平滑防过拟合, 5 模型投票 + 11 规则过滤。