forked from PeterHuang2015/AWESOME-MLND
AWESOME-MLND
The awesome entry for Udacity Machine Learning Nanodegree program.
Udacity 的机器学习纳米学位偏重对各个方法的直觉性的认识和实际的编码操作,这是在大部分学校通常是无法获取到的稀缺资源。另一方面,入门部分更偏向统计学和数据分析的基本内容,进阶部分略去了一些编程基础问题;整体课程为覆盖更广泛的受众,也略去了一部分耗费时间精力而与实际工程实践关系不太紧密的理论内容;最后,由于国内雇主聘用员工时出题者的个人教育背景,一些在工程实践中并不常用,但在笔试、面试中被反复问及的内容暂时还没有并入课程内容中。我们希望在这里对整个课程进行梳理总结,同时进一步深挖工具使用和理论基石,最后补齐一些面向机器学习方向求职相关的内容。在以强制输出文字带动知识吸收帮助笔者 MLND 结业的同时给一同努力的同学提供力所能及的帮助。
如临大敌
每个人的知识储备、学习习惯、获取满足感的途径和内心诉求都各不相同。希望你能在开始学习旅程前有所准备,了解你学习之路上“敌人”,尽可能做到知己知彼。举个例子,以我自身来讲,就经历着各种各样的“麻烦”,在MLND修习之路上要务必当心如下事情:
- 十几年应试教育积累的坏习惯-怕错,标准化强迫症以及过分重视并迫切追求短期利益
心
机器学习是个很大的领域,包含大量的具体算法和各式细节处理、bag of tricks,很容易让人产生晕眩感;抓蛇抓七寸,其面向实际问题并力图将其解决的性质是不会改变的。在你决定入坑机器学习之后一定要尽可能具体化自己的目标,选定一个适合开始的小方向动手去做练习和实现,各类工具库已经对数据处理做了很好的支持,并提供了很多算法的高效实现,在实际工作里,你可能只要准备好数据,建立模型并调用 fit
函数完成训练再使用 classify
完成分类就好了;但怎样去获取和整理训练数据、怎样去选取模型调参并验证模型可用性、如何去部署模型甚至进行在线训练不断优化迭代、降低计算资源消耗以及让它创造实际的经济价值都是需要不断的思考和实践才能习得并逐渐掌握的;可能在一些时候需要你使用分布式数据处理框架中完成数据搜集与处理、使用 C++ 进行并行编程,对于特定情况,还可能需要你攒一个多机多卡小集群用于工程任务。不过,作为开始,只要找一个实际的任务,用现成的工具参考样例代码实现一个解决自己手上问题的小东西就是个很棒的开始啦,明确自己的学习目标,通过实际动手获得真实反馈,从错误和失败中汲取经验,踏上问题解决之旅(当然,在开始旅程之前,你可以在定向帖里给自己立个 Flag)。
同时,在这里也更一下潜伏在各群大佬们所做的示范,给同学们分享(安利)以备参考取用:
- From Philips-Lending Club——构建贷款违约预测模型
法
每日都能学到新东西,逐步积累的过程好过 deadline 之前的一波流式推进,我们会推荐使用 Toggl 这样的工具辅助你的时间管理;同时为了构建一个学习上的良性循环,最好,你能有一同学习的朋友、切实的学习需求(比如找工作、开始新项目)、高效的反馈途径(比如一份 code review)和一个靠谱的辅助来帮忙答疑解惑。
相信很多朋友都熟知一些数据科学竞赛平台,里面可以获取多种数据集并参与各类竞赛:
Read papers to make you smarter(当然前提是你需要有相应的背景知识能大概读懂文章内容),关注一些可公开访问的论文集尝试取用复现其中的方法能够达到很好的练手效果(当然。。。这是一种很偏学术的方式),在这里给出一些会议论文查阅入口:
道
通常来讲,要先知道做什么,再去考虑具体怎么做,否则易于迷失于各种操作细节当中;大段的代码晦涩难懂,但在当时写就它的编码者脑袋里,在实际任务概念的支持下,一些就会清晰很多。在最初的学习阶段,了解做什么和为什么要比知道具体如何操作来的重要,在一些逐渐清晰之后,不妨从一些示例代码上做修修改改起步,逐渐过渡到独立编码实现,模仿常常是跨过“能”与“不能”之间鸿沟的有效方式。
术
- Python 是我们手中的武器,你对它的使用熟练度决定着自己的学习和未来生产的效率,作为 Udacity 系列,个人推荐 CS101 到 CS212 的学习序列,在前一门课程里可以看到 Google 创始人布林出席捧场,后一门则是 Peter Norvig 亲授的高质量程序设计课。同时,希望你能随时调取 docstring 查看 Python 库的用法,阅读官方文档 了解更多细节,业余时间可以刷刷 Python Challenge 真正以 Python 的方式去高效编程,还有就是使用 Python 辅助自己日常的工作,其广泛的接口和外部库可以帮助你操纵数据库、Excel、调取深度学习工具包,全面提升工作效率