模型评估:好模型怎么量化
训练完模型,第一句话一定是「它到底行不行」——这就要靠评估。这个页面把评估的核心件全摆上桌:先生成带标签数据并训练一个小逻辑回归,然后拖动阈值滑块,混淆矩阵、四项指标、ROC 曲线上的小红点会一起动;再跑一次 5 折交叉验证,看「平均值」和「波动」分别告诉你什么。看完这一页,你就掌握了读后面所有演示页指标的语言。
ROC 曲线(越贴左上角越好)
粉色圆点 = 当前阈值在 ROC 上的位置;对角虚线 = 随机猜测的水平线。
5 折交叉验证 · 每折准确率
控制台
混淆矩阵(F1 = —)
拖动阈值:调高 → 更挑剔,精确率升、召回率降;调低则相反。精确率和召回率永远在互相拉扯。
交叉验证怎么读
5 折交叉验证把数据分成 5 份:每次拿 4 份训练、剩下 1 份考试,轮流 5 次。五折准确率的均值代表模型水平,波动代表它稳不稳——柱子参差不齐说明模型对数据划分很敏感。点上面的按钮现场跑一次(每折都会真的重新训练一个小逻辑回归)。
原理:从混淆矩阵到 ROC
二分类把每个样本的结局分成四种:TP(真是正、判成正)、FN(真是正、判成负)、FP(真是负、判成正)、TN(真是负、判成负)。所有指标都是这四个数的组合:
Accuracy = (TP+TN)/总数 , Precision = TP/(TP+FP) , Recall = TP/(TP+FN)
F1 = 2·Precision·Recall/(Precision+Recall)
四个指标的「性格」与记忆法
- Accuracy 看整体。分母是全部样本。它的盲区是类别不平衡:99 个负样本 + 1 个正样本时,全猜负也有 99% 准确率——所以不平衡场景必须看下面两个。
- Precision 管「误报」。分母是「被你判成正的全部」:判成正的样本里有多少真的是正。垃圾邮件过滤要高精度——宁可漏掉一封垃圾邮件,也别把正常邮件扔进垃圾箱。
- Recall 管「漏报」。分母是「真正的正类全体」:实际为正的样本里有多少被找了出来。癌症筛查要高召回——宁可复查一遍,也别放走一个病人。
- F1 是调和平均。调和平均的特点是「谁小听谁的」:Precision=1.0、Recall=0.02 时 F1 只有 0.04,不会像算术平均那样给出虚高的 0.51。
ROC 与 AUC:跳过阈值的整体评分
换成「随机模型」「完美模型」各跑一遍:ROC 曲线把所有阈值下的(假正率 FPR=FP/(FP+TN),真正率 TPR=TP/(TP+FN))连成一条线——每个阈值一个点,扫出来就是曲线。AUC 是曲线下面积:0.5 等于瞎猜(贴对角线),1.0 是完美(贴左上角),0.5~1 之间越大越好。它的统计含义是:随机抽一个正样本和一个负样本,模型给正样本打分更高的概率。
交叉验证:别被一次划分骗到
5 折交叉验证把数据切成 5 份,轮流拿 4 份训练、1 份考试,得到 5 个准确率:均值代表模型水平,标准差代表它对数据划分的敏感度。方差大说明要么数据太少、要么模型不稳定——这时单次评估的分数再漂亮也别信。点上面的「运行 5 折交叉验证」,五根柱子几乎不可能一样高,这就是为什么要交叉验证。
经典陷阱清单
- 在测试集上调参。测试集只能用一次;反复用它在模型间挑挑拣拣,它就悄悄变成了训练集——要用验证集或交叉验证调参。
- 先标准化再划分数据。如果先在全部数据上算均值方差再划分,测试集的信息就泄漏进了预处理——正确顺序是先划分、只用训练集拟合标准化参数。
- 只报 Accuracy 不报阈值和类别分布。同一个模型阈值 0.3 与 0.7 的 Precision/Recall 组合完全不同,不写阈值和数据的指标没有意义。
知识点拆解:把评估学扎实
分母决定性格
四个指标的分母各不相同:Accuracy 分母是全体、Precision 分母是「判正」、Recall 分母是「真」。记住分母,公式永远不会背混。
对应演示:拖动阈值看四格数字联动P-R 拉扯是物理规律
阈值升高 → 判正变少 → Precision 升、Recall 降;降下来则相反。没有「两个都高」的免费午餐,只有按业务代价选择的平衡点。
对应演示:阈值滑块 0.3 vs 0.7ROC 一个点 vs 一条线
混淆矩阵给出的是「某个阈值下」的成绩;ROC 扫过全部阈值,AUC 汇总成一个数。汇报模型能力时用 AUC,上线定阈值时再看单点指标。
对应演示:切三种模型质量看 AUC评估方法比指标本身更重要
数据泄漏、重复用测试集、划分有偏——方法错了,指标再好看也是自欺。交叉验证的均值 ± 波动才是可信的成绩单。
对应演示:单次成绩 vs 五折柱状图- TP/FP/FN/TN — 预测×真实的四种结局
- FPR — 假正率:负类被误判的比例
- AUC — 正样本得分高于负样本的概率
- K 折交叉验证 — 轮流留出 1/K 做验证
- 留一法(LOO) — K=N 的极限交叉验证
- 数据泄漏 — 测试信息混入训练过程
期末高频问答
- 为什么类别不平衡时 Accuracy 会骗人?想象 99:1 的数据,模型全猜多数类就有 99% 准确率,但一个正类都没抓到。此时 Precision/Recall/F1(只围绕少数类)才能反映真实水平。
- AUC=0.5 说明什么?低于 0.5 呢?0.5 等于随机猜测;低于 0.5 说明模型把两类「学反了」——把预测取反通常能变好,先检查标签有没有接错。
- 阈值一定取 0.5 吗?不一定。0.5 只是 Sigmoid 的默认对称点;业务代价不对称时应移动阈值——比如漏报代价高就把阈值调低换召回。