Permalink
Find file
cead43e Jan 18, 2017
394 lines (328 sloc) 30.8 KB

自上而下的学习路线: 软件工程师的机器学习

灵感来源于 谷歌面试学习手册

这是?

这是本人为期数月的学习计划。我正要从一名移动端软件开发者(自学,无计科文凭)转型成为一名机器学习工程师。

我的主要目标是找到一种以实践为主的学习方法,并为初学者抽象掉大多数的数学概念。 这种学习方法是非传统的,因为它是专门为软件工程师所设计的自上而下、以结果为导向的学习方法。

如果您想让它更好的话,随时欢迎您的贡献。


目录


为何要用到它?

我会为了我未来的工作————机器学习工程师 遵循这份计划。自2011年以来,我一直进行着移动端应用的开发(包括安卓、iOS与黑莓)。我有软件工程的文凭,但没有计算机科学的文凭。我仅仅在大学的时候学习过一点基础科学,包括微积分、线性代数、离散数学、概率论与统计。 我认真思考过我在机器学习方面的兴趣:

我深陷困境。

据我所知, 机器学习有两个方向

  • 实用机器学习: 这个方向主要是查询数据库、数据清洗、写脚本来转化数据,把算法和库结合起来再加上一些定制化的代码,从数据中挤出一些准确的答案来证明一些困难且模糊不清的问题。实际上它非常混乱。
  • 理论机器学习: 这个方向主要是关于数学、抽象、理想状况、极限条件、典型例子以及一切可能的特征。这个方向十分的干净、整洁,远离混乱的现实。

我认为对于以实践为主的人来说,做好的方法就是 “练习--学习--练习”,这意味着每个学生一开始就能参与一些现有项目与一些问题,并练习(解决)它们以熟悉传统的方法是怎么做的。在有了一些简单的练习经验之后,他们就可以开始钻进书里去学习理论知识。这些理论知识将帮助他们在将来进行更进一步的训练,充实他们解决实际问题的工具箱。学习理论知识还会加深他们对那些简单练习的理解,帮助他们更快地获得进阶的经验。

这是一个很长的计划,它花去了我一年的时间。如果你已经对它有所了解了,它将会让你省去很多时间。

如何使用它?

以下的内容全部是概要,你需要从上往下来解决这些项目。

我使用的是Github独特的flavored markdown的任务列表来检查我计划的进展。

  • 创建一个新的分支,然后你可以这样来标出你已经完成的项目,只需要在框中填写一个x即可:[x]

了解更多有关 Github-flavored markdown的知识

Follow me

我是一名非常非常想去美国工作的越南软件工程师。

我在这份计划中花多少时间?在每天的艰辛工作完成后,每晚花4小时。

我已经在实现梦想的旅途中了。

Nam Vu - Top-down learning path: machine learning for software engineers
USA as heck

别认为自己不够聪明

当我打开书本,发现他们告诉我多元微积分、统计与推理、线性代数是学习机器学习的先决条件的时候,我非常沮丧。因为我不知道从哪儿开始…

关于视频资源

部分视频只有在Coursera、EdX的课程注册了才能观看。虽然是免费的,但有些时间段这些课程并不开放,你可能需要等上一段时间(可能是好几个月)。我将会加上更多的公开的视频源来代替这些在线课程的视频。我很喜欢大学的讲座。

预备知识

这个小章节是一些在每日计划开始前我想去了解的一些预备知识与一些有趣的信息。

每日计划

每个主题都不需要用一整天来完全理解它们,你可以每天完成它们中的多个。

每天我都会从下面的列表中选一个出来,一遍又一遍的读,做笔记,练习,用Python或R语言实现它。

动机

机器学习概论

掌握机器学习

有趣的机器学习

机器学习简介(用手指沾上墨水来书写机器学习简介)

一本深入、非技术性的机器学习指南

故事与经验

机器学习算法

入门书籍

实用书籍

Kaggle知识竞赛

系列视频

MOOC

资源

成为一名开源贡献者

游戏

播客

社区

面试问题

我崇拜的公司