社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

无需数学就能理解机器学习算法的五种方法?

TalkingData • 5 年前 • 498 次点击  


在自上而下研究机器学习的方法中,理论学习应该在哪个步骤?


在传统的机器学习教学方法中,首先需要广泛的数学背景才能理解理论。在我教机器学习的过程中,我会首先教你如何端到端地解决问题并交付结果。


那么理论学习放在哪里才合适?


在这篇文章中,您将发现当我们谈论机器学习中的“理论”时,“理论”所代表的真正含义。提示:这都是关于算法的。


一旦您熟练地解决问题并交付结果,您就会发展出更深层次的理论学习动力,以便更好地理解和获得结果。没有人能够阻止你。


最后,本文介绍了在标准数据集上练习机器学习时可以使用的5种方法,用来逐步增加对机器学习算法的理解。


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


向开发人员传授机器学习的方式是在浪费时间。


它是自下而上的。如果您主要是使用机器学习作为解决问题的工具,而不是作为该领域的研究人员,那么这就是在浪费时间。


传统方法要求您在学习算法理论之前先学习线性代数,概率和统计等所有必备数学。如果您能接触到算法的工作实现,或是讨论如何端到端地解决问题,并提供可行、可靠和准确的预测模型,那么您是很幸运的。


我要教给大家的是自上而下学习机器学习的方法。在这种方法中,我们首先:

1. 学习系统化的过程来解决端到端的问题

2. 将过程映射到“最佳”机器学习工具和平台

3. 有针对性的完成测试数据集的实践


您可以在“ 为程序员进行机器学习:从开发人员到机器学习从业者的飞跃 ”这一文章中了解更多关于自上而下机器学习教学的方法。

https://machinelearningmastery.com/machine-learning-for-programmers/


那么理论学习到底是这个过程中的哪个步骤呢?


当我们在谈论理论的时候我们在谈论什么?当您在测试数据集上练习时,您究竟如何学习该理论?


理论真的都与算法有关


机器学习领域中理论是很密集的。


它很密集,因为在这个领域里有一种传统,是用数学方法去描述和解释概念。


这很有用,因为数学可以非常简洁的描述,减少模糊性。它们还可以利用描述上下文中的技术(例如,对过程的概率理解)进行分析。


许多这样的数学技术经常与机器学习算法的描述捆绑在一起。对于那些只想对某个方法建立肤浅的理解来配置和应用它的人来说,这令人无所适从。


如果您没有能够解析和理解算法描述的基础,那将是令人沮丧的。因为在计算机科学这样的领域,算法总是被描述出来的,但不同的是,描述是为了快速理解(例如用于桌面检查)和实现。


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


在机器学习中遇到的大部分“理论”与机器学习算法有关。如果你问任何一位初学者,他们为什么对理论感到沮丧,你会发现都与学习理解或使用特定的机器学习算法有关。


算法创建的过程比预测模型创建的过程涉及的知识更广泛。它还涉及在看不到的数据上选择特征,设计新特征,转换数据和模型准确性估计(例如交叉验证)。


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


在潜移默化中学习理论


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


这是因为众所周知的机器学习数据集,如UCI机器学习库中的那些,很容易使用。它们很小,适合存储,可以在工作站上处理。这些数据集都经过充分研究和理解,因此您可以与基线进行比较。


您可以在“ 使用UCI机器学习库中的小型内存数据集练习机器学习 ”中了解有关机器学习数据集实践的更多信息。

https://machinelearningmastery.com/practice-machine-learning-with-small-in-memory-datasets-from-the-uci-machine-learning-repository/


这个过程适合用来理解机器学习算法的原因是,为了获得标准机器学习算法的结果,您会遇到一些限制。您会想要了解更多信息,包括如何从给定算法中获得更多信息,或者了解有关如何最佳配置算法,或是如何实际工作等。


好奇心将促使您研究机器学习算法的理论。您将被迫整合对算法的理解,以获得更好的结果。


