多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

【机器学习】(22)—— 数据集与泛化复盘

【机器学习】(22)—— 数据集与泛化复盘 数据集与泛化复盘从特征到验收的检查清单文章目录数据集与泛化复盘从特征到验收的检查清单1. 解决什么问题2. 端到端流水线一张总图3. 三道闸门数据、模型、指标3.1 数据闸3.2 模型闸3.3 指标闸4. 汽车示例同一批车问题在升级5. 六大翻车模式6. 上线前自检清单7.「健康检查」脚本代码8. 和前后写的怎么衔接9. 能力边界与常见误区9.1 适用边界9.2 常见误区10. 关键术语速查11. 延伸阅读12. 小结摘要从第 14 篇特征工程到第 21 篇损失曲线专栏走完了「数据 → 划分 → 不平衡 → 复杂度」这条主线。本文不做新公式堆砌而是把整条链路收成一张可执行检查清单每一步查什么、踩过什么坑、和汽车油耗示例如何串起来。适合复习本单元、上线前自检以及衔接到神经网络等进阶主题。1. 解决什么问题前半专栏教会你线性回归怎么拟合、逻辑回归怎么出概率、分类指标怎么读。但真项目里更多失败发生在特征乱塞、向量拼错训练集好看、新数据翻车准确率虚高、少数类全漏模型过弯、训太久、曲线看不懂第 1421 篇就是为了堵住这些洞。篇次一句话收获1416数值特征归一化、分桶、先看图再建模15模型吃的是特征向量不是表格整行17类别要词表 One-Hot交叉克制用18泛化目标训练/验证/测试三分法19数据质量、标签、去重、防泄漏20不平衡时别只看准确率加权/降采样21L2、早停、四种损失曲线怎么读2. 端到端流水线一张总图把各篇动作排成一条默认流水线探索(画图/统计) → 清洗(缺值/异常/去重) → 编码与变换(数值缩放、类别 One-Hot) → 打乱并三分(train/val/test) → 只在训练集 fit 变换与模型 → 盯验证损失与业务指标 → 测试集终验一次硬规矩StandardScaler、词表、Imputer一律在划分之后、只用训练集fit再transform验证/测试。全表先 fit 再切分是第 19 篇说的变换泄漏。可以把流水线想成工厂质检探索是来料检查编码是加工三分是抽检分组验证是车间巡检测试是出厂抽检。巡检可以反复出厂抽检不能天天拆箱——对应「验证可多看、测试少碰」。3. 三道闸门数据、模型、指标上线前至少过三道闸。少一道后面「调参狂欢」往往白费。3.1 数据闸检查项通过标准对应篇特征类型邮编/ID 不当连续数值14、17分布与异常看过散点/直方图极端值有决策16完整与标签缺值已删或填补直接/代理标签清楚19重复与泄漏跨集合无重复预处理无泄漏19比例知多数/少数类评估指标匹配203.2 模型闸检查项通过标准对应篇复杂度特征从少到多多项式阶数克制18、21正则逻辑回归默认考虑 L2λ \lambdaλ用验证集选07、21早停验证损失抬头前停18、21曲线能解释震荡/尖峰/分叉213.3 指标闸场景优先看少单独汇报回归MSE / MAE 残差图「训练 MSE 最低」平衡分类Acc F1 / AUC—不平衡分类Precision / Recall / F1 / AUCAccuracy 独挑大梁最终验收测试集一次业务阈值下的混淆矩阵天天刷测试集4. 汽车示例同一批车问题在升级贯穿专栏的重量与油耗在不同阶段问的问题不同阶段在解决什么问题第 01 篇重量能不能预测 MPG第 0507 篇能不能预测是否高效Log Loss L2第 1417 篇向量里该放哪些浮点数品牌怎么编码第 16、19 篇34.3 是不是录入错误缺值怎么办第 18、21 篇多项式很贴训练却不贴验证何时早停第 20 篇高效车只有 2% 时99% 准确率算不算赢同一份表能力边界在变先把数据与评估做对再谈更复杂的模型。5. 六大翻车模式现象根因快修Acc 极高、少数类 Recall≈0不平衡 猜多数类换指标class_weight调阈值验证损失「好得离谱」训练/测试重复样本去重后再划分训练降、验证升过拟合减特征、加λ \lambdaλ、早停测试好、线上差非平稳 / 分布漂移查真实数据刷新集一切数字都虚高全表标准化或词表泄漏Pipeline先 split 再 fit越调测试越好测试集磨损冻结测试用验证集调参把这六条贴在显示器边上比再背一遍公式更管用。再补一条「组合拳」翻车数据有重复 模型很复杂 只报准确率。单独看每一项都不致命叠在一起会让你以为模型已经「生产就绪」。排查顺序建议先查泄漏与重复再查指标是否匹配任务最后才加正则或减特征——否则你可能在给错误问题调正确旋钮。6. 上线前自检清单复制下面清单项目里逐项打勾数据数值 / 类别列已区分邮编等按类别处理看过关键特征的直方图与特征–标签散点异常值删 / 留 / 裁剪有记录缺值策略确定填补列是否加了is_imputed标签是直接还是代理代理误差可接受去重完成验证/测试无训练重复行划分与变换已三分或等价策略划分前打乱时序任务按时间切不平衡时用了stratifyScaler / Encoder / Imputer 仅在训练集 fit训练与推理特征列顺序一致训练与评估同时画 train / val 损失分类任务指标与业务代价匹配不平衡未只报 Accuracyλ \lambdaλ或C CC与学习率在验证集上搜过早停或等价轮次控制已启用测试集只做最终验收不参与日常调参交付预处理与模型打成同一 Pipeline / 工件记录数据版本、随机种子、超参知道线上分布漂移时如何重训 / 换数7.「健康检查」脚本代码用合成数据快速演示泄漏 vs 正确流程、不平衡指标、复杂度对比。importnumpyasnpfromsklearn.datasetsimportmake_classificationfromsklearn.model_selectionimporttrain_test_splitfromsklearn.preprocessingimportStandardScalerfromsklearn.linear_modelimportLogisticRegressionfromsklearn.pipelineimportPipelinefromsklearn.metricsimportaccuracy_score,recall_score,roc_auc_score X,ymake_classification(n_samples3000,n_features10,weights[0.9,0.1],random_state0)X_tv,X_test,y_tv,y_testtrain_test_split(X,y,test_size0.2,stratifyy,random_state0)X_train,X_val,y_train,y_valtrain_test_split(X_tv,y_tv,test_size0.25,stratifyy_tv,random_state0)# 正确Pipeline 内 fit无泄漏pipePipeline([(scaler,StandardScaler()),(clf,LogisticRegression(max_iter1000,class_weightbalanced,C1.0)),])pipe.fit(X_train,y_train)probapipe.predict_proba(X_val)[:,1]pred(proba0.5).astype(int)print(val acc,round(accuracy_score(y_val,pred),3))print(val recall,round(recall_score(y_val,pred),3))print(val auc,round(roc_auc_score(y_val,proba),3))# 错误示范不要学全数据 fit scaler 再划分 —— 泄漏# scaler StandardScaler().fit(X) # BAD# 复杂度粗检C 很小 正则很强forCin[0.01,1.0,100.0]:pPipeline([(scaler,StandardScaler()),(clf,LogisticRegression(max_iter1000,class_weightbalanced,CC)),])p.fit(X_train,y_train)aucroc_auc_score(y_val,p.predict_proba(X_val)[:,1])print(fC{C:6}val_auc{auc:.3f})健康信号Recall / AUC 与 Accuracy 一起看C过大时验证未必更好。把X_test留到选完C与阈值后再动一次。若要接到汽车真实表把make_classification换成你的weight / brand / mpg特征矩阵即可流程不变分层划分 → Pipeline → 验证集选C与阈值 → 测试集终验。8. 和前后写的怎么衔接已经会的本单元补上的下一步线性 / 逻辑回归公式数据与泛化工程神经网络自动学特征组合混淆矩阵与 AUC不平衡下怎么用它们Embedding、LLM 入门第 07 篇 L2 入门放到损失曲线与过拟合全局里生产系统监控与漂移神经网络不会取消本单元更深的模型更容易过拟合更需要三分法、清洗、正则与曲线阅读。把第 1421 篇当「卫生习惯」后面学节点与反向传播会轻松很多。一句话收束本单元算法决定上限数据与评估纪律决定你能不能摸到那个上限。9. 能力边界与常见误区9.1 适用边界清单面向表格型监督学习推荐、时序、CV 还需专门划分策略但「先可信、再划分、后验收」不变。复盘篇不替代第 1821 的推导细节以各专篇为准。9.2 常见误区误区正解复盘就是把旧文粘贴一遍应用检查清单与翻车模式有了神经网络就不用三分法更需要验证曲线与正则清单过完一次永远通过数据会漂定期复查测试集分数是唯一 KPI线上业务指标才是终局特征工程与泛化无关乱交叉会直接抬高复杂度10. 关键术语速查术语一句话解释泛化新数据上仍预测得好过拟合 / 欠拟合过贴训练 / 连训练都学不会三分法训练 / 验证 / 测试职责分离变换泄漏用未来或测试信息 fit 预处理类别不平衡各类样本量差距大L2 / 早停压权重 / 限轮次的抗过拟合手段特征向量模型真正吃进的浮点数组11. 延伸阅读资源适合看什么专栏第 18 篇泛化与三分法专栏第 19 篇质量、标签、泄漏专栏第 20 篇不平衡评估与加权专栏第 21 篇复杂度与曲线sklearn Pipeline防泄漏的工程封装12. 小结本单元的核心不是某一个公式而是一条纪律先摸清并清洗数据 → 正确编码成向量 → 三分且防泄漏 → 用验证集管复杂度与阈值 → 用对的指标验收 → 测试集只碰一次汽车例子从「画一条直线」走到「在不平衡与过拟合下仍敢上线」靠的是检查清单不是更炫的损失函数。下一篇进入神经网络入门节点、隐藏层与如何用多层结构自动组合特征——建立在你已经会泛化与正则的前提上。系列导航上一篇【机器学习】21—— 模型复杂度与损失曲线下一篇预告神经网络入门——节点、隐藏层与前向传播如果本篇对你有帮助欢迎点赞、收藏、关注博主机器学习专栏持续更新中下次更新不迷路。
返回列表