机器学习算法种类繁多,每种算法都是一个独立的研究领域。
你需要选择学习机器学习算法的详细程度。如果你是一个对应用预测建模感兴趣的开发者,有一个最佳的平衡点。
这篇文章描述了这个最佳平衡点,并为你提供了一个模板,你可以用它来快速理解任何机器学习算法。
通过我的新书《掌握机器学习算法》启动你的项目,包括逐步教程和所有示例的Excel电子表格文件。

理解机器学习算法的最佳平衡点
图片由dmums拍摄,部分权利保留。
让我们开始吧。
你需要了解机器学习算法的哪些方面?
你需要了解机器学习算法的哪些方面才能在分类或预测问题上很好地使用它?
我不会争论你对特定算法工作原理和原因了解得越多,你就越能更好地驾驭它。但我相信存在一个边际收益递减点,你可以停下来,利用你所知道的知识来提高效率,并且只有当你需要了解更多才能获得更好的结果时,才深入研究算法的理论和研究。
让我们来看看揭示机器学习算法如何工作以及如何最好地使用它的6个问题。
获取您的免费算法思维导图

方便的机器学习算法思维导图样本。
我创建了一份方便的思维导图,其中包含60多种按类型组织的算法。
下载、打印并使用它。
还可以独家访问机器学习算法电子邮件迷你课程。
关于任何算法的6个问题
你可以提出6个问题来了解任何机器学习算法的核心
- 你如何称呼这项技术(例如,叫什么名字)?
- 你如何表示一个学习模型(例如,哪些系数)?
- 你如何学习一个模型(例如,从数据到表示的优化过程)?
- 你如何从学习模型中进行预测(例如,将模型应用于新数据)?
- 你如何最好地为使用该技术进行建模准备数据(例如,假设)?
- 你如何获取有关该技术的更多信息(例如,在哪里查找)?
你会注意到我将所有这些问题都表述为“如何做”。我这样做是为了有意识地将实际操作问题与更理论化的“为什么”问题分开。我认为,如果你希望将一种技术作为工具来获得结果,那么了解其工作原理(how)比了解其原因(why)不那么重要。更多内容将在下一节中介绍。
接下来,我们逐一详细探讨这些问题。
1. 你如何称呼这项技术?
这很明显但很重要。你需要知道该技术的规范名称。
你需要能够识别经典名称或来自其他领域的方法名称,并知道它们是同一事物。这也包括算法的缩写,因为有时它们并不那么直观。
这将帮助你区分基本算法与扩展,以及算法在家族树中的位置以及与类似算法的关系。
2. 你如何表示一个学习模型?
我真的很喜欢这个实实在在的问题。
这个问题在教科书和论文中经常被忽视,但它可能是工程师在考虑模型如何实际使用和部署时首先会问的问题。
表示是捕获学习算法从数据中学到的独特细节,并供预测算法使用的数字和数据结构。它是你完成模型后保存到磁盘或数据库中的内容。它是当有新的训练数据可用时你更新的内容。
让我们用一个例子来具体说明。在线性回归的情况下,表示是回归系数向量。就是这样。在决策树的情况下,它是树本身,包括节点、它们如何连接以及选择的变量和截止阈值。
3. 你如何学习一个模型?
给定一些训练数据,算法需要创建模型或填充模型表示。这个问题正是关于如何发生这种情况。
通常,在更简单的算法中,学习涉及直接从训练数据估计参数。
在大多数其他算法中,它涉及使用训练数据作为成本或损失函数的一部分,并使用优化算法来最小化该函数。更简单的线性技术可能会使用线性代数来实现这个结果,而其他技术可能会使用数值优化。
通常,机器学习算法学习模型的方式与算法本身是同义的。这是运行机器学习算法中最具挑战性且通常耗时的部分。
学习算法可以参数化,通常最好列出参数值的常见范围或可以用作起点的配置启发式方法。
4. 你如何使用模型进行预测?
一旦模型被学习,它就旨在用于对新数据进行预测。请注意,我们专门讨论用于分类和回归问题的预测建模机器学习算法。
这通常是使用机器学习算法的快速甚至微不足道的部分。通常它微不足道以至于文献中甚至没有提及或讨论。
它可能很微不足道,因为预测可能像在方程中填写输入并计算预测一样简单,或者遍历决策树以查看哪个叶节点亮起。在其他算法中,如K近邻,预测算法可能是主要内容(K-NN除了“存储整个训练集”之外没有训练算法)。
5. 你如何为算法最好地准备数据?
机器学习算法会做出假设。
即使是最宽松的非参数方法,也会对你的训练数据做出假设。审查这些假设是好的,甚至是至关重要的。更好的是将这些假设转化为你可以执行的特定数据准备操作。
这个问题揭示了你可以在建模之前对数据使用的转换,或者至少让你停下来思考要尝试的数据转换。我的意思是,最好将算法要求和假设视为尝试从模型中获得最大收益的建议,而不是你的数据必须遵守的硬性规定。
就像你无法事先知道哪种算法最适合你的数据一样,你也无法知道应用哪些最佳转换才能从算法中获得最大收益。真实数据是混乱的,最好使用几种不同的数据表示和几种不同的算法来查看哪些值得深入研究。机器学习算法的要求和假设有助于指出要尝试的数据表示。
6. 你如何获取有关该算法的更多信息?
有些算法在你的数据问题上会普遍优于其他算法。
当它们表现出色时,你需要知道在哪里查找才能更深入地理解该技术。这有助于进一步为你的数据定制算法,以及调整学习和预测算法的参数。
收集并列出你可以在需要深入研究时参考的资源是个好主意。这可能包括:
- 期刊文章
- 会议论文
- 书籍,包括教科书和专著
- 网页
我还认为,了解更多实用参考文献,如示例教程和开源实现,是很好的主意,你可以深入研究它们,以更具体地了解正在发生的事情。
有关机器学习算法研究的更多信息,请参阅文章如何研究机器学习算法。
总结
在这篇文章中,你发现了可以向机器学习提出的6个问题,如果回答这些问题,你将对它如何工作以及如何有效使用它有一个非常好的实际理解。
这些问题主要关注用于分类和回归等预测建模问题的机器学习算法。
这些问题,简单来说就是:
- 算法的常用名称是什么?
- 模型使用什么表示?
- 算法如何从训练数据中学习?
- 你如何利用模型对新数据进行预测?
- 你如何为算法最好地准备数据?
- 你在哪里可以找到有关该算法的更多信息?
有关此主题(定义算法描述模板)的另一篇文章,请参阅如何学习机器学习算法。
你喜欢这种方法吗?请在评论中告诉我。
关于“这种算法最适合哪些类型的问题?”和“它的优点和缺点是什么?”之类的问题。
这些不那么重要,还是最好先理解你提到的“如何”细节,然后推导出这些问题的答案?
你好,Mark,
算法的适用性很难判断。一般来说,你可以将分类/回归等作为要求。除此之外,这确实是一个无法知晓的问题。你必须逐个问题地进行抽样检查和发现适用性。
优点和缺点是值得关注的重要方面,我将其表述为使用启发式方法。理念是一样的。
它的工作原理是理解一切的关键,是理解算法所有其他方面的透镜。至于“为什么”,通常是一堆很少有人能深入理解的数学,而且可能不值得付出努力,至少短期内不值得。