无需数学基础,理解机器学习算法的 5 种方法

在自上而下的学习方法中,理论部分是如何体现的?

在传统的机器学习教学方法中,理论是先行的,需要有扎实的数学背景才能理解。在我教授机器学习的方法中,我先教你如何端到端地解决问题并交付结果。

那么理论在哪里发挥作用呢?

在本文中,您将了解到我们讨论机器学习中的“理论”时真正指的是什么。提示:这一切都与算法有关。

您会发现,一旦您熟练掌握了解决问题和交付结果的技能,您就会产生深入研究的冲动,以便更好地理解和取得更好的结果。没有人能够阻止您

最后,您将了解到 5 种技术,您可以在练习标准数据集的机器学习时使用这些技术来逐步加深对机器学习算法的理解。

用我新书 《掌握机器学习算法》 开启您的项目,书中包含分步教程以及所有示例的Excel电子表格文件。

Machine Learning Theory

如何学习不带数学的机器学习
照片作者: Ed Brambley,部分权利保留

最后学习理论,而不是先学习理论

目前教授开发者机器学习的方式很糟糕。

它是自下而上教授的。如果您是一名主要希望将机器学习作为解决问题的工具,而不是该领域的任何研究人员的开发者,那么这种方式就很糟糕。

传统方法要求您在学习算法理论之前先学习所有先修数学课程,如线性代数、概率和统计。如果您有机会接触到算法的工作实现,或者讨论如何端到端地解决问题并交付一个工作良好、可靠且准确的预测模型,那您就走运了。

我教授自上而下的机器学习学习方法。在这种方法中,我们首先 1) 学习一套系统性的端到端解决问题的方法,2) 将该方法映射到“同类最佳”的机器学习工具和平台,然后 3) 在测试数据集上进行有针对性的练习。

您可以在文章“机器学习入门:从开发者到机器学习从业者的飞跃”中了解更多关于我教授自上而下机器学习的方法。

那么在这个过程中,理论部分如何定位呢?

如果模型颠倒过来,理论就会被推迟教授。但我们谈论的是什么理论?以及在测试数据集上练习时,我们具体如何学习这些理论?

获取您的免费算法思维导图

Machine Learning Algorithms Mind Map

方便的机器学习算法思维导图样本。

我创建了一份方便的思维导图,其中包含60多种按类型组织的算法。

下载、打印并使用它。


还可以独家访问机器学习算法电子邮件迷你课程。

 

 

理论实际上就是关于算法

机器学习领域充斥着理论。

之所以充斥着理论,是因为存在一种用数学方法来描述和解释概念的传统。

这很有用,因为数学描述可以非常简洁,减少歧义。它们也便于分析,利用了其描述的上下文中的技术(例如,对过程的概率理解)。

许多这些旁系的数学技术通常会与机器学习算法的描述捆绑在一起。对于那些只想对某个方法进行肤浅理解以便配置和应用它的人来说,这感觉是压倒性的。令人沮丧。

如果您没有基础来解析和理解算法的描述,那会令人沮丧。这种沮丧是因为,例如,在计算机科学领域,算法经常被描述,但不同之处在于这些描述旨在快速理解(例如,用于桌面检查)和实现。

我们知道,例如,在学习哈希表是什么以及如何使用它时,我们在日常工作中几乎不需要知道哈希函数的具体细节。但我们也知道哈希函数是什么,以及在哪里可以了解更多关于哈希函数的具体细节以及如何编写自己的哈希函数。为什么机器学习不能像这样工作呢?

机器学习中遇到的“理论”的绝大部分都与机器学习算法有关。如果您询问任何初学者他们为什么对理论感到沮丧,您会了解到这是关于学习如何理解或使用特定的机器学习算法。

在这里,“算法”比创建预测模型的过程更广泛。它还包括用于特征选择、创建新特征、转换数据以及估计模型在未见过数据上的准确性的算法(例如,交叉验证)。

因此,最后学习理论,实际上意味着学习机器学习算法。

深入研究理论的冲动

我通常建议对著名的机器学习数据集进行有针对性的练习。

这是因为像 UCI 机器学习存储库上的那些著名机器学习数据集很容易使用。它们很小,可以放入内存并在您的工作站上处理。它们也经过充分研究和理解,因此您有比较的基准。

您可以在文章“使用 UCI 机器学习存储库的小型内存数据集练习机器学习”中了解有关有针对性地练习机器学习数据集的更多信息。

