Top-down learning path: Machine Learning for Software Engineers

Top-down learning path: Machine Learning for Software Engineers GitHub stars GitHub forks

Inspired by Google Interview University.

Translations: Brazilian Portuguese | 中文版本

What is it?

This is my multi-month study plan for going from mobile developer (self-taught, no CS degree) to machine learning engineer.

My main goal was to find an approach to studying Machine Learning that is mainly hands-on and abstracts most of the Math for the beginner. This approach is unconventional because it’s the top-down and results-first approach designed for software engineers.

Please, feel free to make any contributions you feel will make it better.


Table of Contents


Why use it?

I'm following this plan to prepare for my near-future job: Machine learning engineer. I've been building native mobile applications (Android/iOS/Blackberry) since 2011. I have a Software Engineering degree, not a Computer Science degree. I have an itty-bitty amount of basic knowledge about: Calculus, Linear Algebra, Discrete Mathematics, Probability & Statistics from university. Think about my interest in machine learning:

I find myself in times of trouble.

AFAIK, There are two sides to machine learning:

  • Practical Machine Learning: This is about querying databases, cleaning data, writing scripts to transform data and gluing algorithm and libraries together and writing custom code to squeeze reliable answers from data to satisfy difficult and ill-defined questions. It’s the mess of reality.
  • Theoretical Machine Learning: This is about math and abstraction and idealized scenarios and limits and beauty and informing what is possible. It is a whole lot neater and cleaner and removed from the mess of reality.

I think the best way for practice-focused methodology is something like 'practice — learning — practice', that means where students first come with some existing projects with problems and solutions (practice) to get familiar with traditional methods in the area and perhaps also with their methodology. After practicing with some elementary experiences, they can go into the books and study the underlying theory, which serves to guide their future advanced practice and will enhance their toolbox of solving practical problems. Studying theory also further improves their understanding on the elementary experiences, and will help them acquire advanced experiences more quickly.

It's a long plan. It's going to take me years. If you are familiar with a lot of this already it will take you a lot less time.

How to use it

Everything below is an outline, and you should tackle the items in order from top to bottom.

I'm using Github's special markdown flavor, including tasks lists to check progress.

  • Create a new branch so you can check items like this, just put an x in the brackets: [x]

More about Github-flavored markdown

Follow me

I'm a Vietnamese Software Engineer who is really passionate and wants to work in the USA.

How much did I work during this plan? Roughly 4 hours/night after a long, hard day at work.

I'm on the journey.

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

Don't feel you aren't smart enough

I get discouraged from books and courses that tell me as soon as I open them that multivariate calculus, inferential statistics and linear algebra are prerequisites. I still don’t know how to get started…

About Video Resources

Some videos are available only by enrolling in a Coursera or EdX class. It is free to do so, but sometimes the classes are no longer in session so you have to wait a couple of months, so you have no access. I'm going to be adding more videos from public sources and replacing the online course videos over time. I like using university lectures.

Prerequisite Knowledge

This short section were prerequisites/interesting info I wanted to learn before getting started on the daily plan.

The Daily Plan

Each subject does not require a whole day to be able to understand it fully, and you can do multiple of these in a day.

Each day I take one subject from the list below, read it cover to cover, take notes, do the exercises and write an implementation in Python or R.

Motivation

Machine learning overview

Machine learning mastery

Machine learning is fun

Inky Machine Learning

Machine learning: an in-depth, non-technical guide

Stories and experiences

Machine Learning Algorithms

Beginner Books

Practical Books

Kaggle knowledge competitions

Video Series

MOOC

Resources

Games

Becoming an Open Source Contributor

Podcasts

Communities

Conferences

  • Neural Information Processing Systems (NIPS)
  • International Conference on Learning Representations (ICLR)
  • Association for the Advancement of Artificial Intelligence (AAAI)
  • IEEE Conference on Computational Intelligence and Games (CIG)
  • IEEE International Conference on Machine Learning and Applications (ICMLA)
  • International Conference on Machine Learning (ICML)

