机器学习自学指南

事实上有许多的途径能够了解机器学习,也有许多的资源例如书籍、公开课等可为所用,一些相关的比赛和工具也是你了解这个领域的好帮手。本文我将围绕这个话题,给出一些总结性的认识,并为你由程序员到机器学习高手的蜕变旅程中提供一些学习指引。php

机器学习的四个层次

根据能力能够将学习过程分红四个阶段。这也是一个有助于咱们将全部学习资源进行分类的好方法。java

  1. 初学阶段
  2. 新手阶段
  3. 中级阶段
  4. 高级阶段

我之因此把初学阶段和新手阶段区分开来,是由于我想让那些彻底初学者(对这个领域感兴趣的程序员)在初学阶段对机器学习有一个大体的认识,以便决定是否继续深刻。python

咱们将分别探讨这四个阶段,并推荐一些可以帮助咱们更好地理解机器学习和提升相关技能的资源。对学习阶段进行这样的分类只是我我的的建议,也许每一个分类的先后阶段中也有一些适合当前阶段的资源。程序员

我认为对机器学习有一个总体性的认识是很是有帮助的,我也但愿能听听大家的想法,经过在下面评论告诉我吧!算法

Four-Levels-of-Machine-Learning

初学阶段

初学者是指那些对机器学习感兴趣的程序员。他们或许已经接触过一些相关的书籍、wiki网页,或者是已经上过几节机器学习课程,可是他们并无真正地了解机器学习。他们在学习过程感到沮丧是由于他们获得的建议每每是针对中级或高级阶段的。编程

初学者须要的是一个感性的认识而不是纯粹的代码、教科书、课程。他们首先须要对机器学习有一个是什么、为何、怎么作的认识以此为接下来的阶段学习奠基基础。小程序

  • 入门书籍:阅读一些为程序员而写的数据挖掘与机器学习的入门书籍,例如《机器学习:实用案例解析》、《集体智慧编程》、《数据挖掘:实用机器学习工具和技术》,这些都是很好的入门书籍,推荐一篇进一步讨论这个话题的文章:《机器学习的最佳入门学习资源
  • 相关概述视频:也能够看一些科普性质的机器学习演讲。例如: 《采访Tom Mitchel》、《Peter Norvig 在Facebook的大数据演讲
    与人交谈:与机器学习领域的老手交流,问问他们是如何入门的,有什么资源值得推荐,是什么让他们对机器学习如此狂热。
    机器学习课程101:我总结了一些关于入门的观点,《为初学者准备的机器学习课程101》,若是你喜欢能够看一看。

新手阶段

新手是指那些已经对机器学习有必定了解的人,他们已经阅读过一些专业书籍或者是接受过完整地课程学习,而且对这个东西有很大的兴趣想作更深刻的了解,想经过进一步学习去解决他们所面临的问题。segmentfault

下面是给新手的一些资料或者建议:机器学习

  • 完成一门课程:完整地学习一门机器学习的课程,例如斯坦福大学的机器学习课程。多作课程笔记,尽量地完成课程做业,多问问题。
  • 阅读一些书籍:这里指的不是教科书,而是为上面所列举的为程序员初学者所准备的书籍。
  • 掌握一门工具:学会使用一门分析工具或者类库,例如python的机器学习包 Scikit-Learn、java的机器学习包 WEKAR语言或者其余相似的。具体地说,学习如何使用你在课程或书本上学来的算法,看看它们处理问题的实际效果。
  • 写一写代码:动手实现一些简单的算法,例如感知机、K近邻、线性回归。试图写一些小程序去阐述你对这些算法的理解。
  • 学习相关教程:完整地跟一门教程,为你所完成的小项目创建一个文件夹,其中包含数据集、脚本代码等,以便你能够随时回顾并有所收获。

中级阶段

在新手阶段已经阅读过一些专业书籍并完成了一些专业课程,这些人已经懂得如何使用机器学习相关的工具,而且也已经为实现机器学习算法和完成一些教程写过很多的代码了。中级阶段实际上是一个自我突破的过程,能够经过创建本身的项目去探索新的技巧并在社区的交流互动中获取更多的知识。ide

