# 从零开始实现机器学习算法的好处

> 原文： [https://machinelearningmastery.com/benefits-of-implementing-machine-learning-algorithms-from-scratch/](https://machinelearningmastery.com/benefits-of-implementing-machine-learning-algorithms-from-scratch/)

入门时机器学习很难理解。有许多规定和使用的算法和过程，许多难以渗透解释工作的方式和原因。

它可以感到压倒性的。

可用于处理机器学习算法和实践的方法是从零开始实现它们。这将使您深入了解算法的工作原理以及方法中可以参数化或修改以将其调整为特定问题的所有微决策点。

在本文中，您将了解从零开始实现机器学习算法的优势和局限性，以及如何通过完成算法教程来加速此过程。

[![Follow Tutorials to Implement Machine Learning Algorithms](img/f8a3ba83b77e6650418b843c89b38d56.jpg)](https://3qeqpr26caki16dnhd19sv6by6v-wpengine.netdna-ssl.com/wp-content/uploads/2014/09/Follow-Tutorials-to-Implement-Machine-Learning-Algorithms.jpg)

按照教程实现机器学习算法
照 [ucdaviscoe](https://www.flickr.com/photos/ucdaviscoe/6046652813) ，保留一些权利

## 实现机器学习算法

从零开始实现机器学习算法可以让您深入理解算法以及仅通过应用该方法难以实现的置信度和所有权感。

### 优点

从零开始实现算法的好处是：

*   **了解**：您将深入了解该算法的工作原理。您了解该方法的数学描述如何与您编码操作的数字的向量和矩阵相关。您还将了解所有参数的使用方式，效果，甚至可以深入了解如何进一步参数化以使其专门针对问题。
*   **起点**：您的实现将为更高级的扩展甚至是使用该算法的操作系统提供基础。您对算法和实现的深入了解可以让您在使用不透明的现成库时了解自己代码的空间和时间复杂性。
*   **所有权**：实现是您自己的实现，让您对如何实现系统的方法和所有权充满信心。它不再仅仅是一种机器学习算法，而是一种现在位于工具箱中的方法。

## 获取免费算法思维导图

![Machine Learning Algorithms Mind Map](img/2ce1275c2a1cac30a9f4eea6edd42d61.jpg)

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

我已经创建了一个由类型组织的60多种算法的方便思维导图。

下载，打印并使用它。

### 扩展

实现算法后，您可以探索对实现进行改进。您可以探索的一些改进示例包括：

*   **实验**：您可以将您在算法实现中做出的许多微观决策暴露为参数，并对这些参数的变化进行研究。这可以为您提供可以共享和推广的算法实现的新见解和消歧。
*   **优化**：您可以通过使用工具，库，不同语言，不同数据结构，模式和内部算法来探索提高实现效率的机会。您对经典计算机科学的算法和数据结构的了解对此类工作非常有益。
*   **专业化**：您可以探索使算法更具体针对问题的方法。创建生产系统时可能需要这样做，这是一项宝贵的技能。使算法更具体问题还可以导致效率（例如运行时间）和功效（例如准确度或其他表现测量）的增加。
*   **泛化**：可以通过使特定算法更通用来创建机会。程序员（如数学家）在抽象方面具有独特的技能，您可以看到该算法如何完全应用于一类问题或其他问题的更一般情况。

## 实现算法的局限性

从零开始实现算法是我们之前讨论过的一种方法。 [是我的](http://machinelearningmastery.com/how-to-implement-a-machine-learning-algorithm/ "How to Implement a Machine Learning Algorithm")[小型项目方法论](http://machinelearningmastery.com/self-study-machine-learning-projects/ "4 Self-Study Machine Learning Projects")中的项目类型之一。在此项目类型中，我建议您在实现之前执行自己的文献调查并首先研究算法的工作原理。

这进一步导致了算法描述模板，为[提供了一个如何有效地描述机器学习算法的工具](http://machinelearningmastery.com/how-to-learn-a-machine-learning-algorithm/ "How to Learn a Machine Learning Algorithm")，以便您深入理解它。

所有这一切的问题在于它非常耗时。研究算法涉及查找，阅读和总结大量书籍，示例代码和研究论文，并且可以在数天到数周的时间内完成一位优秀的学术研究人员。

如果您认为您可能想要实现十几种机器学习算法，您可能很容易被要求投入超过半年的时间。

此外，您自己的代码实现可能存在可能难以找到的错误（这些算法有一种工作方式可以激发错误，降低表现）。在使用代码实现方法之前，您可能还会遇到必须理解的数学中非直观的飞跃。

## 通过教程简化流程

您可以通过跟随并完成教程来简化此过程。

机器学习算法教程解释了该方法，并向您展示如何从零开始逐步实现算法，以便最终实现一个有效的实现。您可以从零开始获得算法实现的所有好处，而无需研究和破译教科书和学术论文。

一个好的教程有许多原则：

*   **循序渐进**：指南是离散的，引导读者一步一步地穿过材料，随着前进步骤的发展。
*   **模块化**：实现被细分为模块化部分，这些模块化部分在被绘制到整个算法的最终工作演示之前被独立显示和演示。
*   **慢**：执行缓慢，在每个渐进步骤中引入一个新东西，以便整体可以理解为各部分的总和。
*   **代码**：每个步骤和整个教程的完整工作示例。很明显，但是很容易忘记或者因为没有测试代码而陷入困境。必须解释所有代码并且必须执行。
*   **参考文献**：必须为希望深入了解材料的读者提供额外的资源和阅读材料。
*   **扩展**：完成本教程后，如果他们有兴趣进一步实现，必须建议读者可以采取的其他练习。必须就如何整合其他先进元素或如何解决所提供实现方案的问题提出建议。

这是一种在编程中学习算法和数据结构的流行方法，并且这种方法因其简单性而容易被忽视。因此，很少有好的机器学习算法教程可用。

对于python程序员来说，这是一本很好的资源：[编程集体智能：构建智能Web 2.0应用程序](http://www.amazon.com/dp/0596529325?tag=inspiredalgor-20)。本书将从零开始逐步创建一系列机器学习系统。

## 摘要

在这篇文章中，您发现了从零开始实现机器学习算法的好处，以及它可以提供的复杂算法的信心和主人翁意识。

您发现了这种方法的局限性，以及在教科书和研究论文可以实现之前研究，提炼和总结算法需要多长时间。

最后，您发现了一个简短的方法是遵循机器学习算法教程，该教程向您展示如何从零开始实现算法并为您提供优势并使您不必进行研究。

我目前正在准备一系列关于如何从零开始实现算法的机器学习教程。如果您对此感兴趣，请发表评论并告诉我。