# 机器学习自学指南

> 原文： [https://machinelearningmastery.com/self-study-guide-to-machine-learning/](https://machinelearningmastery.com/self-study-guide-to-machine-learning/)

你可以做很多关于机器学习的事情。

您可以使用书籍和课程等资源，可以输入的比赛和可以使用的工具。

在这篇文章中，我想在这些活动中加入一些结构，并建议在从程序员到机器学习大师的旅途中解决什么问题。

## 四级机器学习

考虑机器学习的四个级别的能力。这是一个模型，可以帮助我们思考可用的资源和活动，以及何时可以解决它们的好时机。

1.  初学者
2.  初学者
3.  中间
4.  高级

我想在这里将初学者与新手分开，因为我想表明绝对的初学者（对该领域感兴趣的程序员）如果他们选择的话，他们之前就有一条路径。

我们将浏览这四个级别中的每一个级别，并查看可以帮助某个级别的人学习更多知识和技能水平的资源和活动。

细分只是一个建议，很可能在某个级别之前或之后的某个活动或资源在细分的给定级别上非常有用和适当。

我认为整体结构很有用，我很想听听你的想法，在下面留下你的想法。

![Four Levels of Machine Learning](img/44af070e203ceec0ee6b44bcbdf1f295.jpg)

记入 [pugetsoundphotowalks](http://www.flickr.com/photos/25636851@N03/3406567851/sizes/z/in/photostream/) ，保留一些权利

## 初学者

初学者是对机器学习感兴趣的程序员。他们可能已经开始阅读一本书，维基百科页面，或者在课程中学习了一些课程，但他们并没有真正“_ 得到它 _”。他们感到沮丧，因为他们得到的建议是中间体和高级水平。

初学者需要一个温和的介绍。远离代码和教科书和课程。他们需要首先指出的原因和最新情况，为新手级材料奠定基础。

绝对初学者的一些活动和资源是：

*   **书籍介绍**：阅读有关程序员的良好机器学习和数据挖掘书籍的介绍，如[黑客机器学习](http://www.amazon.com/dp/1449303714?tag=inspiredalgor-20)（会员链接），[编程集体智慧](http://www.amazon.com/dp/0596529325?tag=inspiredalgor-20)（会员链接）和[数据挖掘：实用机器学习工具和技术](http://www.amazon.com/dp/0123748569?tag=inspiredalgor-20)（会员链接）。这些是适合初学者的好书，你可以在帖子[最佳机器学习资源入门](http://machinelearningmastery.com/best-machine-learning-resources-for-getting-started/ "Best Machine Learning Resources for Getting Started")中阅读更多相关内容。
*   **概述视频**：观看演示文稿，向外行观众概述机器学习。一些例子包括：[采访 Tom Mitchell](http://videolectures.net/mlas06_mitchell_itm/) 和 [Peter Norvig 关于大数据 Facebook Tech Talk](https://www.facebook.com/video/video.php?v=644326502463) 。
*   **与人们交谈**：询问他们是如何在这个领域开始的，他们为初学者推荐了什么资源，他们对这个领域感到兴奋。

## 初学者

新手与机器学习领域有过一些联系。他们读了一本书或上了一门课。他们知道他们感兴趣，他们想知道更多。他们开始得到它，并希望开始完成任务。

新手需要做点什么。他们需要付诸行动，使材料扎根并融入现有的知识结构，如他们所熟悉的编程语言或他们习惯解决的问题。

新手的一些活动和资源是：

*   **完成课程**：学习并完成斯坦福机器学习课程。记下大量笔记，尽可能完成作业，提出很多问题。
*   **阅读一些书籍**：不是教科书，而是上面列出的那些针对初学者程序员的友好书籍。
*   **学习工具**：学习驾驶像 [Scikit-Learn](http://scikit-learn.org/stable/) ， [WEKA](http://www.cs.waikato.ac.nz/ml/weka/) ， [R](http://www.r-project.org/) 等类似的工具或库。具体来说，了解如何使用您在书籍或课程中阅读或了解的算法。看到它在行动，并习惯在学习它们时尝试。
*   **写一些代码**：实现一个更简单的算法，如感知机，k 近邻或线性回归。编写一些程序来揭开方法的神秘面纱，并学习使其发挥作用所需的所有微观决策。
*   **完整教程**：关注并完成教程。开始构建一个包含数据集，脚本甚至源代码的小项目目录，您可以回顾，阅读和思考。

## 中间

新手已阅读一些书籍并完成了一些课程。他们知道如何驱动一些工具并编写了一堆代码来实现简单的算法和完成教程。一个中间人正在自己爆发，设计自己的项目来学习新技术，并与更大的社区进行互动和学习。

中级正在学习如何准确，有效和稳健地实现和运用算法。他们还建立了预先花费大量时间处理数据，清理，总结和思考可以回答的问题类型的技能。

中间体的一些活动和资源是：

*   **小型项目**：设计小型编程项目和实验，可以使用机器学习来解决问题。这就像设计和执行您自己的教程一样，以探索您感兴趣的技术。您可以实现算法或链接到提供算法的库。 [了解有关小型项目的更多信息](http://machinelearningmastery.com/self-study-machine-learning-projects/ "4 Self-Study Machine Learning Projects")。
*   **数据分析**：习惯于探索和总结数据集。自动化报告，了解何时使用哪些工具，并查找可以探索，清理的数据，以及可以练习技术和交流有趣内容的数据。
*   **阅读教科书**：阅读并内化有关机器学习的教科书。这可能需要技能来熟悉技术的数学描述并承认描述问题类和算法的形式。
*   **Write Plugins** ：为开源机器学习平台和库编写插件和软件包。这是学习如何编写健壮的生产级算法实现的练习。在项目中使用您自己的插件，请求社区进行代码审查，并尽可能将代码包含在平台中。获得反馈和学习是我们的目标。
*   **比赛**：参加机器学习比赛，例如与会议相关或在 [Kaggle](http://www.kaggle.com/) 等平台上提供的比赛。参与讨论，提出问题，了解其他从业者如何处理问题。添加到您可以绘制的项目，方法和代码的存储库中。

## 高级

一位高级从业者编写了大量代码，既可以集成机器学习算法，也可以自己实现算法。他们可能参加过比赛或书面插件。他们阅读了教科书，完成了课程，对该领域有广泛的了解，并对他们喜欢的一些关键技术有深入的了解。

高级从业者构建，部署和维护使用机器学习的生产系统。他们随时了解各个领域的新发展，并急切地寻找并了解一种方法的细微差别以及从其他前线从业者那里传来的技巧。

高级从业者的一些活动和资源是：

*   **自定义算法**：修改算法以满足他们的需求，这可能涉及实现类似问题域的会议和期刊论文中概述的自定义。
*   **新算法**：设计基于底层形式的全新方法，以应对他们遇到的挑战。它更多的是关于获得最佳结果而不是推进该领域的前沿。
*   **案例研究**：阅读甚至重新创建机器学习竞赛和其他从业者完成的案例研究。这些“我是如何做的”论文和帖子通常充满了数据准备，特征工程和技术使用的微妙专业技巧。
*   **方法论**：流程的系统化，无论是正式的还是为自己的。他们有办法解决问题并在此时获得结果，他们正在积极寻找方法，通过提示，最佳实践和新的更好的技术进一步完善和改进流程。
*   **研究**：参加会议，阅读研究论文和专着，与该领域的专家进行对话。他们可能会写下他们的一些作品并将其提交出版，或者只是将其放入博客文章中并重新开始工作。

掌握是连续的，学习不会结束。人们可以在这个旅程中的任何一点暂停和绕行，成为“_ 竞争家伙 _”或“_ 专业库家伙 _”。事实上，我希望这种弯路成为常态。

这种细分可以看作技术人员从初级到高级的线性路径，它是故意以程序员为中心的。我很想听到对这种阅读的批评，这样我才能做得更好。如果您发现自己在特定级别渴望更多，那么这个细分只是我对要解决的活动类型的建议。

**那你是什么级别，接下来要做什么？** 发表评论！

**UPDATE** ：继续关于 Reddit 的[讨论。](http://www.reddit.com/r/MachineLearning/comments/1tceo8/selfstudy_guide_to_machine_learning/)