理解机器学习算法是这个过程的一部分。原因是,在成功处理标准机器学习算法的过程中,您会遇到局限性。您会想知道如何从某个算法中获得更多,或者想知道如何更好地配置它,或者它实际上是如何工作的。

这种想要了解更多和好奇心将驱动您去学习机器学习算法的理论。您将不得不拼凑算法的理解,以实现更好的结果。

我们看到,年轻开发者在各种背景下也出现过同样的情况,他们最终会研究开源项目、教科书甚至研究论文的代码来磨练自己的技艺。成为一个更好、更有能力的程序员的需求促使他们这样做。

如果您充满好奇心并渴望成功,您将无法抗拒学习理论。

理解机器学习算法的 5 种技术

在您进行有针对性的练习时,将会有一个深入研究机器学习算法的时间

届时,您可以使用一些技术和模板来快速完成此过程。

在本节中,您将了解到 5 种可以帮助您快速理解机器学习算法理论的技术。

1) 创建机器学习算法列表

刚开始时,您可能会被大量的可用算法压得喘不过气来。

即使在试用算法时,您也可能不确定要将哪些算法纳入您的组合(提示:要多样化)。

刚开始时,一个很棒的技巧是跟踪您读过的算法。这些列表可以很简单,只包含算法的名称,并且随着您的兴趣和好奇心的增长,可以增加复杂性。

捕获细节,例如它们适合的问题类型(分类或回归)、相关算法以及分类(决策树、核方法等)。当您看到一个陌生的算法名称时,将其添加到您的列表中。当您开始一个新问题时,尝试一些您以前从未用过的算法。在之前用过的算法旁边打个勾。依此类推。

控制列表中的算法名称可以让您掌握主动。这个极其简单的策略可以帮助您摆脱不知所措。您简单的算法列表可以在以下方面节省大量时间和精力:

  • 尝试用于新的和不同问题类型(时间序列、评分系统等)的算法的思路。
  • 可以研究以了解更多应用方法的算法。
  • 按类别(树、核方法等)掌握算法类型。
  • 避免陷入固定某个最喜欢的算法的问题。

开始创建算法列表,打开一个电子表格并开始。

有关此策略的更多信息,请参阅文章“通过创建有针对性的机器学习算法列表来掌控局面”。

2) 研究机器学习算法

当您想了解更多关于某个机器学习算法的信息时,您需要进行研究。

您对研究算法的主要兴趣在于学习如何配置它以及它是如何工作的。

研究不仅仅是为了学者。一些简单的技巧可以帮助您在收集给定机器学习算法的信息方面走得很远。

关键是信息的来源多样化。以下是您可以参考的信息来源类型列表,以了解您正在研究的算法。

  1. 权威来源,如教科书、讲义、幻灯片和概述论文。
  2. 重要来源,如算法首次被描述的论文和文章。
  3. 前沿来源,描述了算法的最新扩展和实验。
  4. 启发式来源,如机器学习竞赛、问答网站上的帖子和会议论文。
  5. 实现来源,如工具和库的开源代码、博客文章和技术报告。

您不必是博士研究员,也不必是机器学习算法专家。

花时间仔细阅读许多来源,收集您试图弄清楚的机器学习算法的事实。专注于您可以应用或理解的实际细节,其余的留给以后。

有关研究机器学习算法的更多信息,请参阅文章“如何研究机器学习算法”。

3) 创建自己的算法描述

您在研究中发现的机器学习算法描述将是不完整和不一致的。

一种您可以采用的方法是整理您自己的迷你算法描述。这是另一种非常简单且非常强大的策略。

您可以设计一个标准的算法描述模板,其中仅包含对您从算法中获得最大收益有用的详细信息,如算法使用启发式、伪代码列表、参数范围和资源列表。

然后,您可以在多个关键算法中使用相同的算法描述模板,并开始构建您自己的小型算法百科全书,以便将来可以参考。

您可能希望在自己的算法描述模板中使用的一些问题包括:

  • 算法的标准缩写是什么?
  • 算法的目标或目的是什么?
  • 算法的伪代码或流程图描述是什么?
  • 使用算法的启发式方法或经验法则是什么?
  • 了解算法的有用资源有哪些?

您会对这些描述的有用性和实用性感到惊讶。例如,我使用这种方法写了一本关于自然启发式算法描述的书,多年来我仍然会参考它。

有关如何创建有效的算法描述模板的更多信息,请参阅文章“如何学习机器学习算法”。

