往 204 条真实前置边里注入 51 条已知为假的边, 合成不同规模的学习者队列,看检出率与误报率随规模怎么变。 真相已知,所以能同时测出「抓得到吗」和「会不会冤枉好边」。
从 30 人加到 500 人,检出率始终在 4% 上下。瓶颈不是样本量 —— 是判定用的统计量本身分不开真假边。
| 学习者 | 可判定 | 假边检出 | 检出率 | 假边被判 supported | 假边 c 行比例 | 真边 c 行比例 |
|---|---|---|---|---|---|---|
| 30 | 31% | 1 / 51 | 2% | 5 | 0.177 | 0.011 |
| 60 | 71% | 0 / 51 | 0% | 19 | 0.105 | 0.016 |
| 120 | 81% | 2 / 51 | 4% | 19 | 0.147 | 0.013 |
| 250 | 84% | 0 / 51 | 0% | 21 | 0.130 | 0.015 |
| 500 | 91% | 1 / 51 | 2% | 31 | 0.100 | 0.010 |
这不是模拟的问题,是判据的问题。
我先怀疑过两个别的原因,都排除了:把学习者能力差异压到零,检出率不变; 把每节点作答次数从 3 次加到 15 次,检出率仍是 0。 真正的原因是判据落在数据到不了的区间。
placebo_band() 拿本体判定无关的节点对跑同样的检验,得出「无关时能跑出多少」,那才是真实的判据门槛。两个模块解决的是同一类问题,先建的那个还没有这道防护。