我们在不同背景的年轻开发人员中都看到了同样的效果,最终他们会去研究开源项目、教科书甚至论文的代码,以便磨练他们的技艺。他们这么做的动力是:想要成为一个更有能力程序员!


如果你很好奇并且有动力去取得成功,你就无法抗拒去研究算法背后的理论。


五个理解机器学习算法的技巧


作为目标实践的一部分,现在是时候深入了解机器学习算法了。


当那个时候到来时,您可以使用许多技术和模板来缩短流程。


在本节中,您将了解五种可用于快速理解机器学习算法理论的技术。


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

当您刚刚开始学习时,您可能会对可用的大量算法感到不知所措。


即使在现场测试算法的时候,您可能不确定要包含哪些算法(提示:多样化)。


刚开始时,一个很好的技巧是记录您所阅读的算法。这些列表可以像算法的名称一样简单,并且随着您的兴趣和好奇心,可以增加复杂性。


捕获算法详细信息--例如它们适合的问题类型(分类或回归),相关算法和分类(决策树,内核等)。当您看到新的算法名称时,请将其添加到列表中;当您遇到新问题时,请尝试以前从未使用过的算法;在您之前使用的算法旁边进行标记等等。


巧妙管理算法的名称,这种荒谬而简单的策略可以帮助你摆脱压倒性的压力。您的简单算法列表可以为您节省大量时间,减少大量挫折,示例如下:

  • 尝试新的和不同问题类型(时间序列,评级系统等)的算法

  • 您可以调查的算法,以了解有关如何应用的更多信息。

  • 按类别(树,内核等)处理算法类型。

  • 避免固定最喜欢的算法。


快打开Excel开始创建自己的算法列表吧!


有关此策略的更多信息,请参阅“ 通过创建机器学习算法的目标列表来控制 ”一文。

https://machinelearningmastery.com/create-lists-of-machine-learning-algorithms/


2、研究机器学习算法

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


产生研究算法的兴趣,主要原因是想要学习如何配置它并了解它是如何工作的。


做研究不仅仅适用于学术界。一些简单的提示可以帮助您收集有关给定机器学习算法的信息。


信息来源多样性学习的关键。以下是您可以参考的来源类型,用来获取您正在研究的算法信息。

  • 权威资料,如教科书,讲义,幻灯片和概述文件。

  • 诸如论文和文章等开创性的资料来源,其中首先描述了算法。

  • 最先进的资源,描述了算法的最新扩展和实验。

  • 启发式资源,如机器学习竞赛,问答网站和会议论文。

  • 实施源,例如工具和库的开源代码,博客文章和技术报告。


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


花点时间多挑选一些来源,收集您想要弄清楚的机器学习算法的本质,专注于用得上的以及可理解的,其他暂时忽略。


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

https://machinelearningmastery.com/how-to-research-a-machine-learning-algorithm/


3、创建自己的算法描述

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


其中一种方法是把您自己的迷你算法描述总结在一起。这是另一种非常简单且非常强大的策略。


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


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


您可能希望在自己的算法描述模板中使用的一些项目:

  • 算法使用的标准缩写是什么?

  • 算法的目标或目的是什么?

  • 算法的伪代码或流程图描述是怎么样的?

  • 使用该算法的启发式或经验法则是什么?

  • 有关该算法的更多信息,有哪些有用的资源?


您会惊讶于这些描述的实用性。例如,我现在依然会用到我几年前收集总结的算法。


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

https://machinelearningmastery.com/how-to-learn-a-machine-learning-algorithm/


有关使用标准算法描述模板描述的更多信息,请参阅“ 聪明的算法:自然启发的编程配方 ”。

http://cleveralgorithms.com/nature-inspired/index.html


4、调查算法行为

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


通过使用小型数据集设计机器学习算法实验,您可以从中了解许多信息,关于算法如何工作、它的局限性以及如何配置它,以及如何将结果应用到其他问题上。


可用于研究机器学习算法的简单过程如下:

1. 选择您想要了解更多信息的算法(例如随机森林)。

2. 确定想要解决的算法问题(例如,树木数量的影响)。