有关我使用标准算法描述模板描述的算法书的更多信息,请参阅“智能算法:自然启发式编程秘籍”。

4) 研究算法行为

机器学习算法是复杂的系统,有时通过它们在实际数据集上的行为来理解它们是最好的。

通过设计使用小型数据集的机器学习算法的实验,您可以深入了解算法的工作原理、局限性以及如何以可能转化为其他问题上卓越结果的方式进行配置。

您可以用来研究机器学习算法的一个简单过程如下:

  1. 选择一个您想了解更多的算法(例如,随机森林)。
  2. 确定您想回答的关于该算法的一个问题(例如,树的数量的影响)。
  3. 设计一个实验来回答这个问题(例如,在几个二分类问题上尝试不同数量的树,并绘制与分类准确率的关系图)。
  4. 执行实验并写下您的结果,以便将来使用。
  5. 重复这个过程。

这是应用机器学习真正令人兴奋的方面之一,通过您自己简单的调查,您可以获得令人惊讶的最新成果。

有关如何从算法行为中学习的更多信息,请参阅文章“如何研究机器学习算法行为”。

5) 实现机器学习算法

没有比亲手实现更能深入了解机器学习算法了。

从头开始实现机器学习算法时,您将面临给定实现所涉及的无数微小决策。您可能决定用经验法则来解决其中一些问题,或者将它们全部作为参数暴露给用户。

下面是一个可重复的过程,您可以使用它从头开始实现机器学习算法。

  1. 选择一种编程语言,您最熟悉的语言可能是最好的。
  2. 选择一个要实现的算法,从简单的开始(下方有列表)。
  3. 选择一个问题来测试您的实现,2D 数据易于可视化(即使在 Excel 中)。
  4. 研究该算法并利用许多不同的信息来源(例如,阅读教程、论文、其他实现等)。
  5. 单元测试该算法以确认您的理解并验证实现。

从小处着手,建立信心。

例如,作为您第一个从头开始实现的机器学习算法,您可以选择以下 3 种算法:

有关如何实现机器学习算法的更多信息,请参阅文章“如何实现机器学习算法”。

另请参阅文章:

理论并非只为数学家而设

机器学习并非只为数学精英而设。您可以了解机器学习算法的工作原理以及如何从中获得最大收益,而无需深入研究多元统计学。

您不必擅长数学。

正如我们在技术部分看到的,您可以从算法列表开始,然后逐渐深入到算法研究、描述和算法行为。

通过这些方法,您可以在不深入数学的情况下走得很远。

您不必是学术研究人员。

研究不仅仅是为了学者。任何人都可以阅读书籍和论文,并整理出自己对某个主题(例如特定机器学习算法)的理解。

您最大的突破将来自于您扮演“科学家”的角色,并像对待需要研究的复杂系统一样对机器学习算法进行实验。您会发现许多有趣的细微行为,这些行为甚至可能没有被记录下来。

采取行动

选择上面列出的一个技术并开始实施。

我是说今天,马上。

不确定从哪里开始?

这里有 5 个不错的起点建议:

  1. 列出 10 种分类机器学习算法(可以看看我的算法之旅来获取一些想法)。
  2. 找到五本详细描述随机森林的书籍。
  3. 使用您自己的算法描述模板创建关于朴素贝叶斯的五张幻灯片演示。
  4. 打开 Weka,在鸢尾花数据集上查看“k”参数如何影响 k-最近邻的准确率。
  5. 使用随机梯度下降实现线性回归。

您采取行动了吗?喜欢这篇文章吗? 请在下方留言。

了解机器学习算法的工作原理!

Mater Machine Learning Algorithms

几分钟内了解算法如何工作

...只需算术和简单示例

在我的新电子书中探索如何实现
精通机器学习算法

它涵盖了**10种顶级算法**的**解释**和**示例**,例如:
_线性回归_、_k-近邻_、_支持向量机_等等...

最后,揭开
机器学习算法的神秘面纱

跳过学术理论。只看结果。

查看内容

