【零基础学AI】第 20 章——怎样判断模型是否可靠

发布时间:2026/11/1 1:46:48
【零基础学AI】第 20 章——怎样判断模型是否可靠 第 20 章 怎样判断模型是否可靠文章目录第 20 章 怎样判断模型是否可靠 关于《AI 零基础 36 讲》1. 训练、验证、测试各做什么2. 用基线判断改善有多大3. 回归指标落到价格误差4. 准确率可能漏掉你关心的错误5. 类别不平衡时看每类结果6. 过拟合与欠拟合怎样被观察7. 实际制造一次数据泄漏8. 运行与常见卡点9. 独立练习第 19 章的花卉模型答对 28/30。第 18 章的三特征价格模型平均绝对误差约为 3615.90。两个结果都可以复现但怎样知道它们是否值得继续用本章沿用前两章的数据和结果完成一次评估复核。你会拿到模型比较表、五折验证清单、两个信息筛选阈值的具体错误数以及一次把测试准确率从 52% 变成虚假 100% 的泄漏实验。请先完成第 18、19 章熟悉模型输入、标签、预测与误差。 关于《AI 零基础 36 讲》零基础也能开始学 AI《AI 零基础 36 讲》是一套面向初学者的 AI 入门教程。课程从认识和使用 AI 开始逐步学习Python、数据处理、机器学习与深度学习再进入大模型应用开发最后完成个人知识库助手的综合实践。本篇是正式讲解文章通过具体例子、原创图示和操作结果讲清概念。涉及编程的章节提供可运行代码方便你边读边试。读完以后动手检验建议按专栏顺序学习并完成对应的课后训练检查自己能否独立运用本章知识。博客专栏《AI 零基础 36 讲》1. 训练、验证、测试各做什么训练集用来拟合参数。验证集用来比较算法或参数设置帮助作出选择。测试集留到选择结束后用于检查最终方案。三者的区别与我们使用数据的方式有关同一份数据不会因为改了名字就突然恢复独立性。以本章花卉实验为例先保留原有的 120 条训练、30 条历史测试。模型比较只在 120 条训练部分内部进行。将这 120 条分成五份每次用其中四份训练剩下一份验证重复五次。这个方法叫五折交叉验证。每一折有 96 条训练、24 条验证五次结束后每条原训练记录都做过一次验证记录。五次验证分数取均值可以减少只看某一次切分造成的偶然影响。它也增加了训练次数本章数据很小CPU 可以很快完成。fromexamples.evaluation_coreimportevaluate_existing rows,manifestevaluate_existing()itemmanifest[iris_logistic]print(原训练与历史测试,len(item[outer_train_ids]),len(item[outer_test_ids]))forfoldinitem[folds]:print(fold[fold],len(fold[train_positions]),len(fold[validation_positions]),round(fold[score],4))第一行输出120 30后面五行中的两项数量都是96 24。具体编号和折内位置保存在划分清单。本章检查了每折训练与验证无交集五折的验证位置恰好覆盖原训练部分每个位置出现一次。标准化也要在每一折的 96 条训练行内重新拟合。将“已在全部 120 条拟合好的标准化结果”先交给交叉验证会使该折提前用到验证记录的信息。本章复制一个新的完整 Pipeline 后再训练每一折都有自己的标准化统计量。2. 用基线判断改善有多大基线是一个简单的对照方法帮助我们看清复杂模型增加了多少效果。本章分类基线总猜训练中的多数类别回归基线总猜训练价格均值。基线也要在每一折内重新学习不能提前读验证标签来决定常数。分类比较使用同一组五折四个候选分别为多数类基线、逻辑回归、一层决策树、完整决策树。决策树通过一系列特征判断把数据分成不同区域一层树只允许一次分叉。候选与五折种子在运行前固定没有根据历史测试分数继续调整。模型全部训练部分准确率五折验证均值五折标准差历史测试准确率多数类基线0.33330.33330.00000.3333逻辑回归0.95830.95830.04560.9333一层树0.66670.66670.00000.6667完整树1.00000.94170.03330.9333本次逻辑回归的验证均值最高比完整树高约 0.0167。可以把逻辑回归保留为当前教学项目的候选方案但这点差异没有经过显著性检验不能说它永远优于决策树。历史测试中两者分数一样本章的选择依据是训练部分内部的验证比较。标准差描述五个分数的分散程度。这里按五折分数自身计算没有把它解释成置信区间。五折训练数据彼此重叠五个分数也不能直接当作五次完全独立的试验。3. 回归指标落到价格误差回归输出连续数值。MAE 是平均绝对误差每条预测偏离真实值多少先取绝对值再求平均。第 18 章的手算题已经给过它的计算方法。RMSE 先平方误差、平均后开方更容易受到较大误差影响。两者都与目标值使用相同量纲。第 18 章原始资料没有明确价格币种本章仍写“原表价格数值”没有把 3615.90 改成元或美元。R² 比较平方误差与参照常数的差异衡量解释变化的程度可能为负它也无法告诉你一次错误在使用上是否能接受。将同一份汽车训练部分做五折评估结果如下。数值为实际运行后舍入。模型全训练部分 MAE五折验证 MAE 均值历史测试 MAE均值基线5023.325025.558316.00单特征回归2532.002549.744107.63三特征回归2111.842182.803615.90在这个固定数据范围内三特征模型的验证误差较小可以继续保留。第 18 章逐条表显示高价记录经常被低估。若一个历史数据练习只要求粗略比较平均误差可以帮助安排下一次实验若目标换成逐辆定价少数大幅低估也必须单独处理。当前数据与单位信息不足以支持现实交易决策。注意验证 MAE 比历史测试 MAE 小。不同子集的目标范围和样本构成会改变误差单凭这一个差距无法判定训练程序有错。应结合分布、逐条误差及实际采样方式继续查。比较表与完整精度见模型结果表。4. 准确率可能漏掉你关心的错误下面换成垃圾信息筛选。为了看清错误数量使用十条原创教学记录真实标签和模型概率都是人为设定没有声称训练了一个垃圾信息模型。标签 1 表示垃圾信息标签 0 表示正常信息。程序将“判为垃圾”称为正类预测。真实为垃圾且判为垃圾是 TP真实为正常却判为垃圾是 FP。FN 是漏过的垃圾信息TN 是保留下来的正常信息。指标计算方法本任务中的问题准确率正确条数 / 全部条数总体答对多少精确率TP / (TP FP)被拦的内容里有多少真是垃圾召回率TP / (TP FN)所有垃圾信息里拦住了多少F12 × 精确率 × 召回率 / 两者之和用一个数兼顾两项比例十条里有四条真实垃圾。阈值设为 0.5 时概率至少为 0.5 就判垃圾得到 TP 2、FP 1、FN 2、TN 5。准确率是 7/10精确率是 2/3召回率是 2/4。虽然答对七条仍然漏过一半垃圾信息。fromexamples.evaluation_coreimportthreshold_reportforthresholdin[0.5,0.25]:print(threshold_report(threshold))把阈值降为 0.25 后TP 变成 3FP 变成 3FN 为 1TN 为 3。召回率从 0.5 增到 0.75多拦住一条垃圾信息也多误拦两条正常信息精确率降到 0.5准确率降到 0.6。如果误拦正常信息的代价较高可能需要人工复核或更严格的阈值。若漏过垃圾信息更令人困扰较低阈值可以作为候选。决定仍应来自真实任务、验证数据和人工处理成本本章十个设定数值只用于看懂计算。F1 也没有写进哪类错误更贵得分较高未必符合使用要求。应先决定需要控制什么错误再挑指标。训练一个实际模型时在验证集选择阈值确定后再评估独立测试集。5. 类别不平衡时看每类结果再做一个原创手算实验。一百条信息里95 条正常、5 条垃圾。全猜正常会得到 95% 准确率但垃圾信息召回率为零。fromexamples.evaluation_coreimportbinary_report resultbinary_report([0]*95[1]*5,[0]*100)print(result)这里没有预测任何垃圾信息精确率的分母为零。程序按明确约定将该值返回为零避免除零同时保留 TP 与 FP方便读者看见指标为什么无法正常计算。这种约定需要随结果说明不能把零和未定义混在一起。多分类任务可先分别报告每个类别的精确率与召回率再说明如何汇总。宏平均让每类拥有相同权重加权平均按类别样本量加权。只报告加权平均可能使少数类问题不够显眼。第 19 章类别数量平衡但仍保留混淆矩阵读者能直接看到两类互相分错的情况。6. 过拟合与欠拟合怎样被观察过拟合表示模型过度贴合训练记录的细节换到未参与拟合的数据后效果下降。欠拟合表示当前模型还不足以描述任务中的关系训练和验证结果都较差。本次完整树在全部训练部分上准确率为 1折内验证均值为 0.9417出现了训练与验证差距。一层树在两边都是 0.6667在这个三分类任务上表达能力受限分数明显低于逻辑回归。模型有差距并不自动等于严重过拟合。数据量、噪声和划分都影响差距需要结合新数据继续判断。下一个噪声实验会给出更明显的例子完整树能记住训练中的随机标签但测试只有 52%。面对这种情况继续加深树没有可靠依据应先查任务是否有可学习信号。7. 实际制造一次数据泄漏数据泄漏指训练或评估用到了预测当时不应知道的信息。测试编号无交集也可能发生泄漏例如把正确答案复制成特征或用测试标签挑模型。本章用种子 7 生成 400 条原创随机数据六列输入是噪声二分类标签也是随机生成的二者没有设定关联。固定划分 300 条训练、100 条测试。完整决策树的训练准确率为 100%测试为 52%与随机标签难以预测的设定一致。错误流程增加第七列直接复制标签。测试记录也被复制了答案。此时模型的训练与测试准确率都是 100%。fromexamples.evaluation_coreimportleakage_experiment resultleakage_experiment()forkeyin[clean_train_accuracy,clean_test_accuracy,leaked_test_accuracy]:print(key,result[key])输出为1.0、0.52、1.0。训练和测试编号始终没有交集错误来自特征中的答案列。实际遇到一条未知标签的新信息时根本拿不到这个第七列满分也就不能说明真实预测能力。修复版本删除答案列保留六列输入同一数据与划分重新得到 52%。现实中特征名称可能很普通例如处理后的审核状态。逐列确认产生时间、是否依赖目标、上线时能否获得比只看字段名称更有效。8. 运行与常见卡点从章节目录建立 Python 3.12 环境安装依赖后运行主程序。py-3.12-m venv.venv.\.venv\Scripts\python.exe-m pip install-r requirements.txt.\.venv\Scripts\python.exe examples/run_evaluation.py.\.venv\Scripts\python.exe-m unittest discover-s tests-v本章直接读取第 18、19 章的代码与固定数据保留这两个兄弟目录。运行后results中会出现模型比较、阈值表、折内编号和完整摘要。打开指标 Notebook前安装requirements-notebook.txt先生成图。精确率出现除零错误时先核对 TP 和 FP。没有任何正类预测时需要明确的未定义处理本章约定返回零。若交叉验证提示某类记录不足先统计类别数量减少折数或收集数据不能靠复制少数类记录跨折来凑数量。9. 独立练习有五条教学信息真实标签为[1, 1, 1, 0, 0]预测为[1, 0, 1, 1, 0]。手算 TP、FP、FN、TN 和精确率、召回率说明哪一次误拦可能需要人工处理。再查看汽车模型比较表写出保留三特征模型的依据与本章结果的使用范围。参考答案见【零基础学AI】第 20 章课后练习与答案。下一章沿着参数、输入与损失的关系手算一个很小的神经网络。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询