海边住着一位老渔夫,他从不靠“今天感觉不错”来评判自己的捕鱼水平。每天收网后,他都在账本上记下四个数:网里有多少条真正的鱼、有多少被误捞上来的海草和旧靴子、海里还有多少鱼因为网眼太粗而溜走、又有多少杂物安安静静地留在海底。就靠这四个数,他能清醒地回答三个问题:我捕得好不好?该把网眼收紧一点去追求纯度,还是放松一点去追求渔获?这张网到底值不值得换一张更好的?AI 工程师训练出分类模型后,面对的是同一个困境——模型把样本分成“正类”和“负类”,但怎么知道它分得好不好?答案就藏在那本渔夫账本里:把预测和真实两两对照得到混淆矩阵,再从中提炼出准确率、精确率、召回率、F1 分数、ROC 曲线与 AUC。这一章,我们就沿着渔夫的账本,把分类评估的整张地图走一遍。
分类指标是模型评估与选择的“体检报告”。掌握它们,你才能从众多候选模型中挑出真正可靠的那一个,而不是被一两个漂亮的数字误导。
可视化演示
展示系统处理流水线、实时性能指标曲线及多方案对比分析,包含数据流转、吞吐延迟监控与方案评估。
本节配有交互动效(进入视口后自动加载,约 3KB)。
系统可视化 处理流程:输入→处理→模型→输出 性能监控:实时指标 P=L×T
评估指标概览
老渔夫有个雷打不动的习惯:每天收网后,他先把渔获倒在甲板上分门别类数一遍——网里的真鱼、网里的杂物、漏网的鱼、留在海底的杂物,四个数整整齐齐记进账本。邻居笑他多此一举,可正是这本账本,让他知道自己的网到底好不好用。AI 模型评估也是这个道理:光凭“感觉还行”,永远无法回答“模型到底行不行”。
一个二分类模型拿到测试集后,会对每个样本输出一个预测类别;而测试集的每个样本本来就带着真实标签。把“预测”和“真实”两两对照,任何一个样本都必然落入四种情况之一:真实为正且预测为正(TP)、真实为负但预测为正(FP)、真实为正但预测为负(FN)、真实为负且预测为负(TN)。这四个数,就是渔夫账本上的四笔账。
分类评估的一切指标,说到底都是这四个数的加减乘除。混淆矩阵是把四个数摆成表格;准确率、精确率、召回率、F1 是它们的各种比例;ROC 与 AUC 则是让“预测阈值”滑动,把不同阈值下的两组比例连成曲线。先记住总账公式:
有了这本账本,渔夫再也不必凭运气猜自己的水平;同理,AI 工程师拿到这四个数,才算拿到了评估模型的入场券。接下来所有的指标,都是从这张账本里长出来的枝叶——看不懂账本,就看不懂任何分数。
- N测试集中样本总数,即本次评估要审查的全部“渔获与海面”。
- TP真正例,实际为正且预测为正,相当于“真鱼入了网”。
- FP假正例,实际为负但预测为正,相当于“杂物被当鱼捞起”。
- FN假负例,实际为正但预测为负,相当于“真鱼漏了网”。
- TN真负例,实际为负且预测为负,相当于“杂物留在海底没被惊动”。
混淆矩阵
老渔夫发现,光记四个数还不够直观,于是他找来一块木板刻成两行两列的方格,把四笔账分别填进去:上面一行代表“海里的真实情况”,左边一列代表“网里捞上来的种类”。这样一眼扫过去,哪儿对哪儿错清清楚楚。这个方格,在机器学习里就叫混淆矩阵(Confusion Matrix)。
矩阵的行通常表示真实类别,列表示预测类别。第一行是“实际为正”的全部样本,它们被模型分成两半:预测为正的进了 TP 格,预测为负的进了 FN 格;第二行是“实际为负”的样本,预测为正的进了 FP 格,预测为负的进了 TN 格。写成矩阵就是:
渔夫的木板方格一眼就暴露了问题:如果 FN 那格越来越大,说明网眼太松,鱼都跑了;如果 FP 那格越来越大,说明网眼太紧,专捞杂物。混淆矩阵不直接给分数,但它是一切指标的源头——看不懂这四格,后面所有公式都只是空中楼阁。
- 第一行实际为正类的全部样本,对应“海里真正的鱼”,数量等于 TP 加 FN。
- 第二行实际为负类的全部样本,对应“海底的杂物”,数量等于 FP 加 TN。
- 主对角线预测与真实一致的格子,即 TP 与 TN,是“账目对得上的部分”。
- 副对角线预测与真实相反的格子,即 FP 与 FN,是“闹乌龙的部分”。
准确率评估
渔夫最开始想:评估捕鱼水平,最直观的办法不就是数数一共做对了多少件事吗?捞到真鱼算对,没捞杂物也算对,对的数量除以全天撒网的次数,就是“准确率”。这个思路简单直接,也是很多新手最先接触的指标。
准确率的定义是:猜对的样本数除以总样本数。猜对的是 TP 与 TN,其余都是猜错:
但渔夫很快发现一个陷阱:如果家门口这片海域几乎没鱼,海底全是石头和碎屑,他干脆不下网整天躺着,把所有样本都“预测”成杂物——那么 TN 占了绝大部分,FN 只有零星几条鱼,准确率照样轻松超过 99%。账本上很好看,可他一斤鱼都卖不出去。这就是类别不平衡下的准确率误导:当正类样本极少时,模型只要无脑预测多数类,就能刷出高准确率。
渔夫恍然大悟:准确率只是个总账,它把“捞到鱼”和“避开杂物”混在一起算总分,掩盖了真正的短板。从那以后,他再也不只看这一个数了——他要分开看:捞上来的东西里鱼占多少?海里的鱼被捞回多少?这正是下一节要讲的精确率与召回率。
- 分子 TP 加 TN所有被猜对的样本——真鱼入网与杂物留海,都是正确操作。
- 分母四个数之和全部测试样本,即账本上四笔账的总和。
- 整体比值猜对的比例,范围 0 到 1,越接近 1 越好。
精确率与召回率
渔夫把账本换了个视角,问两个完全不同的问题。第一个问题:今天捞上来的这堆东西里,真鱼占几成?如果捞上来十条有八条是鱼,说明网眼挑得准——这叫精确率。第二个问题:今天海里本来有十条鱼,我捞回来几条?如果十条捞回八条,说明这张网捕得全——这叫召回率。
写成公式,两者分子都是 TP,区别在分母。精确率的分母是“所有被预测为正的样本”(TP+FP),召回率的分母是“所有真实为正的样本”(TP+FN):
渔夫试了几次网眼,发现一个扎心的规律:网眼收紧,杂物进得少了,精确率飙升,可鱼也漏得多,召回率惨不忍睹;网眼放松,鱼是捞得多了,海草靴子也跟着进网,精确率又跌下去。两个指标像跷跷板的两端,此消彼长。这正是它们不能单独使用的根本原因——只看精确率,渔夫可能只捞一条鱼充数;只看召回率,他可能把整片海都刮一遍。
渔夫从此把这两个数一起记账:一个是“捞得准”,一个是“捞得到”。可问题又来了:两个数一起看时,到底怎么比较两张网的好坏?一张网精确率 0.9 召回率 0.2,另一张 0.6 和 0.6,谁更值得用?他需要一个能同时压住两头的综合分——这便是 F1 分数登场的理由。
- 共同分子 TP被正确捞起的真鱼,两个指标都从“做对的正例”出发。
- 精确率分母 TP 加 FP网里捞到的一切,包括鱼和杂物;比值反映“网中鱼的纯度”。
- 召回率分母 TP 加 FN海里原本所有的鱼,包括捞到与漏掉的;比值反映“鱼群的捕获比例”。
F1分数
渔夫想要一个数,既惩罚“捞得不准”,也惩罚“漏得太多”。有邻居建议:不就是平均分嘛,把精确率和召回率加起来除以二。渔夫摇摇头:如果一张网精确率 1.0、召回率 0,算术平均还有 0.5,可它一条鱼都没捞上来,这 0.5 分明是虚高。
渔夫最终采用了调和平均,它对“一头高一头低”的情况格外严厉。F1 分数定义为精确率与召回率的调和平均:
用渔夫的数据验证:精确率 0.667、召回率 0.6 时,F1 约为 0.632,与算术平均 0.634 几乎持平——因为这两个数本身并不悬殊。真正的差距体现在极端场景:P=1.0、R=0 时,F1 直接归零,而算术平均仍给 0.5。这就是调和平均的“不偏科”哲学:一个指标接近 0,综合分绝不给你留情面。
F1 成了渔夫最常用的“一张网的总评分”。但他不满足于此:F1 虽然综合,却依赖一个具体的网眼大小;假如今天收紧网眼、明天放松网眼,同一个模型就会得到截然不同的 P、R、F1。有没有一种评估能抛开网眼大小,纯粹评价“这张网本身设计得好不好”?这就要看 ROC 曲线与 AUC 了。
- 分子 2 乘 P 乘 R精确率与召回率的乘积乘 2,相当于给“共同表现”加了倍。
- 分母 P 加 R两者之和作为归一化基准,确保 F1 落在 0 到 1 之间。
- 整体是调和平均的变形等价于 2 除以(1/P 加 1/R),对两个数取“倒数的平均再取倒数”。
ROC与AUC
渔夫终于动了“换网”的念头:他想比较两张不同设计的网,但每张网都能调松紧,拿“某个松紧度下的表现”来比显然不公平——甲网在紧的时候很准,乙网在松的时候很全,到底谁更好?他需要一个与网眼大小无关的“网设计评分”。
于是渔夫对每张网做了一次完整的“松紧扫描”:把网眼从最紧(阈值最高,只捞最有把握的鱼)一路放松到最松(阈值最低,什么都捞)。在每个松紧度下记录两个比值——真正例率 TPR(捞回来的鱼占所有鱼的比,其实就是召回率)和假正例率 FPR(捞上来的杂物占所有杂物的比):
把扫描得到的(FPR, TPR)点依次连起来,就是 ROC 曲线:横轴 FPR,纵轴 TPR。一张完美的网会从原点笔直向上再水平向右(TPR 先到 1,FPR 一直是 0);一张瞎捞的网会贴着对角线上行(捞到鱼和捞到杂物的概率一样)。而 ROC 曲线下的面积,就是大名鼎鼎的 AUC。AUC 在 0 到 1 之间,越接近 1,说明这张网在任意松紧度下都把鱼排在了杂物前面——即“排序能力”越强。
AUC 还藏着一个等价解释:随机抽一条真鱼和一块真杂物,模型给真鱼的打分更高的概率就等于 AUC。渔夫恍然大悟:原来 AUC 评的是网的设计智慧——鱼和杂物哪怕长得再像,好设计的网总能按“像鱼的程度”把它们排好;至于在哪一格收紧下网,那是阈值的事,跟网本身无关。这也是 AUC 最迷人的地方:与阈值无关。
- TPR 分子 TP被正确捞起的鱼,分母 TP 加 FN 是海里所有的鱼。
- FPR 分子 FP被误捞的杂物,分母 FP 加 TN 是海底所有的杂物。
- 阈值滑动网眼从紧到松,TPR 与 FPR 同步从 0 爬到 1,形成一条轨迹。
组合评估策略
渔夫把学到的指标记了一整页,却发现一个道理:没有哪个指标是通吃所有场景的万能钥匙。开寿司店的老板要精确率——杂物绝不能卖上桌,哪怕少捞几条鱼;做渔业批发的则要召回率——鱼要尽量都捞上来,混点杂物回头再挑也不迟。用途不同,好坏的标尺就不同。
机器学习里的场景取舍一模一样:垃圾邮件过滤中,把正常邮件误判为垃圾邮件(FP)的代价极高,所以要盯紧精确率;医疗筛查中,漏掉一个病人(FN)可能酿成悲剧,所以召回率优先;而在类别极度不平衡(比如一万条交易里只有一条欺诈)的场景,准确率早已失效,必须回到混淆矩阵,配合 F1 和 AUC 一起诊断。
当处理多分类问题时,指标还可以按类别先分别计算再汇总,常用的有宏平均(对所有类别的 F1 取简单平均):
渔夫终于凑齐了整套评估装备:先看混淆矩阵,摸清四格账目;再看准确率,提防类别不平衡的假象;然后用精确率、召回率、F1 衡量当前阈值下的质量与数量;最后用 ROC 与 AUC 跳出阈值,评估模型的底层排序能力。四层组合、层层交叉印证——就像渔夫既看单日渔获,也看整季趋势,还看网具设计,这才叫真正的“科学捕鱼”。
- n类别总数,比如猫、狗、兔三分类时 n 等于 3。
- F1 上标 i第 i 个类别单独计算的 F1 分数。
- 求和取平均把所有类别的 F1 加起来除以类别数,得到平等的综合分。
AI 应用场景
垃圾邮件过滤:精确率是生死线
阶段:模型评估与上线决策
解决的问题:传统规则引擎靠关键词拦截垃圾邮件,误杀率高,把银行通知、合同邮件丢进垃圾箱,用户投诉不断。引入分类模型后,用精确率作为核心指标评估——精确率衡量“被判为垃圾邮件的邮件里,真正是垃圾的比例”,直接对应“误杀率”;只有精确率达标,模型才被允许上线。
具体案例:某企业邮箱团队训练了垃圾邮件二分类模型,初始模型召回率 98%,但精确率只有 82%,意味着每 100 封被拦截的邮件里有 18 封是重要信件。团队通过调整阈值、补充正常邮件样本,把精确率提升到 97%,虽然召回率回落到 93%,但用户投诉下降了 90%。
医疗影像筛查:召回率关系生命
阶段:模型评估与临床辅助决策
解决的问题:肺结节 CT 筛查中,漏诊(把结节识别为正常)的代价远高于误报——误报顶多多做一次复查,漏诊却可能耽误病情。因此评估模型时,召回率(所有真实结节中被找出的比例)是第一优先级,宁可让医生多复核几个疑似样本。
具体案例:某三甲医院引入 AI 辅助阅片系统,用 5000 例带标注 CT 影像评估:模型的 AUC 达 0.93,在召回率 95% 的阈值下,每 100 个真实结节能找出 95 个,医生只需复核少量假阳性切片,阅片效率提升 40%。
欺诈交易检测:组合指标对抗强不平衡
阶段:模型评估与风控策略调优
解决的问题:信用卡交易中欺诈样本占比通常不足 0.1%,准确率几乎失去意义——把所有交易判为正常也能拿到 99.9% 准确率。风控团队必须用混淆矩阵、精确率/召回率与 AUC 组合评估,才能看清模型在“极少数”欺诈样本上的真实表现。
具体案例:某支付平台对近 1000 万笔交易做欺诈检测评估,显示准确率 99.95%,但混淆矩阵揭示:欺诈样本召回率仅 31%。团队改用 F1 与 AUC 作为主指标,迭代特征工程后 AUC 从 0.82 提升到 0.90,召回率升至 78%,挽回了大量潜在资金损失。
Python 演示
# 手写分类评估指标: 混淆矩阵, 准确率, 精确率, 召回率, F1, AUC def confusion_matrix(y_true, y_pred): tp = fp = fn = tn = 0 for yt, yp in zip(y_true, y_pred): if yp == 1 and yt == 1: tp += 1 elif yp == 1 and yt == 0: fp += 1 elif yp == 0 and yt == 1: fn += 1 else: tn += 1 return tp, fp, fn, tn def accuracy(y_true, y_pred): tp, fp, fn, tn = confusion_matrix(y_true, y_pred) return (tp + tn) / len(y_true) def precision(y_true, y_pred): tp, fp, _, _ = confusion_matrix(y_true, y_pred) return tp / (tp + fp) def recall(y_true, y_pred): tp, _, fn, _ = confusion_matrix(y_true, y_pred) return tp / (tp + fn) def f1_score(y_true, y_pred): p = precision(y_true, y_pred) r = recall(y_true, y_pred) return 2 * p * r / (p + r) def roc_auc(y_true, y_score): pairs = sorted(zip(y_score, y_true), key=lambda x: -x[0]) pos = sum(y_true) neg = len(y_true) - pos tpr_list = [0.0] fpr_list = [0.0] tp = fp = 0 for i in range(len(pairs)): if pairs[i][1] == 1: tp += 1 else: fp += 1 if i + 1 == len(pairs) or pairs[i][0] != pairs[i + 1][0]: tpr_list.append(tp / pos) fpr_list.append(fp / neg) auc = 0.0 for i in range(1, len(fpr_list)): auc += (fpr_list[i] - fpr_list[i - 1]) * (tpr_list[i] + tpr_list[i - 1]) / 2 return auc def main(): y_true = [1, 0, 1, 1, 0, 1, 0, 0, 1, 0] y_pred = [1, 0, 1, 0, 0, 1, 1, 0, 1, 0] y_score = [0.9, 0.3, 0.8, 0.4, 0.2, 0.7, 0.6, 0.1, 0.85, 0.35] tp, fp, fn, tn = confusion_matrix(y_true, y_pred) print("Confusion Matrix: TP=%d FP=%d FN=%d TN=%d" % (tp, fp, fn, tn)) print("Accuracy=%.3f" % accuracy(y_true, y_pred)) print("Precision=%.3f" % precision(y_true, y_pred)) print("Recall=%.3f" % recall(y_true, y_pred)) print("F1=%.3f" % f1_score(y_true, y_pred)) print("AUC=%.3f" % roc_auc(y_true, y_score)) if __name__ == "__main__": main()
tp, fp, fn, tn = confusion_matrix(y_true, y_pred)一行拿到账本四格,后续所有指标都从这里开始。return (tp + tn) / len(y_true)准确率:猜对的总数除以全体样本。return tp / (tp + fp)精确率:网中真鱼占渔获总量的比例。return tp / (tp + fn)召回率:海中真鱼被捞回的比例。return 2 * p * r / (p + r)F1:精确率与召回率的调和平均。pairs = sorted(zip(y_score, y_true), key=lambda x: -x[0])按模型打分从高到低排序,模拟阈值从紧到松的滑动过程。auc += (fpr_list[i] - fpr_list[i - 1]) * (tpr_list[i] + tpr_list[i - 1]) / 2梯形法求 ROC 曲线下的面积,即 AUC。
常见误区
误区我的模型在测试集上准确率高达 99%,老板却说这个模型不能用,他一定是不懂 AI。
正解当类别严重不平衡时,准确率会沦为“多数类的传声筒”。就像渔夫家门口的海里 99% 是石头,他整天躺着不下网,账本上一样有 99% 的“准确率”。准确率只告诉你“整体猜对的比例”,却把鱼和杂物混在一起算,掩盖了模型对少数类几乎无能的真相。必须翻开混淆矩阵,看 TP/FP/FN/TN 各自的数量。
为何常见:准确率最符合日常直觉,计算也最简单,新手容易把“高准确率”直接等同于“好模型”,忽略了它在不平衡数据上的系统性偏差。
误区精确率和召回率不都是“预测对的里面有多少真正对的”吗?我觉得这俩是同一个指标换了个名字。
正解两者分子相同,分母截然不同。精确率问“捞上来的这堆东西里鱼占几成”(分母 TP 加 FP),召回率问“海里本来有的鱼捞回几成”(分母 TP 加 FN)。渔夫如果只想要一条鱼请客,精确率就得高;如果想把整个鱼塘清空,召回率才是关键。把两个概念混为一谈,在看业务报告时就会选错指标、做错决策。
为何常见:两个公式都长着 TP 开头的模样,只有分母最后一个字母的差别,初学者极易脸盲;不少科普文章又把它们笼统称为“查准率/查全率”,反而加深了混淆。
误区我算 F1 都是(P 加 R)除以 2,反正都是平均,结果差不多。
正解F1 用的是调和平均 2PR/(P+R),不是算术平均。二者的差别在指标失衡时才暴露:P=1.0、R=0 时,算术平均给 0.5,调和平均无情地给 0——因为一条鱼都没捞到,凭什么给你及格分?调和平均的初衷就是惩罚“偏科”,逼着模型在两个指标上同时用力。
为何常见:生活里说“平均分”几乎都指算术平均,很少有人接触倒数的平均,于是把 F1 想当然地套进熟悉的公式。
误区AUC 是个 0 到 1 的数,0.9 不就是模型有 90% 的正确率吗?那我直接报这个数不就行了。
正解AUC 是 ROC 曲线下的面积,它衡量的是“随机抽一个正样本和一个负样本,模型给正样本打分更高的概率”,本质是排序质量,与具体阈值下的对错无关。一个 AUC=0.9 的模型,在某个具体阈值下可能只有 60% 的准确率,因为阈值还没调好。AUC 评价的是“网的设计智慧”,准确率评价的是“今天这个松紧度下的渔获结果”,两者无法互相替代。
为何常见:0-1 的数值范围与百分比长得太像,大脑会下意识把 0.9 读成 90%;加上 AUC 常常在论文里被当作“性能好”的证据,更容易让人把它和“正确率”画上等号。
误区我已经看了 F1 和 AUC,都挺高,就不用再折腾混淆矩阵了,直接部署吧。
正解每个指标都只是账本的一个侧面:F1 反映当前阈值下的综合分,AUC 反映阈值无关的排序能力,但它们都无法告诉你“错误集中在哪一类”。比如欺诈检测里 F1=0.8 很漂亮,但混淆矩阵可能显示:模型把 90% 的欺诈样本都当成正常交易(召回率极低),只是把大量正常交易误判为欺诈才撑起了 F1。只有回到四格账本,才能定位问题出在 FN 还是 FP。
为何常见:指标越多越焦虑,人们本能地想抓一个“代表全局的数字”来简化决策,却忘了抽象分数恰恰会丢失最关键的细节。
面试题
Q1. 在类别极度不平衡的数据集上,“把所有样本都预测为多数类”往往能获得很高准确率,这说明了什么?
- A.准确率是可靠的衡量标准
- B.准确率被多数类主导且误导← 正确答案
- C.模型已经完美学会分类
- D.数据量太大导致过拟合
答案:B。准确率=猜对数/总数,当多数类占 99% 时,无脑预测多数类就能拿到 99% 的准确率,但对少数类一条都猜不中。就像渔夫不下网也能在“全是石头”的海域报告高准确率,所以准确率在不平衡场景下具有误导性。A 夸大了准确率的可靠性,C 与事实相反,D 与数据量并无关系。
Q2. 精确率为 0.8,召回率为 0.6,那么 F1 分数约等于多少?
- A.0.48
- B.0.70
- C.0.69← 正确答案
- D.0.73
答案:C。F1 = 2PR/(P+R) = 2×0.8×0.6/(0.8+0.6) = 0.96/1.4 ≈ 0.69。调和平均一定不高于算术平均(0.70),且当两者接近时二者也接近,故选 C。0.48 是乘积而非调和平均,0.70 是算术平均的约值,0.73 没有对应的算法。
Q3. 在混淆矩阵中,“假正例”(FP)指的是哪一类样本?
- A.实际为正类,被预测为负类的样本
- B.实际为负类,被预测为正类的样本← 正确答案
- C.实际为正类,被预测为正类的样本
- D.实际为负类,被预测为负类的样本
答案:B。FP 的“假”指预测结果是假的——预测它为正,但它实际不是正类,相当于渔夫把杂物当鱼捞了上来。A 是假负例 FN,C 是真正例 TP,D 是真负例 TN。记住“预测对不对看前一个词,真实标签看后一个词”最容易区分四格。
Q4. 垃圾邮件过滤场景中,把正常邮件误判为垃圾邮件(FP)的代价很高,此时最应关注哪个指标?
- A.精确率指标← 正确答案
- B.召回率指标
- C.准确率指标
- D.AUC指标
答案:A。FP 增多会直接拉低精确率,因为精确率=TP/(TP+FP)。把正类“垃圾邮件”中混进正常邮件,就相当于渔网里捞上来一堆杂物,污染了渔获。召回率管的是漏网的正类,与 FP 无关;准确率会被多数类稀释;AUC 是排序质量的全局评估,不直接反映 FP 的代价。
Q5. 召回率(Recall)的正确解释是:
- A.网中鱼占所有网获物的比例
- B.海中鱼被捞上来的比例← 正确答案
- C.所有样本被猜对的比例
- D.预测正类中真实正类的比例
答案:B。召回率=TP/(TP+FN),分母是真实为正的全部样本,回答“该抓的鱼抓到了几成”。A 与 D 描述的都是精确率,C 是准确率。渔夫清塘时要看召回率,因为他在乎的是海里的鱼有没有被捞干净,而不是渔获里混了多少杂物。
Q6. 关于 F1 分数采用调和平均而非算术平均,下列说法正确的是:
- A.调和平均更容易偏向较大的数
- B.调和平均在两者悬殊时惩罚更重← 正确答案
- C.调和平均总是大于算术平均
- D.调和平均完全忽略精确率
答案:B。调和平均对“偏科”极不宽容,P=1、R=0 时 F1=0,而算术平均给 0.5。这意味着模型必须同时兼顾精确率与召回率,不能靠一个指标拉分。A 说反了,调和平均偏向较小的数;C 说反了,调和平均总是不大于算术平均;D 完全错误。
Q7. ROC 曲线的横轴和纵轴分别是什么?
- A.横轴精确率,纵轴召回率
- B.横轴召回率,纵轴精确率
- C.横轴FPR,纵轴TPR← 正确答案
- D.横轴TPR,纵轴FPR
答案:C。ROC 曲线以假正例率 FPR 为横轴、真正例率 TPR 为纵轴,是阈值从紧到松扫描时两个“率”的轨迹。渔夫放松网眼时,TPR 与 FPR 同时上升,曲线向右上方延伸。A、B 描述的是 PR 曲线,D 把横纵轴对调了。
Q8. 关于 AUC 的描述,正确的有哪几个?
- A.AUC是ROC曲线下方的面积← 正确答案
- B.AUC与分类阈值的选择无关← 正确答案
- C.AUC为0.9代表九成样本分类正确
- D.AUC衡量模型对正负样本的排序能力← 正确答案
答案:ABD。AUC 是 ROC 曲线下面积,由阈值遍历积分而来,与“选哪个阈值”无关,因此 B 正确;它衡量随机正样本得分高于随机负样本的概率,即排序能力,D 正确。C 的错误在于把 AUC 等同于正确率——0.9 的 AUC 不代表 90% 样本正确,好比网的设计再好,具体一次下网的渔获还要看网眼调得对不对。
Q9. 当模型把更多负类样本误判为正类(FP 增加)时,下列说法正确的有:
- A.精确率会下降← 正确答案
- B.召回率会下降
- C.F1分数也下降← 正确答案
- D.准确率一定上升
答案:AC。FP 增加使精确率分母 TP+FP 变大,精确率下降,A 正确;召回率分母是 TP+FN,与 FP 无关,B 错误;F1 随精确率下降而下降,C 正确;准确率分子里有 TN,FP 增加对应 TN 减少,准确率通常也下降而不是上升,D 错误。就像渔网捞上来的杂物越多,渔获纯度一定变差,但鱼群的捕获率不受影响。
Q10. 在类别严重不平衡的欺诈检测任务中,合理的评估策略包括哪些?
- A.只观察准确率指标就下结论
- B.组合使用混淆矩阵与精确召回率← 正确答案
- C.用ROC曲线与AUC评估排序能力← 正确答案
- D.把全部样本都预测为多数类
答案:BC。欺诈样本占比常不足 0.1%,准确率会被多数类主导,所以 A 不可取;组合使用混淆矩阵、精确率与召回率,能看清少数类上的真实表现,B 正确;ROC 与 AUC 与阈值无关,能稳健评估模型的排序能力,C 正确;D 是最差的基线策略——准确率高但一个欺诈都抓不到,相当于渔夫整天躺着不下网。