Julia Evans 最近写了一篇题为“机器学习不是 Kaggle 竞赛”的文章。
这篇文章很有意思,因为它指出了一个重要的事实。如果你想通过机器学习解决业务问题,在 Kaggle 竞赛中表现出色并不能很好地证明你的技能。其原理是,要在 Kaggle 竞赛中表现出色所需的工作,仅仅是实现业务效益所需的一部分。
这是一个需要考虑的重要观点,特别是如果你刚刚起步,并且发现自己在排行榜上表现不佳。在这篇文章中,我们将探讨竞争性机器学习与应用机器学习的关系。

竞争性机器学习
照片作者:tableatny,部分权利保留
竞赛与“现实世界”
Julia 尝试参加了一场 Kaggle 竞赛,但表现不佳。问题在于,她在 Stripe 的工作中负责机器学习。正是这种她工作的出色之处与参加机器学习竞赛所需之间的脱节,引发了这篇文章。
为了评估技能,范围必须是有限的。如果你参加过学校的考试,你就知道这一点。
想想一次工作面试。你可以让应聘者修改生产代码库,或者让他们解决一个抽象的独立问题。这两种方法都有其优点,后者的好处是它足够简单,可以在面试环境中解析和解决。前者可能需要数小时、数天、数周的上下文。
你可以完全根据考试成绩来聘用一名应聘者,你可以根据他们在 Top Coder 上的排名来聘用一名程序员,你也可以根据他们在 Kaggle 上的得分来聘用一名机器学习工程师,但你必须确信他们在评估中所展示的技能能够转化为他们在工作中所需的任务。
最后一部分很难。这就是为什么你给应聘者出实际问题,看看他们如何临场发挥。
你可能很擅长赢得竞赛,但在临场发挥或在工作场所的工程师的更广泛期望范围内进行机器学习却很差。你也可以擅长实际的机器学习,但在竞赛中表现不佳,正如 Julia 的情况所述。
更广泛的问题解决过程
Julia 论点的关键在于,竞赛所需的机器学习只是在实践中交付成果所需更广泛过程中的一部分。
Julia 以预测航班到达时间为例,来说明这一点。她强调了更广泛问题的以下方面:
- 理解业务问题
- 选择要优化的指标
- 决定使用哪些数据
- 清理数据
- 构建模型
- 将模型投入生产
- 衡量模型性能
Julia 指出,Kaggle 竞赛只是以上列表中的第 5 点(构建模型)。
这是一个很好的观点,我完全同意。我想说的是,我认为我们在 Kaggle 竞赛中所做的事情就是机器学习(因此才有了这篇文章的标题),而更广泛的过程则有其他名称。也许那是数据挖掘,也许那是应用机器学习,也许这就是人们在谈论数据科学时所指的。总之。
机器学习很难
更广泛的过程至关重要,我 一直 强调 这一点 是 所有 时候。
现在从所需的技术技能和经验的角度来考虑过程中的步骤。数据选择、清理和模型构建都是艰难的技术任务,需要高超的技巧才能做好。在某种程度上,数据分析师甚至业务分析师都可以胜任大部分工作,除了构建模型这一步。
我可能是在冒险,但也许这就是为什么机器学习被放在如此高的位置。
构建出色的模型很难。非常难。但是,由机器学习竞赛定义的出色模型(相对于损失函数得分)几乎总是与业务所需的出色模型不同。如此精细调整的模型是脆弱的。它们难以投入生产,难以重现,难以理解。
在大多数业务场景中,您需要一个在提取领域结构方面“足够好”的模型,而不是可能出现的最佳模型。
Julia 在引用“Netflix 百万美元奖金项目失败”时提出了这一点。
竞赛很棒
Kaggle 竞赛,就像之前的会议竞赛一样,对参与者来说可以带来很多乐趣。
传统上,学者们(主要是研究生)利用它们来测试算法,以及发现和探索特定方法和方法论的局限性。算法的争夺在研究论文中很常见,但在实践中几乎没有益处。 这一点是众所周知的。
关键点,也是我认为 Julia 想表达的观点是,如果你发现自己难以在 Kaggle 竞赛中取得好成绩,请不要灰心。
这很可能是因为竞赛环境很艰难,而且对你技能的评估过度偏向于实践中取得好成绩所需的一个方面,即模型构建。
嗨,Jason,
非常感谢您所有的文章。
我对 PLS 的那篇文章特别感兴趣。我读了一些文章和一本书的一部分。
我理解其中一些内容,但有些仍然…不理解。
您能给我一些可以获得更多见解的链接吗?
先谢谢。
我猜您指的是偏最小二乘回归 (PLS)。维基百科的条目可能对您没有用:http://en.wikipedia.org/wiki/Partial_least_squares_regression
也许可以看看这篇题为《偏最小二乘分析入门指南》的论文 (PDF)
Squares Analysis http://users.stat.umn.edu/~sandy/courses/8801/articles/pls.pdf
您好,先生
感谢这篇文章
您能否列出在参加竞赛之前应该了解的所有重要算法?
不。从一个算法开始,然后在此基础上构建。
好文章。谢谢!
在我看来,最好是通过各种 Kaggle 竞赛来全面了解机器学习流程和工具。然后,开始开发你自己的项目,你可以在 GitHub 上分享/展示这些项目,以吸引潜在的雇主。
好主意,Doug!
感谢这篇文章。我认为 Kaggle 竞赛非常适合想要学习和专注于创建良好模型的人,而无需过多担心数据,因为数据已经提供给您了。我不确定一个好的 Kaggle 记录是否会让你对未来的雇主更有吸引力。这就像带着你的大学成绩单去参加工作面试……有点奇怪,并没有真正告诉面试官你实际技能的很多东西。