Interview Questions

My admired companies



Top-down learning path: Machine Learning for Software Engineers

       自上而下的学习路径:机器学习软件工程师           GitHub的分           GitHub的叉   

灵感来源于 Google面试大学

翻译:巴西葡萄牙语 | 中文版本

它是什么?

这是我从移动开发人员(自学,没有CS学位)到机器学习工程师的多个月学习计划。

我的主要目标是找到一种学习机器学习的方法,主要是动手实践的,并为大部分初学者提供数学。 这种方法是非常规的,因为它是为软件工程师设计的自顶向下和结果优先的方法

请随时做出任何贡献,让您感觉更好。


目录


为什么用它?

我按照这个计划准备我将来的工作:机器学习工程师。自从2011年以来,我一直在建立原生手机应用程序(Android / iOS / Blackberry)。我拥有软件工程学位,而不是计算机科学学位。我有一个基本的知识:微积分,线性代数,离散数学,概率和大学统计 想想我对机器学习的兴趣:

我发现自己处于困境中

AFAIK,机器学习有两方面

    实践机器学习:这是关于查询数据库,清理数据,编写脚本以将数据和胶合算法和库组合在一起,编写自定义代码以从数据中挤出可靠的答案,以满足困难和不明确的问题。这是现实的混乱。 理论机器学习:这是关于数学,抽象和理想化的场景,限制和美丽,并告知可能的。这是一个整洁,清洁,从现实的混乱中消除。

我认为以实践为重点的方法的最佳方式是实践 - 学习 - 实践 ,这意味着学生们首先遇到一些有问题和解决方案的现有项目(实践),以熟悉该领域的传统方法,也可能与他们的方法。经过一些基础的经验,他们可以进入书籍学习底层理论,为引导他们未来的先进实践,加强解决实际问题的工具箱。学习理论进一步提高了他们对基础经验的认识,有助于他们更快地获得先进经验 这是一个漫长的计划。这将需要我多年。如果你熟悉了很多,那么这将会减少你的时间。

如何使用它

下面的一切都是大纲,你应该按照从上到下的顺序处理项目。

我正在使用Github的特殊降价风格,包括任务列表以检查进度。

  • 创建一个新的分支,这只是把一个x放在括号里:[x]

更多关于Github风味的降价

跟着我

我是越南软件工程师,他真的很热情,想在美国工作 在这个计划中我有多少工作?在工作漫长而艰苦的一天后,大概4个小时/晚。

我正在旅途中

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

不觉得你不够聪明

我打开他们的书籍和课程后,我很沮丧,多元演算,推论统计和线性代数是先决条件。我还不知道如何开始…

关于视频资源

某些视频只能通过注册Coursera或EdX类才能使用。这是免费的,但有时是类 不再在会议中,所以你必须等待几个月,所以你没有访问权限。我要添加更多视频 来自公共资源,并随时更换在线课程视频。我喜欢使用大学讲座。

必备知识

这个简短的章节是我想在日常计划开始之前学习的先决条件/有趣的信息

每日计划

每个科目不需要一整天才能完全了解,而且您可以在一天之内完成其中的多项工作。

每天我从下面的列表中选出一个主题,阅读它的封面来覆盖,做笔记,做练习,并用Python或R编写一个实现。

Motivation

机器学习概述

机器学习掌握

Inky机器学习

机器学习:深入的非技术指南

故事与经验

机器学习算法

初学者书籍

实用书籍

Kaggle知识竞赛

视频系列

MOOC

资源

游戏

成为开源贡献者

播客

社区

会议

  • 神经信息处理系统( NIPS
  • 国际学习代表会议( ICLR
  • 人工智能进步协会( AAAI
  • IEEE计算智能与游戏会议( CIG
  • IEEE国际机器学习与应用会议( ICMLA
  • 国际机器学习会议( ICML

面试问题

我崇拜的公司




相关问题推荐