在最近的一次演讲中,Ben Hamner 描述了他和他的同事在 Kaggle 竞赛中观察到的机器学习项目中的常见陷阱。
这次演讲的标题是“机器学习的“恶魔””,并于2014年2月在 Strata 大会上进行。
在本文中,我们将回顾 Ben 演讲中的陷阱,它们是什么样的以及如何避免。
机器学习流程
在演讲的开头,Ben 展示了端到端处理机器学习问题的快照。
这个快照包括以下 9 个步骤:
- 从业务问题开始
- 数据源
- 数据分割
- 选择评估指标
- 进行特征提取
- 模型训练
- 特征选择
- 模型选择
- 生产系统
他评论说,这个过程是迭代的而非线性的。
他还评论说,这个过程中的每个步骤都可能出错,从而使整个项目脱轨。
区分猫和狗
Ben 提出了一个案例研究问题,即构建一个自动猫门,该门可以放行猫而挡住狗。这是一个具有启发性的例子,因为它涉及了处理数据问题中的许多关键问题。
样本大小
从这个例子中得出的第一个重要收获是,他研究了模型的准确性与数据样本大小的关系,并表明更多的样本与更高的准确性相关。
然后他增加了更多数据,直到准确性趋于平稳。这是一个很好的例子,说明了了解系统对样本大小的敏感性并据此进行调整是多么容易。
错误的问题
这个例子带来的第二个重要收获是,系统失败了,它让社区里所有的猫都进来了。
这是一个巧妙的例子,它强调了理解需要解决的问题的约束条件的重要性,而不是你想要解决的问题。
机器学习项目中的陷阱
Ben 继续讨论了在处理机器学习问题时遇到的四个常见陷阱。
尽管这些问题很常见,但他指出它们可以相对容易地识别和解决。
- 数据泄露:在模型中使用生产系统无法访问的数据的问题。这在时间序列问题中尤其常见。也可能发生在像系统 ID 这样可能指示类别标签的数据中。运行模型并仔细查看对模型成功有贡献的属性。进行健全性检查并考虑其是否合理。(可以查阅相关论文“数据挖掘中的泄露”PDF)
- 过拟合:模型过于紧密地拟合训练数据,导致模型也包含了噪声。结果是泛化能力差。在高维和具有更复杂类别边界的情况下,这会成为一个更严重的问题。
- 数据采样和分割:与数据泄露相关,你需要非常小心,确保训练/测试/验证集确实是独立的样本。对于时间序列问题,需要仔细考虑和大量工作,以确保你可以按时间顺序向系统提供数据并验证模型准确性。
- 数据质量:检查数据的Consistency。Ben 举了一个航班数据的例子,其中一些飞机在起飞前就降落了。需要识别并显式处理不一致、重复和损坏的数据。它会直接损害建模问题和模型的泛化能力。
总结
Ben 的演讲“机器学习的“恶魔””是一个快速且实用的演讲。
您将对我们在处理数据问题时都可能遇到的常见陷阱获得一个有用的速成课程。
暂无评论。