学习机器学习时,最先写下的不是模型名称,而是:对谁,在什么时候,利用当时能够获得的信息,预测什么结果?
把问题写成可检查的约定
以“预测门店下周的商品销量”为例:
| 项目 | 本例中的定义 |
|---|---|
| 一个样本 | 某门店在某一周开始前的一次预测 |
| 特征 | 截至该时刻的历史销量、价格、已确定的促销安排 |
| 标签 | 随后这一周实际发生的销量 |
| 任务 | 预测数值,属于回归 |
| 最简单的基线 | 直接使用上一周的销量 |
“是否缺货”则需要另行定义标签、预测时点和判定规则,不能只把销量的列名改掉,就声称完成了另一个任务。
三个容易误解的地方
- 标签在训练时通常是已知的。 未知的是未来待预测样本的结果,而不是说训练数据不能包含答案。
- 不是任何已知列都能作为特征。 下周结束后才得到的退货总额,即使出现在同一张表里,也不能用于周初预测。
- 规则程序和学习模型不是互相排斥的。 规则适合明确的约束;模型用于估计数据中的关系。模型仍由算法、目标函数和训练过程驱动,并不是脱离程序“自己想明白”。
对于必须预测未来的任务,还要让验证过程模拟未来:不要把未来记录随机混进训练集,再把这个分数当成真实上线效果。相同对象的重复记录也应检查是否跨越了训练和测试边界。
我的练习
拿到一个表格,先不训练模型,完成以下四项:
- 写出一行记录代表什么,以及它的预测时刻。
- 为每一列注明最早能够获得它的时间。
- 列出一个不使用机器学习也能实现的基线。
- 说明为什么当前划分方式接近真实使用情境。
如果这四项说不清楚,更复杂的模型也不会让评估变得可信。数据泄漏会使分数过于乐观,测试集不能参与模型和流程的选择。参见 scikit-learn 的常见陷阱说明。
课程对应与整理边界
对应疏锦行《机器学习 26 考/保研基础班》的“认识机器学习”讲义及视频章节“5认识机器学习”。本文是围绕预测时刻重新组织的学习笔记,不是课件复刻或逐字稿;视频口头补充尚未完整核验。
原创
机器学习入门:先定义预测时刻,再谈特征和模型
本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
评论交流
欢迎留下你的想法