38 条回复“5 种理解机器学习算法的方法(不涉及数学)

  1. Tamim Syed 2015年9月3日,上午2:28 #

    精彩的文章。很享受。

  2. Alexis 2015年9月5日,上午7:32 #

    很棒的文章。
    然而,我还是要说,如果你想解读结果,并清楚地理解所做的假设及其含义,理论就很重要。因此,扎实的统计学和概率论背景总是必要的。
    仅仅依赖算法作为黑箱来解决某些类型的问题,而没有任何对其原理、优缺点等的理解,是有些危险的。

    一本适合初学者的好书:《从零开始的数据科学》(O'Reilly)。

    问候,

    Alexis

    • Jason Brownlee 2015年12月23日,上午10:03 #

      说得好,也推荐了不错的书,Alexis。

  3. Bob 2015年11月6日,上午6:52 #

    Jason

    说得太对了,正是我需要了解的,谢谢!

    Alexis

    从以解决方案为导向的从业者的角度来看,我需要花费很多辈子才能理解我使用的每个黑箱的全部理论。

    我必须满足于一种更功能性的方法,只了解每个黑箱理论和行为的足够多的知识以正确使用它。详细的理论是在此之后,在时间和兴趣允许的情况下。通常是时间不允许。

    祝好,

    Bob

    • Jason Brownlee 2015年12月23日,上午10:06 #

      我完全同意 Bob,这正是我教授的自上而下的方法。

  4. Jay 2016年1月13日,上午9:37 #

    嗨,Jason,
    当我听说那些打破记录的算法论文时(比如,这篇在 2015 年 ILSVRC 竞赛中获得第一名的论文:http://arxiv.org/pdf/1512.03385v1.pdf),我就会很兴奋并尝试去阅读。

    然后我才意识到,我真的读不懂其中的数学符号。比如,斯坦福大学的这个关于 Softmax 回归的 ML 教程也是同样的情况:http://ufldl.stanford.edu/tutorial/supervised/SoftmaxRegression/

    完全不知道其中一些符号的意思。有时看起来像是集合论符号?

    总之,我真正的问题是:我该如何弄清楚这些符号?有没有什么参考资料我可以用来了解更多关于符号以及何时/为什么使用它们?

    • Jason Brownlee 2016年1月13日,下午8:16 #

      你好 Jay。

      嗯。我同意,伙计,这很难。

      所以,对于 Softmax,您可以找到许多 Python 或其他语言的实现,将其分解并单独研究。您也可以将其导入电子表格中,绘制输入到输出的映射函数。

      这篇文章的普遍观点是寻找算法的替代描述,这些描述更容易理解,并对其进行调整以更好地理解它们。

      回到论文,尤其是后者。这需要时间。您可以逐个符号地理解,它们都会被定义——是的,您是对的,有一些关于实数集的数字的通用集合符号等等。也许可以从一个更小的例子开始练习。如果您必须理解符号,那么您必须通过大量符号的练习。Softmax 回归看起来相当简单,但确实需要一点线性代数来处理矩阵符号。不是本科课程的量,但也许可以看看 Khan Academy 的几个视频。

    • Prakash Hariharabalan 2019年7月25日,晚上10:14 #

      你好 Jay,
      您首先应该问的问题是:为什么要花时间去理解这个特定的算法?为了什么目的?应用机器学习和机器学习的研究领域之间存在很大的区别。通常,除非您正在为他人实现算法,否则我认为,阅读这些研究论文的摘要应该足够了,开发人员应该专注于从已实现它们的库中获得价值。

      • Jason Brownlee 2019年7月26日,上午8:25 #

        同意!

        举个例子,您需要一个排序好的包含成百上千个元素的列表,所以您从 API 中使用一个排序算法。您不太关心它是什么算法,也不想从头编写它——您有项目要完成,还有其他任务要做……

        关注价值和平均情况,而不是细节和谷歌规模。

  5. Pozy 2016年1月17日,下午2:55 #

    很棒的文章。这真的建立了作为软件工程师背景的信心。

  6. James Burkill 2016年3月23日,晚上10:23 #

    我被零散地教授了数学和理论,并立即在实践之前学习。

    安德鲁·吴(Andrew Ng)就是这样教的,我的研究生计算机科学学习也是这样覆盖的。

    每当我试图匆忙地在没有充分理解算法之前就使用 WEKA 之类的工具时,我发现自己浪费了大量时间来理解结果和调整参数。

    在大学课程中,可能需要高级的数学知识——否则您可能会在讲座中迷失方向——但对于可以暂停或重看的在线讲座来说,这种顾虑不存在。

    在我看来,开发人员学习机器学习的最佳方式是开始在线课程。当出现您不理解的概念时,只需暂停并找到一个可汗学院(Kahn Academy)的视频来填补空白。

  7. Rajesh 2016年8月11日,晚上11:32 #

    很棒的文章!非常感谢。

  8. Ganesh 2016年11月16日,下午7:48 #

    Jason,感谢您写了这么好的文章。

    我现在正处于同样的思考阶段,您的文章给我带来了启示。

  9. Hassan 2016年12月31日,凌晨12:32 #

    我同意这些科目的教学很糟糕。我拥有工程物理学的背景,在研究生统计学方面没有任何问题,但机器学习中的理论(我学习了神经网络和人工智能课程)在讲座中仍然无法理解,而且非常令人头疼。最后,我勉强及格,尽管我常常因为我的数学能力而受到大学朋友的赞扬。

    绝对糟糕。

    • Jason Brownlee 2016年12月31日,上午7:03 #

      谢谢 Hassan,很高兴您在这里。

      如果我能帮上忙,我很乐意。

  10. Vinod Ralh 2017年2月17日,上午9:03 #

    很棒的文章🙂这就是为什么我们程序员从“Hello World”程序开始——为了获得一些积极的东西来激励我们。

  11. Tyler Renelle 2017年2月24日上午7:57 #

    我做了一期关于机器学习所需数学以及学习资源的播客节目——http://ocdevel.com/podcasts/machine-learning/8。我完全赞同你由浅入深的学习方法。先动手实践,后学理论!

  12. Sachin Shelar 2017年3月24日下午4:19 #

    Jason,感谢您的文章。非常有帮助。对于开发者和机器学习入门者来说,这是非常有用的信息。我喜欢您的由浅入深的教学方法。

  13. Vinit Kumar Singh 2017年7月18日下午5:15 #

    Jason……感谢发布这么好的帖子。

    对于许多程序员来说,如何开始学习机器学习仍然不清楚,而当你谷歌搜索时,你会发现许多不同的想法。我喜欢“边学边做”的方法,这将让你了解整个算法的来龙去脉。我认为仅仅学习所有算法对机器学习是无济于事的。

    我刚开始遵循您所有的学习方法,如果将来遇到困难或有疑问,我会向您请教。

    我来自Datacom领域,有7年的经验,但因为对算法和数学的热爱,我开始学习机器学习。我不知道目前的市场是否会接受我,因为我没有数据分析和研究背景。如果您能在这方面给出一些建议,我将不胜感激。

    • Jason Brownlee 2017年7月19日上午8:21 #

      专注于学习如何使用机器学习工具交付成果,这是唯一重要的“货币”。

  14. Sudeshna 2018年5月27日上午8:55 #

    嗨,Jason,

    我正在阅读您的所有文章,因为我刚开始学习机器学习。我的编码能力也不是很好。您会建议我怎样的学习路径?例如:我尝试用 Python 实现了一个矩阵,但当我谷歌搜索时,发现大多数代码都使用 Numpy。我是否应该更专注于实现算法,而不是尝试用基础 Python 实现整个东西?您是否有关于我如何从新手成长为优秀程序员的建议文章?谢谢!!

  15. Kratik Saxena 2018年9月2日上午6:38 #

    嘿Jason,这篇帖子非常有帮助。我一直在找这个。
    您能为面向商业的人士推荐一个关于人工智能/机器学习的结构化课程吗,该课程能提供算法的理论概述?

  16. Aimee 2019年3月8日上午4:44 #

    Jason,我喜欢你的方法!作为一个数学爱好者,我看到很多人试图从另一个角度“教授”这些概念,我认为这就是为什么很多人放弃或产生数学/机器学习焦虑。你让它变得平易近人,增加了人们的信心和好奇心,同时消除了他们的恐惧。做得好!🙂

    • Jason Brownlee 2019年3月8日上午7:57 #

      谢谢!

      是的,让读者对这些精彩算法的强大功能着迷,然后再慢慢解释它们是如何工作的。

  17. RaviTeja 2020年1月22日上午1:54 #

    我是一名计算机科学专业的本科生,对我来说学习机器学习的正确方法是什么?

      • RaviTeja 2020年1月27日上午2:10 #

        Jason,非常感谢!您的文章和工作帮助了像我一样的许多人:)。

        要开始为开源机器学习项目做出贡献,需要具备多少机器学习专业知识?
        需要多少机器学习的专业知识,才能开始为开源机器学习项目做贡献?

  18. Radu 2020年1月25日上午8:52 #

    这篇帖子非常棒。感谢分享知识。

留下回复

Machine Learning Mastery 是 Guiding Tech Media 的一部分,Guiding Tech Media 是一家领先的数字媒体出版商,专注于帮助人们了解技术。访问我们的公司网站以了解更多关于我们的使命和团队的信息。