每天都会收到一些小伙伴的私信问我:机器学习如何入门?
这个问题我觉得目前没有明确的答案。刚好看好黄博的这篇文章,从中看到了自己想表达奈何文笔有限表达不出的意思。在此分享给大家。
本篇文章不仅告诉大家按照一个什么路线去学习,同时也给出了对应的学习资料。推荐收藏 + 点赞。
最后,为了给大家一些学习的动力,文末会送几本对初学者比较友好的书籍。
一、机器学习正规学习路线
如何学好机器学习?正规路线大概是这样的:
1.学好数学基础
数学分析(微积分),线性代数,概率论,统计,应用统计,数值分析,常微分方程,偏微分方程,数值偏微分方程,运筹学,离散数学,随机过程,随机偏微分方程,抽象代数,实变函数,泛函分析,复变函数,数学建模,拓扑,微分几何,渐近分析......
2.学习经典机器学习书和教程
经典书籍:Duda的《模式分类》、Mitchell的《机器学习》、李航的《统计学习方法》、周志华的《机器学习》......
吴恩达:《机器学习》公开课、《深度学习》公开课。
林轩田:《机器学习基石》、《机器学习技法》。
......
3.学好编程语言
精通Python、Java、R、MATLAB、C++等编程语言。
4.阅读论文
学好英语,熟读经典论文,并且读最新的机器学习论文,如顶级会议论文等,掌握最新的技术方向。
5.参加实际项目
如大厂实习、参加Kaggle、天池等数据竞赛......
按照以上路线学完以后,虽然不一定能成为业界大牛,博士毕业完全没有问题了。
以上方法存在的问题:
大部分学习者的学习目的不是为了科研,而是希望把机器学习作为工具来使用。
大部分学习者时间有限,学不完这么多资料,不知道如何取舍。
有些资料太难,作者假设学习者有一定的基础,对一些步骤进行了省略,好多初学者看了的感觉是这样的:
图:好多资料省略了关键步骤
其实大部分人学习机器学习的目的,只要会用机器学习算法及工具,解决一些问题,了解算法的基本原理即可,并不需要学得那么深入。上面的学习路线,第一条就劝退了好多人了。没有几个人能像博士一样扎实地学好数学基础,也没有几个人能读完经典著作和热门教程,只是希望快速入门机器学习。
在这种情况下,本篇文章推荐快速的机器学习入门路线。
二、机器学习快速入门
1.基础知识
熟悉基本的数学知识,最主要是高等数学、线性代数、概率论与数理统计三门课程,这三门课程应该是本科必修的,如果真的忘了,那就看下这篇文章:《机器学习的数学基础》,可以把这篇文章提供下载数学资料看一遍,不需要全看懂,但是基础的公式要大致明白,能从资料中查找公式,里面有两个公式总结材料:
1) 机器学习的数学基础.docx
(中文版,对高等数学、线性代数、概率论与数理统计三门课的公式做了总结)
2) 斯坦福大学机器学习的数学基础.pdf
(原版英文材料,非常全面,建议英语好的同学直接学习这个材料)。
本人非常建议打好数学基础,数学基础决定了机器学习从业人员的高度。
但是,如果学习时间太少,又想入门机器学习,就学习上面两个公式总结材料其中的一个。
2.机器学习的教程
1) 机器学习入门的最佳教程
应该是吴恩达老师的《机器学习》公开课,这门课面向初学者,注重实际应用,并不侧重数学推导。这门课开课较早,但到现在仍然是最火的机器学习公开课,评分非常高,课程配套作业(octave版本)。
学习这个课程注意事项:
第五章Octave教程、第十八章应用实例,这两章可以不用学,有点过时了。
原版的octave作业可以不用做,可以做修改过的python版本作业。
如果和吴恩达老师的《深度学习》公开课一起看,第四、五、六周的内容可以直接学习《深度学习》的相关内容。
这个教程建议在三个月内看完,如果有些地方看不懂,没关系,以后用到的时候再回头看看。
这个课程建议配合课程笔记一起看。本站已经提供了笔记下载
课程的视频、笔记、python代码作业,请在这篇文章下载。
2) 机器学习小抄
本站以前发的一篇《机器学习小抄-(像背托福单词一样理解机器学习)》
把机器学习的概念做成背托福单词的随身小抄一样方便!分分钟搞定机器学习各种记不住的概念!这篇建议用一周时间看完,注意是略读,有些地方不懂没关系,做下记录,以后用到的时候再查。
3) 李航《统计学习方法》
详细介绍支持向量机、Boosting、最大熵、条件随机场等十个统计学习方法。对数学基础有一定要求,这是经典中的经典,很多国内的网课,互联网企业的面试、笔试题目,或多或少,参考了这本书的内容,对初学者来说,有点难度,但是,如果想通过面试笔试,这本书应该要看懂,试着推导下算法。
4) 深度学习最佳入门教程
吴恩达《深度学习》公开课
这个视频教程用最简单的方式,把深度学习的主要算法和框架讲得非常清楚,课程附带代码作业和测试题作业,学完以后,深度学习就算入门了。每章的学习建议:
第一章:神经网络与深度学习
部分内容是《机器学习》公开课的第四、第五周的升级版
第二章:改善深层神经网络
这部分内容基本没有和《机器学习》公开课有重合部分。
第三章:结构化机器学习项目
部分内容是机器学习的第六周的升级版。
第四章:卷积神经网络
这部分主要用于图像、目标检测方面的,相当于斯坦福CS231n深度学习与计算机视觉-李飞飞主讲的课程的简化。
第五章:序列模型
这部分主要用于自然语言处理,注意一点:RNN/LSTM结构里的符号,和原始论文有点不一样,我们平时的博客、论文的符号,跟吴恩达老师的课程的符号略有区别。
课程的视频、笔记、python代码作业,请在这篇文章下载。
5) 李宏毅《一天读懂深度学习》讲义
台大李宏毅教授的深度学习讲义,这是我见过最容易懂的深度学习入门资料,300多页的讲义能系统、通俗易懂地讲清楚深度学习的基本原理,如同机器学习小抄一样生动形象。
建议用几天时间把这个讲义浏览一次,可以基本了解什么是深度学习,深度学习有什么用。
3.学好编程语言
由于只是入门,仅推荐python这门编程语言。
机器学习主要的代码工具为python,python学习到底要学到什么程度?个人感觉:入门最重要,至少要学到碰到问题能查百度的程度。
1) python安装:
关于python安装包,我推荐下载Anaconda,Anaconda是一个用于科学计算的Python发行版,支持 Linux, Mac, Windows系统,提供了包管理与环境管理的功能,可以很方便地解决多版本python并存、切换以及各种第三方包安装问题。下载地址:https://www.anaconda.com/download/ 推荐选Anaconda (python 3.6版本)
IDE:推荐使用pycharm,社区版免费,下载地址:https://www.jetbrains.com/
2) python入门的资料推荐
a.《利用python进行数据分析》
这本书含有大量的实践案例,你将学会如何利用各种Python库(包括NumPy、pandas、matplotlib以及IPython等)高效地解决各式各样的数据分析问题。
这个是我看的第一本python入门资料,如果把代码都运行一次,基本上就能解决数据分析的大部分问题了。
下载地址:建议购买书,源代码可以上百度搜索。
注意:第二版中文翻译已经有人写了,建议搜索下载。
b.python入门笔记
作者李金,这个是jupyter notebook文件,把python的主要语法演示了一次,值得推荐。
下载地址:https://pan.baidu.com/s/1snmeqlR 密码:hkv8
c.南京大学python视频教程
这个教程非常值得推荐,python主要语法和常用的库基本涵盖了。
视频下载地址:https://yun.baidu.com/s/1cCbERs 密码:7thx
看完这三个资料,python基本入门了,同时可以使用scikit-learn等机器学习库来解决机器学习的问题了。
4) 深度学习主要框架的学习
深度学习的主要框架,最基础的,应该是Tensorflow和Keras。教程很多,可以选择性地学一下,本站推荐简便的入门方法:
a.Tensorflow入门
吴恩达《深度学习》公开课第二门课3.11介绍了Tensorflow的基本用法(对应笔记p251),这些用法会了以后,基本上能看懂大部分代码了,结合该课程的代码作业,不懂的地方搜百度都能搜到了。
b.Keras入门
《python深度学习》书和配套代码,《python深度学习》由Keras之父、现任Google人工智能研究员的弗朗索瓦•肖莱(François Chollet)执笔,详尽介绍了用Python和Keras进行深度学习的探索实践,包括计算机视觉、自然语言处理、产生式模型等应用。书中包含30多个代码示例,步骤讲解详细透彻。
作者在github公布了代码,代码几乎囊括了本书所有知识点。在学习完本书后,读者将具备搭建自己的深度学习环境、建立图像识别模型、生成图像和文字等能力。但是有一个小小的遗憾:代码的解释和注释是全英文的,即使英文水平较好的朋友看起来也很吃力。
本站对全部代码做了中文解释和注释,并下载了代码所需要的一些数据集(尤其是“猫狗大战”数据集),并对其中一些图像进行了本地化,代码全部测试通过。(请按照文件顺序运行,代码前后有部分关联)。
本篇文章认为,这本书和代码是初学者入门深度学习及Keras最好的工具。
电子书及中文注释代码请点击下载。
4.阅读论文
1) 学好英语,读一些优秀论文
选择性地读一些经典论文,英语真的不好,就输入论文题目搜下百度,很多博客会对经典论文有详细的解释。
看论文的关键:复现作者的算法。
根据论文,复现成功算法后,通常就能对论文有深刻的理解了。经典论文都是可以复现的,github都有,最新的优秀论文,通常也能搜到代码。
2) 学会整理论文
读过的论文分类整理下,推荐下论文管理神器zotero,功能强大,可以在论文上记笔记,并支持不同电脑之间的同步。
5.参加实际项目
如果有大厂的实习机会,尽量去,能学到不少东西。
没有实习机会,可以尝试参加下kaggle比赛,不一定要取得多少名次,可以搜搜历次比赛,下载数据,下载别人的公开代码,复现下。
国内也有类似的比赛,如天池,DF等。
通常,在2-3个比赛能达到top1%的成绩,代码能力基本没有问题了。
但是,不建议在比赛中花太多时间,比赛大部分时间是用于特征工程,在实际工作中并不一定能用上,只要能解决问题就行了,其他时间用于学习吧。
6.多和学习者交流
交流的方式有很多种,如参加学术活动、实验室讨论等,但我认为最有效的交流方式还是加入一些学术讨论组织,如微信群,qq群等。“闻道有先后术业有专攻”,不懂很正常,不懂就要问,“三人行,必有我师。”
三、总结
学习机器学习,尽可能打好数学基础,机器学习从业者数学基础不扎实,只会用一些工具和框架,相当于某些武术家只会耍套路,外行人觉得很厉害,但实战起来一定是鼻青脸肿。可以说,数学基础是机器学习从业人员的天花板。为什么机器学习从业人员学历越高,往往工资越高,通常和掌握的基础知识正相关。
本文的方法,只适合快速入门,入门了以后,你就会知道哪方面的不足,自己也会找资料学习了。
本文的方法仅供参考。
四、送书!!!
【机器学习算法入门与编程实践】
本书对机器学习算法的基本原理和Python程序实现进行了系统的介绍-每种算法都采用Sklearn程序实现并用Matplotlib进行数据可视化。为了帮助读者更加高效、直观地学习-作者为本书录制了13个微课视频-读者可以用手机扫描书中的二维码进行观看-也可以将视频下载后进行观看。
本书共8章-包括机器学习概述、Python机器学习与可视化、关联规则与推荐算法、聚类算法、分类算法、回归与逻辑回归、人工神经网络、支持向量机等内容。
本书可以作为高等院校机器学习和人工智能概论等课程的教材-也可作为机器学习算法入门读者的自学用书-还可以作为人工智能等领域机器学习研究者和应用人员的参考书。
这本书是我精挑细选后觉得对初学者非常有用的一本书,这一次就送给大家,算是对大家学习的鼓励!!!
抽奖的具体规则是:添加我的助理Beyonce微信,Beyonce微信朋友圈会转载这篇文章,大家点赞后,抽出第11,33,55,66,77位读者送出本书。