3. 设计一个实验来找到该问题的答案(例如,在一些二元分类问题上尝试不同数量的树,并绘制与分类准确性的关系图)。

4. 执行实验并记录结果,以便复用。

5. 重复这个过程。


这是机器学习真正令人兴奋的方面之一,通过您自己的简单调查,您可以获得惊人的和最先进的结果。


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

https://machinelearningmastery.com/how-to-investigate-machine-learning-algorithm-behavior/


5、实现机器学习算法

除了动手实现之外,没有其他方法能够更深入的了解机器学习算法。


在从头开始实现机器学习算法时,您将面临该算法实现下的无数微观决策。您可以用一些经验法则来掩盖这些规则,将它们全部作为参数公开给用户。


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

1. 最好选择一种您最熟悉的编程语言。

2. 选择要实现的算法,从容易的事情开始。

3. 在开发时选择一个问题来测试您的实现,2D数据有利于可视化(甚至是在Excel中)。

4. 利用许多不同的信息来源研究算法(例如阅读教程,论文,其他实现等)。

5. 对算法进行单元测试以确认您的理解并验证实施。


从小处着手,建立信心。


例如,适合作为第一个从头开始实现的机器学习算法是以下三种:

  • 使用梯度下降的线性回归

  • k-最近邻(参见我的Python教程)

    https://machinelearningmastery.com/tutorial-to-implement-k-nearest-neighbors-in-python-from-scratch/

  • 朴素贝叶斯(参见我的Python教程)

    https://machinelearningmastery.com/naive-bayes-classifier-scratch-python/


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

https://machinelearningmastery.com/how-to-implement-a-machine-learning-algorithm/


另见帖子:

  • “ 从头开始实现机器学习算法的好处 ”

    https://machinelearningmastery.com/benefits-of-implementing-machine-learning-algorithms-from-scratch/

  • “ 实现机器学习算法时不要从开源代码开始 ”

    https://machinelearningmastery.com/dont-start-with-open-source-code-when-implementing-machine-learning-algorithms/


理论不是仅为了数学家准备的


机器学习不是仅仅适用于数学精英。您可以了解机器学习算法的工作原理,以及如何在不深入了解多变量统计数据的情况下充分利用它们。


你不需要擅长数学。


正如我们在技术部分中看到的,您可以从算法列表开始,并深入过渡到算法研究,算法描述和算法行为。


你可以使用这些方法走得很远而不需要在数学上深入很多。


您不需要成为博士或学术研究员。


研究不仅仅适用于学术界。任何人都可以阅读书籍和论文,并编写自己对某个主题的理解,如特定的机器学习算法。


当你扮演“ 科学家 ” 的角色并开始尝试机器学习算法时,你将获得最大的突破,就好像它们是需要学习的复杂系统一样。您将发现可能无法记录的各种有趣的细节。


赶快行动吧!


选择上面列出的技术之一并开始使用。


我的意思是今天,现在立刻开始。


不确定从哪里开始?


以下是5个好方法可以帮助你开始:

1. 列出10种用于分类的机器算法。

https://machinelearningmastery.com/a-tour-of-machine-learning-algorithms/

2. 找五本书,详细描述随机森林。

3. 使用您自己的算法描述模板在Naive Bayes上创建五张幻灯片演示文稿。

4. 打开Weka,“k”参数如何影响鸢尾花数据集上k-最邻近的准确性。

https://machinelearningmastery.com/how-to-run-your-first-classifier-in-weka/

5. 使用随机梯度下降实现线性回归。

作者:Jason Brownlee博士,机器学习专家。他教开发人员如何通过实践教程获得现代机器学习方法的结果。


原文选自:machinelearningmastery.com


本文转载自:TalkingData数据学堂


封面图来源:pexels by Pixabay

推荐阅读:

机器学习无从下手?这份清单可以让你事半功倍

豁然开朗,原来统计学和机器学习的区别是这样

深度学习+机器学习+强化学习 最强自学书单

好看就给点下呗

👇👇👇

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/37358
 
498 次点击