微软最近在其 Azure 云计算平台中增加了对机器学习的支持。
在该平台的一些技术文档中,隐藏着一些资源,您可能会发现它们有助于思考在不同情况下应使用哪种机器学习算法。
在本文中,我们将探讨微软对机器学习算法的推荐以及我们在处理任何平台上的机器学习问题时可以吸取的经验教训。

选择机器学习算法。
照片来源:USDA,保留部分权利。
机器学习算法速查表
微软发布了一份 PDF 速查表,说明何时使用哪些机器学习算法。
这份单页列表将各种问题类型分组,并列出了 Azure 在每个组中支持的算法。
这些组是:
- 回归:用于预测数值。
- 异常检测:用于查找异常数据点。
- 聚类:用于发现结构。
- 二分类:用于预测两个类别。
- 多分类:用于预测三个或更多类别。
这种方法遇到的第一个问题是,算法名称似乎与 Azure API 文档相匹配,而不是标准的。一些常见的名称很突出,但另一些只是标准算法的名称,为了简化(或者我怀疑是为了避免某种名称侵权)而赋予了新的名称。
除了算法名称之外,还有一些关于为什么选择某个算法的简短说明。这是一个不错的想法,而且鉴于它是一份速查表,它简短而简洁。
从其配套博客文章“微软 Azure 机器学习工作室的机器学习算法速查表”下载速查表(PDF)。
获取您的免费算法思维导图

方便的机器学习算法思维导图样本。
我创建了一份方便的思维导图,其中包含60多种按类型组织的算法。
下载、打印并使用它。
还可以独家访问机器学习算法电子邮件迷你课程。
如何选择机器学习算法
速查表的目的是帮助您快速为您的项目选择算法。
是这样吗?也许不是。
原因是,您可能永远不应该仅凭分析来为项目选择一种算法。您应该抽查多种算法,并根据项目的任何要求来评估它们。
有关抽查算法的更多信息,请参阅文章“为什么你应该抽查你的机器学习问题的算法”。
我认为速查表最好用于了解在您的项目需求范围内,应该尝试哪些算法进行抽查。
在同一个 Azure 文档的姊妹博客中,我们获得了更多与这些想法一致的上下文,标题为“如何为微软 Azure 机器学习选择算法”。
文章以提出问题开头:“*我应该使用哪些机器学习算法?*”,并正确地回答“*这取决于*”。他们评论道:
即使是经验最丰富的数据科学家,在尝试之前也无法确定哪种算法表现最好。
说得对!
这篇博文的宝贵收获是他们提供的考虑因素,用于在您的项目需求背景下思考算法选择。这些算法选择考虑因素是:
- 准确性:目标是获得最佳分数,还是通过权衡过拟合来获得近似的(“足够好”)解决方案。
- 训练时间:可用于训练模型的时间(我猜,也包括验证和调优)。
- 线性性:模型复杂度的一个方面,取决于如何对问题进行建模。与非线性模型形成对比,非线性模型通常更难理解和调优。
- 参数数量:模型复杂度的另一个方面,影响调优时间和专业知识以及敏感性。
- 特征数量:实际上,这是属性比实例多的问题,即 *p>>n* 问题。这通常需要特殊的处理或技术。
该博文还提供了一个可爱的表格,列出了 Azure 支持的算法以及它们与上述某些考虑因素的对应关系。

算法考虑因素表
来自微软博客文章的局部截图。
我觉得这很好。
我还认为,创建它(需要专家)的成本非常高,无法扩展到成百上千(数千?)种可用的机器学习算法,而且随着新算法和更强大算法的开发和发布,它需要不断更新。
我们如何有效地选择算法?
预测建模的目标通常是在合理的时间和资源下创建最准确的模型。
算法复杂性方面的顾虑,例如模型的线性或参数数量,通常仅在模型仅用于描述目的时才需要考虑,而不是用于实际进行预测。
通过精心设计的项目测试平台,选择哪种算法以及设置哪些参数值就成了一个由计算机解决的组合问题,而不是由数据科学家解决。事实上,就像 A/B 测试中的直觉一样,算法选择是带偏见的,可能会削弱性能。
这就是机器学习的抽查方法,之所以可行,是因为实现了大量的算法、强大的系统测试方法(如交叉验证)以及廉价且充足的计算能力。
你最喜欢的机器学习算法在你之前未处理过的问题上表现良好的几率有多大?不高(除非你使用的是随机森林!——我在开玩笑)。
我想说的是,我们可以学习机器学习算法,并了解它们的工作原理以及它们适合做什么,但我认为这种选择层面的工作是在后面进行的。它发生在你需要在 3-4 个表现良好的模型之间进行选择时。在你取得良好结果并需要深入挖掘以获得更好结果时发生。
行动步骤
查看速查表并做些笔记,思考如何将这些想法融入您自己的流程中。
请查看我的机器学习算法之旅,以牢固地了解最流行的机器学习算法及其相互关系。
如果您想了解更多关于如何端到端地系统地处理机器学习项目,请查看我的文章“处理机器学习项目的流程”。
谢谢你,Jason。你的网站很棒,直截了当,有很多好的简洁的参考/链接。你解释事情非常清楚。
谢谢 elcovi,我很高兴您觉得我的文章有用。
您的文章非常有信息量,非常感谢!
谢谢,Déborah,我很高兴您觉得它们有用。
谢谢您..
您文章中的 ML 内容足以指导我迈入 ML 世界。
很高兴听到这个消息。