机器学习入门时我踩过的那些认知坑
写码不秃头
2026-10-02 19:29
阅读 603
先说个真实场景。实习生问我:“为啥模型训练集准确率99%,测试集只有63%?”一看代码,数据没打乱直接切分,前80%全是A类,后20%全是B类。这不是过拟合,是数据泄露加分布不均的混合双打。
很多入门教程一上来就甩公式,看得人头皮发麻。但机器学习最核心的直觉就一句话:让模型在没见过的数据上也能表现好。训练集是练习题,验证集是模拟考,测试集才是高考。背答案没用,得真会解题。
我初学时迷信复杂模型,觉得XGBoost一定比逻辑回归强。后来听一位搞风控的同行说,他们线上仍用逻辑回归,因为可解释性强,监管要看每个变量的权重。模型选择不是比谁参数多,而是比谁更适配业务场景。
工具链方面,GitHub Copilot补全模板代码确实快,但生成的代码不能直接信。有次它给StandardScaler补全时直接fit了测试集,典型数据泄露。review时发现了,否则线上效果虚高,上线后崩得妈都不认识。
版本管理上,Git是救命的东西。我习惯每次调参前先commit,实验记录写在message里:
git commit -m "feat: add l2 regularization, val_auc 0.87"
回滚时一目了然。别学我以前调参到半夜,把最好的权重覆盖了,想死的心都有。
训练/验证/测试的划分方式常被忽视。时间序列数据不能随机切,得按时间先后;类别不平衡要用分层采样。sklearn里train_test_split的stratify参数就是干这个的。很多人不知道,切出来的验证集类别分布跟真实情况差很远。
最后聊两句心得。入门别急着上深度学习,先把数据处理好,评估指标搞清楚,交叉验证跑明白。调参炼丹这条路,慢就是快。
假期还剩几天,准备把烂尾项目捡起来,用Git好好管理版本,别再搞出“最终版_v3_真的最终版.ipynb”这种文件名了。
标签:GitHub CopilotGit
为你推荐
暂无相关推荐

评论 0