坐下 1 / 6
打开 notebook 之前,先写四行。
任务是什么、输入在预测发生的那一秒看得见什么、错一次谁付钱、测试集什么时候才准看。这四行比选 Adam 还是 SGD 更早决定你会不会自欺。
任务写成接口
「识别垃圾邮件」还不够。改成:邮件到达时,只用当时能看见的标题和正文,输出这是钓鱼的概率。漏掉一封钓鱼,比拦下一封普通邮件贵。最后一句会改阈值——你宁可多拦,也不漏。
「预测学生会不会挂科」同样要收口。可执行的写法:第 6 周结束时,用前 6 周已经产生的提交次数、测验分数、登录天数,给每人一个不及格概率。期末成绩不能进输入。预测发生的那一秒,它还不存在。
主指标跟着价钱走
1000 个样本里 20 个是故障。永远猜「正常」,准确率 98%。故障一封都没抓住。所以主指标不能只写准确率。先写两类错误的价钱,再选 recall、precision 或 F1。阈值也是实验变量:模型吐出 0.62,并不等于「正类」,只有跟你选定的阈值比过才算决策。
先让简单基线上跑道。多数类、一条规则、线性模型。网络赢不了它们,先查数据和实现,不要加层。一次只改一件事。同时换模型、换增强、加轮数,分数涨了也不知道是谁的功劳。
三份数据,三种用途
训练拟合参数。验证用来挑学习率、何时停、哪次 checkpoint。测试只在方案冻住以后看一次。常见 70/15/15 只是起点。同一个人的照片不能一半训练一半测试,模型会认人。传感器按时间切:前四个月训练,第五个月验证,第六个月测。同一窗口的未来值不准进特征。用全体数据算均值再切分,也把测试信息带进了训练。
测试集边看边调,那个数字就开始说谎。它会慢慢变成第二份验证集。你对外报的分数,比真实世界好看。这一页要你先把「何时看测试」写成一句,写错就改。
四格卡
存在本机,键名 v2-dl-card。关掉脚本也能读下面的说明;保存需要浏览器。
自己对过:测试集那一格
站得住的写法类似「方案冻住以后看一次」。出现「边训边看」「看着测试调」就改掉。验证集可以反复看;测试集不行。
给每次运行一个短 ID。记下数据版本、切分、种子、超参、选 checkpoint 的规则。同一协议跑三次,报均值和波动,比只贴最好的一次诚实。