Midwest.io 是2014年7月14日至15日在堪萨斯城举办的一次会议。
在会议上,Josh Wills 发表了一个关于构建生产机器学习基础设施的演讲,题目是“从实验室到工厂:构建生产机器学习基础设施”。
Josh Wills 是 Cloudera 的数据科学高级总监,曾任职于谷歌的广告竞价系统。
在这篇文章中,您将了解到构建生产机器学习基础设施所需的知识。
数据科学
Josh 将自己称为数据科学家,并对数据科学家是什么做出了一个相当精辟的描述。他最好的表达方式是通过一条推文:
数据科学家(名词):比任何软件工程师都更懂统计学,也比任何统计学家都更懂软件工程的人。
— jwills (@josh_wills) 2012年5月3日
他表示,数据科学家有两种类型,第一种是精通编程的统计学家。第二种是聪明并被分配到有趣项目中的软件工程师。他说他自己就是第二种数据科学家。
学术界与工业界机器学习不同
Josh 还区分了学术界机器学习与工业界机器学习。他评论说,学术界机器学习基本上是应用数学,特别是应用优化理论,这也是它在学术环境中和教科书中教授的方式。
工业界机器学习则不同。
- 系统优先于算法。在学术界机器学习中,准确性是首要考虑的,即使以牺牲长时间运行为代价。在工业界,更快总是更好,慢必须有合理的理由,这意味着准确性常常可以放在次要位置。
- 目标函数很复杂。学术界机器学习 all about 优化目标函数。不存在清晰的目标函数,通常存在许多相互冲突的函数,需要采用 Pareto 最优方法(在不负面影响其他目标的情况下改进一个目标)。
- 一切都在变化。系统很复杂,没有人能完全理解所有东西。
- 理解-优化权衡。一个产生假设、测试它们并改进系统的过程。理解往往比获得更好的结果更重要。实验驱动理解。
工业界机器学习框架
Josh 评论说,现在是工业界机器学习的黄金时代。他这样说是因为现有工具的可用性以及共享和协作的程度。
他提到了 Cloudera 在 Apache Hadoop 之上用于其工业界机器学习平台的 Oryx。
Josh 在 Airbnb 的博客文章“为风险构建机器学习系统”中分享了他们工业界机器学习系统的细节。他特别提到 Airbnb 构建了一个离线分析模型,将其存储为 PMLL 文件,然后上传以在生产环境中运行。
Josh 还提到了 Etsy 的工业界机器学习系统,名为 Conjecture,该系统在博客文章“Conjecture:使用 Scalding 在 Hadoop 中进行可扩展机器学习”中有描述。在他们的系统中,模型在离线准备好,并以 JSON 格式描述,然后转换为 PHP 代码以在生产环境中运行。
Josh 指出这些系统中普遍存在的共同点是数据以键/值对的形式进行管理。他还提到在所谓的“分析模式”下离线准备模型,并将这些模型转换为“生产模式”以供生产使用。
特征工程
Josh 说他目前的激情在于 特征工程,这是工业界机器学习中的一种“黑暗艺术”。事实上,他在演讲结束时开玩笑说,人们痴迷于自己喜欢的算法,使用的算法并不那么重要,所有的艰苦工作都在于特征工程。
Josh 说,最大的低效率在于分析模型与生产模式使用数据的方式不同。
分析模型准备访问离线星型模式以整合所有所需数据。生产数据仅访问用户或观测值。他提出的问题是如何以最小的努力(并且没有当前使用的那些“临时解决方案”)将离线使用的内容转换为在线使用。
他说他尝试了一种 DSL 方法,但失败了,但这揭示了核心问题在于数据模型。他说,需要根据固定属性和重复属性来建模用户实体。用户实体以非规范化的方式存储,而用户数据如交易和日志(重复属性)则存储在数组中。他提供了一个 JSON 格式的例子,并称之为“超新星模式”。
总结
这是一个引人入胜的演讲,提醒我们从 Cloudera、Airbnb 和 Etsy 等公司的大规模工业界机器学习系统的讨论中可以学到很多东西。
您可以在这里观看完整的演讲:“从实验室到工厂:构建生产机器学习基础设施”。
您可以在 Twitter 上关注 Josh @josh_wills,并在 Linkedin 上查看他的背景。
非常有用的帖子,我能理解学术界与工业界机器学习的区别,因为我多年来都接触过这两方面。媒体倾向于关注学术界的故事,这很遗憾,但随着机器学习的普及,或许这种情况会改变。
谢谢 Din。
感谢分享和总结这个演讲,非常有趣!
Jason,想说的是:内容很棒,一如既往!关于工业界机器学习的演讲也很棒!
谢谢 Jason,期待更多工业界深度学习的文章。
谢谢。
请更新 Oryx 的链接,应该是:http://oryx.io/