机器学习该怎么入门?
作者:红色石头、Leon
红色石头:
1. 放弃海量资料!
2. 放弃从零起步!
3. 机器学习入门学习路线
1)Andrew Ng《Machine Learning》
首先,非常推荐吴恩达(Andrew Ng)在 Coursera 上开设的机器学习入门课《Machine Learning》,授课地址是:www.coursera.org
关于这门课的官方介绍是:本课程将广泛介绍机器学习、数据挖掘和统计模式识别。
相关主题包括:
(i) 监督式学习(参数和非参数算法、支持向量机、核函数和神经网络)。
(ii) 无监督学习(集群、降维、推荐系统和深度学习)。
(iii) 机器学习实例(偏见/方差理论;机器学习和AI领域的创新)。
课程将引用很多案例和应用,您还需要学习如何在不同领域应用学习算法,例如智能机器人(感知和控制)、文本理解(网络搜索和垃圾邮件过滤)、计算机视觉、医学信息学、音频、数据库挖掘等领域。
这门课基本涵盖了机器学习的主要知识点,例如:线性回归、逻辑回归、支持向量机、神经网络、K-Means、异常检测等等。而且课程中没有复杂的公式推导和理论分析。Ng 的目的是让机器学习初学者能够快速对整个机器学习知识点有比较整体的认识,便于快速入门。
红色石头整理了这门课所有知识点的思维导图:
这门课每个知识点都会配套相应的练习题。大家可以在 Coursera 上下载,线下完成并提交。唯一的缺点可能是该习题都是基于 matlab 平台的。但是,Github 上已经有人把作业整理成为 Python 的形式了。有 .py 和 .ipynb 两种格式。
nsoojin/coursera-ml-py
2)台大林轩田《机器学习基石》
台湾大学林轩田老师的《机器学习基石》课程由浅入深、内容全面,基本涵盖了机器学习领域的很多方面。其作为机器学习的入门和进阶资料非常适合。而且林老师的教学风格也很幽默风趣,总让读者在轻松愉快的氛围中掌握知识。这门课比 Ng 的《Machine Learning》稍难一些,侧重于机器学习理论知识。
- 首先附上这门课的主页:
Hsuan-Tien Lin > Home - 林轩田机器学习基石这门课有一个配套教材:《Learning From Data》,林轩田也是编者之一。这本书的主页为:
Learning From Data - A Short Course - 红色石头整理了这门课 16 节课的精炼笔记,供大家参考:
林轩田机器学习基石
3)台大林轩田《机器学习技法》
《机器学习技法》课程是《机器学习基石》的进阶课程。主要介绍了机器学习领域经典的一些算法,包括支持向量机、决策树、随机森林、神经网络等等。难度要略高于《机器学习基石》,具有很强的实用性。
- 首先附上这门课的主页:
Hsuan-Tien Lin > Home - 红色石头整理了这门课 16 节课的精炼笔记,供大家参考:
林轩田机器学习技法 - 林轩田这两门课的所有视频、PPT、书籍,还有我整理的读书笔记 .md文件、pdf,都放在了 Github 上:
https://github.com/ExtremeMart/NTU-HsuanTienLin-MachineLearning
4)《机器学习实战》
学完了上述几门优秀的公开课之后,已经具备了比较不错的机器学习理论了。接下来就要注重实战。简单地说,最直接的方法就是自己实现一遍主流的机器学习算法。这里可能有的同学说不需要重复造轮子。但是我觉得简单地把所有机器学习算法使用python实现一遍还是很有必要的,至少是伪代码的形式。一方面能够加深自己对理论的深入理解,另一方面能够锻炼自己的代码实操能力。可以看下这本《机器学习实战》书:
5)吴恩达《深度学习专项课程》
- deeplearning.ai 的官网:
https://www.deeplearning.ai/ - 该专项课程分为五门课,所有的读书笔记汇总:
吴恩达deeplearning.ai - 深度学习专项课程所有课程精炼笔记见GitHub:
https://github.com/ExtremeMart/Andrew-Ng-deeplearning.ai
4. 进阶
基本上完成上述课程就算是入门了。接下来可以根据自己的兴趣和方向,有的放矢。
- 例如主攻 CV 方向,可以继续学习斯坦福 CS231n 课程:
CS231n: Convolutional Neural Networks for Visual Recognition - 如果主攻 NLP 方向可以学习斯坦福 CS224n 课程:
CS224n: Natural Language Processing with Deep Learning - 当然,台大李宏毅的课程也很不错:
Hung-yi Lee
Leon:
数学
很多人翻看任何一本机器学习的书,看到一推的数学公式就开始打退堂鼓了。开始搜索,提问“机器学习需要哪些数学知识?”然后得到的结果可能会是“矩阵分析,概率论,优化设计……”而且还会有大量的人推荐一些例如“All of Statistics”,“Convex Optimation”等等外文教材。至少我当时面对的情况就是这样的。这种情况很可能后面会朝以下画风发展。
看到上述推荐的那些经典教材,你像看待圣经一样看待他们。抱着一种学会了那些课,我再看机器学习的书简直就会是探囊取物的想法,你下载了巨多相关材料。但是,慢慢你会发现,除了把他们下载了下来,你并没有任何的进步。你并没有完完整整的看完一本,你并没有在机器学习方面卓越超群。
入门阶段真的需要这么多的数学储备吗?未必。
程序语言
第一步
有了上述基础后,你可以开始看点机器学习的相关内容了。我看很多人推荐elements of machine learning。我想说,你想让一个基础为零的人去看这本书,真的合适吗???所以,我推荐的是Machine Learning in action,(这里面的完成语言为Python)这是英文版本的。当然如果你觉得英文对你是一个完全过不去的坎,(虽然我建议做技术的人都必须至少要看得懂英文)现在有中文版本,叫“机器学习实践”。
这本书用尽量少的公式把机器学习的基本算法都过了一遍,而且还讲得很清楚,更为重要的是他将公式和代码结合了起来。因此,你的机器学习并没有那么的抽象了,你知道算法里的公式如何的转化为代码。
第二步
学习Coursera上面Andrew Ng老师的machine learning的课程。这门课造福了众多机器学习的入门者,不仅仅是因为课程全面,内容由浅入深。更加重要的是这门课程每次课都有课堂作业,作业不需要你写出来所有的代码,但是关键代码要你写出来,而且还会教你如何调试代码。初学者学这门课的时候很可能会买有耐心,又是英文的,又有进度要求,又有作业。没关系,你可以把视频下载下来(很多网盘里都有下载好的视频),然后慢慢的去啃。作业也是,可能你自己不能一口气写出来,没关系,在自己做了大量尝试后,去Github上面下载一些别人写好的代码看一看,找找自己的问题到底出在了哪里。总之,一定要耐着性子过一遍甚至是几遍这个课程。
看到有人在问,Andrew Ng的视频,还有代码这些的资料。再次整理一下:
1、机器学习实战的书:《机器学习实战 (图灵程序设计丛书 72)》 [美]Peter Harrington, 李锐, ***, 曲亚东, 王斌 书评 简介 电子书下载 Kindle电子书
2、Andrew Ng老师的视频教程:Machine Learning:斯坦福大学机器学习个人笔记完整版(附所有视频和字幕)(现在Andrew Ng老师没开新课了,这是一个同学自己下载的所有视频和相关资料,大家可以自行下载)
3、Andrew Ng老师早期的一个机器学习公开课:斯坦福大学公开课 :机器学习课程
4、Andrew Ng老师机器学习课的代码
Python版本:icrtiou/Coursera-ML-AndrewNg
第三步
第四步
这时候,机器学习你已经可以说大概入门了。后面的事情,就得根据你的需求来制定相关的学习路线。比如,做大数据分析的,得去学学spark,Hadoop等计算框架;另外,图模型,深度学习……等等内容,都是一些方向。自然语言处理、图像识别、语音识别等等也是一些应用方向,更有大量的领域知识需要结合。
另外,鉴于现在深度学习这么的火热,而且现在做机器学习也避免不了了解及应用深度学习,我这里也加入一些深度学习的内容。
1、入门的数学和编程基础和机器学习的要求是一样的。
2、入门读物还是推荐Andrew Ng老师组织的一个WIKI,UFLDL Tutorial - Ufldl , 非常建议大家老老实实花两个星期的时间把这个wiki的内容和相关程序自己实现一次。而且,这个wiki是有中文版本的,在每个页面的最下面都可以点击查看中文版本。(PS:我还很荣幸的当时参与了当时的翻译工作,为内容的中文化做了一点点微小的工作。)。
3、现在的深度学习应用最为广泛的就是卷积神经网络(Convolutional neural network, CNN),所以建议大家可以多看看这个方面的内容。正好这几天Fei Fei Li老师的CNN课程又开课了,大家有兴趣可以去看看。这个网站会同步更新,而且有中文翻译。【中文字幕】2017春季CS231n 斯坦福深度视觉识别课。
4、做深度学习避免不了的要选择一个平台,Tensorflow,Caffe,Torch,MxNet等等都是选择。如果是新手,尤其是基于Windows平台的新手,我还是比较建议用Tensorflow。具体的内容可以参见这个莫烦系列教程 - Tensorflow教程。
5、最后,就是勤联系、勤联系、勤联系啦。
6、最后的最后,如果没有项目参与,那么最好的检验自己的学习成果的手段就是参加比赛啦。国外的Kaggle,KDD CUP,...。国内的天池大数据竞赛,...。
https://www.kaggle.com/
http://www.kdd.org/kdd-cup
https://tianchi.shuju.aliyun.com/