中级阶段的目标是学习如何实现并使用准确、合适、健壮机器学习算法。一样,他们也在数据预处理、数据清洗、概括总结上花了很多时间,并思考这些数据能解决什么问题。

下面是给中级学习者的一些资料或者建议:

  • 创建本身的小项目:本身设计小型的编程项目或者是应用机器学习算法解决问题的小实验。这就像是为探索你本身所感兴趣的技术而设计一些教程。你能够本身实现一个算法或者是提供一些实现这些算法类库的连接。
  • 数据分析:习惯于从数据集中探索并总结。知道何时该用什么工具,获取用于探索、学习相关技术的数据。
  • 阅读教科书:阅读并消化机器学习相关的教科书。这可能对理解用数学方式描述相关技术的能力有必定的要求,而且须要了解用公式的方式去对描述问题和算法。
  • 编写你本身的工具:为开源的机器学习平台或类库编写插件和相关的程序包。这是学习如何实现健壮的、能用于生产环境下的算法的一个很好的锻炼机会。将你的程序包运用到项目中,将代码提交给社区进行代码审核,若是可能的话,努力将你的程序发布到开源的平台上,从你们的反馈中进一步学习。
  • 竞赛:参加与机器学习有关的比赛,好比与机器学习会议有关的,或者是提供像Kaggle这样的平台的比赛。参与讨论、提问题,学习其余参赛者是如何解决问题的。将这些项目、方法和代码添加到你的项目库中。

高级阶段

机器学习的高级玩家是那些已经整理过大量机器学习算法或者是本身独立实现算法的人。他们或许参加过机器学习的竞赛又或许写过机器学习的程序包。他们已经阅读过许多书籍、学习过许多相关课程,对这一领域有较充分的认识,同时对本身研究的几个关键技术有很深刻的了解。

这些高级使用者平时负责生产环境下的机器学习系统的创建、部署和维护。他们能时刻紧跟这个行业的最新动态,经过本身或他人的一线开发经验发现并了解每一种机器学习技术的细微差距。

下面是给高级阶段学习者的一些资料:

  • 定制开发算法:根据业务需求定制开发算法,实现会议、期刊论文中关于某个类似问题的算法。
  • 本身设计算法:设计全新的算法去解决工做中 遇到的问题,这样作的目的更多的是为工做中所面临的困难找到最佳的解决方案,而不是进行该领域的前沿研究。
  • 案例学习:阅读甚至是从新设计机器学习竞赛或者是其余参赛者所提供的实际案例。这些一直在谈“我是如何作到”的论文或文章中老是塞满了关于数据准备、工程实践以及使用技术的微妙技巧。
  • 方法论:总结处理问题的过程并系统化,能够正式地分享出来也能够仅仅是做为我的总结。他们总有一套本身解决问题的思路而且不断地提炼和改进处理过程,试图用更好的技术来或得最佳实践。
  • 学术研究:参加学术会议,阅读研究论文和学术专著,与机器学习领域的专家交流学习。他们会记录工做中所积累的经验发布到相关的期刊或者本身博客上,而后回到工做岗位继续研究。

知识在不断地收获,但学习永无止境。在机器学习的征途中遇到问题时你能够随时停住脚步本身钻研问题自行解决,或者绕道而行查阅资料借用群体智慧,事实上,我但愿绕道而行成为一种常态。

这样的学习阶段划分是以程序员的角度来规划的,这能够做为技术人员实现从入门到精通的一条线性学习路线。我很乐意收到对于这篇文章的批评建议,这样可使文章变得更好。在特定的学习阶段你能够获得更多的学习资源,由于针对每一个阶段所推荐的学习资源也仅仅是我我的的建议。

好了,如今想一想你在哪一个学习阶段呢?接下来你该怎么作?


原文:Self-Study Guide to Machine Learning
转载于:伯乐在线 - zhibinzeng

相关文章
相关标签/搜索