Python还是R语言?怎样学数学?机器学习的征程从这里开始……
机器学习是近几年来最热门的技术之一,也许你对机器学习很感兴趣,但却不知从何处下手。别担心,兴趣是最好的老师这里有你开启该领域职业生涯的完整学习路径。
笔者也曾面临同样的困惑:怎样才是好的开始?应该学习Python还是选择R语言?数学总是很可怕,笔者总是担心自己应该从何处开始学数学,还担心如何为机器学习打下坚实的基础。
不管怎样,祝贺你,至少你已经下定决心了。本文将带你做好开启机器学习生涯之前的所有准备工作。
机器学习第一步(基础编程)
第一步应该是学习编程,最好是Python。如果你一行代码都没编写过,那么推荐你学习哈佛大学的CS50。这是编程初学者的最佳课程,它将从头开始教你C语言的所有内容、Python的许多要点、JavaScript以及SQL和JSON的基础知识。而且它在edx.org上是免费的。
如果想直接从Python开始,那么edx上免费的“MIT计算机科学入门Python课”很适合你。需要注意的是,至少你得掌握高中代数。
如果觉得自己的计算逻辑不好,而且不善于解决编程问题,微软的课程很不错,这门课程与edx上的“计算思维”有关,都是免费的。它能教你很多计算逻辑和批判性思维方面的内容。
如果已经掌握了足够的编程基础知识,但是还不了解面向对象程序设计方面的知识,建议学习面向对象程序设计编程。虽然它在机器学习(基本水平)中没有被大量使用,但确实有很大的帮助。它会教授python中OOP和算法的基本知识。
下一步是熟悉数据结构和算法。一个好的程序员必须知道一些基本的算法,如链表、二叉树等。微软的课程将教授:
- 算法分析
- 分类和搜索算法
- 数据结构:链表、堆栈、队列
如果想深入研究数据结构和算法,加州大学圣地亚哥分校的专题绝对是经典。它有6门课程,将带领学习者在数据结构和算法方面从0级达到英雄级。可以点击每门课程并免费旁听它的材料,但如果想获得证书,价格是50美元/月,这取决于完成的速度。你可以在Coursera.org找到这个专题。
机器学习第二步
对大多数初学者来说,数学是最“劝退”的部分。
事实上,数学并不像想象的那么难,如果认为自己有很好的高中数学基础(向量、矩阵、微积分、概率和统计),可以只参加一个复习课程;但如果认为自己的数学不够好,那么学数学最好的地方就是“可汗学院”,这里内容丰富有用,而且都是免费的,可以找到所有有关线性代数、概率和统计以及多变量微积分课程。
另一个优质的课程是Coursera上伦敦帝国理工学院的机器学习数学专题,教授基本知识和复习概念,但不会深入探讨,练习和测验很有挑战性。它有以下3门课程:
- 机器学习数学:线性代数
- 机器学习数学:多元微积分
- 机器学习数学:主成分分析
MIT也有一门很好的统计学课程,它的内容包括:
- 使用矩和最大似然法构造估算器,决定如何在两者间进行选择
- 使用置信区间和假设检验量化不确定性
- 使用拟合优度测试在不同模型之间进行选择
- 使用线性、非线性和广义线性模型进行预测
- 使用主成分分析(PCA)进行降维
如果想在编写代码的同时学习数学,去学习微软的课程“机器学习基本数学:Python版本”。这是一门交互式课程,它使用Python著名的数据处理库Numpy、pandas和matplotlib来形象化地进行数学教学,这些库是本课程的前提条件。
Udacity上有3门免费的统计学课程:
- 统计简介
- 统计学
- 推理统计简介
也可以在学习实用机器学习的同时学习数学,当遇到不熟悉的内容时,只需搜索可汗学院,YouTube上也有数百个关于这个话题的优质视频。
机器学习第三步
熟悉了线性代数、多变量微积分和统计学之后,接下来需要学习的是Python著名的可视化数据处理库,包括Numpy、Pandas、Matplotlib和Scipy,它们有助于分析和操作任何类型的数据,并以图表方式查看数据。
当然,还有很多其他可视化数据处理库,但这些是最重要的,可以将线性代数和微积分的概念以图表方式可视化。
这方面的代表之一是密歇根大学的Python统计学专题,教授了数据可视化和操作细节。当然,可在coursera.org上免费获取。
另一门课程是密歇根大学为数据分析初学者开设的“Python的数据科学导论”,它包括从numpy的基础知识到pandas的内容。同样也coursera.org上免费提供。本课程的下一部分是改变方式,在Python中命名Applied Plotting、Charting和Data Representation,会交给你所有的图形可视化及其技巧技术。
哈佛大学的《使用Python进行研究》会通过一些著名的案例研究来教授这些库,其最后一课无比振奋人心,会讲解很多新内容。
加州大学圣地亚哥分校的“使用Python进行数据科学项目”内容非常全面,该课程教授:
- Python
- Jupyternotebooks
- pandas
- NumPy
- Matplotlib
- git
- sci kit-learn
- NLTK
虽然该课程也会讲解机器学习的基础知识,但更重要的是,它教授数据科学库。所有的这些课程都会在edx.org上免费提供。
第四步 实用机器学习
所以现在要进入最令人兴奋的部分——机器学习。
第一个课程意义重大。如果其不够引人入胜,学习者可能会半途而废。所以这里的所有课程都是高质量的,在开始第一门机器学习课程之前,我们要对它做一些研究。
入门课程不会教授机器学习,而是让学员了解一些基本概念。这门课程将概述什么是机器学习,它是如何工作的,它的工作流程是什么,以及如何在公司建立人工智能。课程还提供了关于人工智能的完整介绍和概述。该课程由著名的机器学习讲师吴恩达教授,可在coursera.org上免费获得。
接下来到了正式内容。无论是搜索谷歌还是浏览任何博客,都可以看到,首推课程是斯坦福大学吴恩达教授的“机器学习”。注册了这门课程的学生超250万,20万多名学生对其进行了评分(4.9*)。它从非常基本的概念讲授到高级的概念,对初学者来说是一门非常全面的课程。这门课的总学时超过56小时。以下为课程目录:
- 线性回归
- 多项式回归
- 逻辑回归
- 多类分类
- 神经网络
- 支持向量机
- K-均值聚类
- 主成分分析
- 异常检测
- 推荐系统
唯一的问题是,它是用octave/Matlab来教的。对笔者而言这不是大问题,因为它还会用各种其他语言来清晰阐明机器学习的所有基础和深层概念,没有任何问题,另外,Matlab也是一项额外的技能。这个课程在斯坦福大学官方网站和coursera.org都可以找到。
无需多言,这门课对每个人来说都是必修课。
学习完这门课,现在需要用Python来实操所有学到的东西,并通过学习来提高专业化程度。所以,Coursera上由吴恩达、Kian Katanfrosh和 Younes Bensouda教授的deeplearning.ai也是必修课。这个专题有五门课程:
- 神经网络和深度学习
- 改进深层神经网络:超参数调整、正则化和优化
- 构建机器学习项目
- 卷积神经网络
- 序列模型
你从中可获得的主要技能是:
- TensorFlow
- 卷积神经网络
- 人工神经网络
- 深度学习
有人可能不喜欢TensorFlow,或者只是想测试TensorFlow的著名竞争者Pythorch(Facebook),那你可以选择学习Udacity上的课程。它由脸书与亚马逊网络服务合作提供,并且还有部分内容来自价值1400美元的Udacity著名的深度学习“纳米学位”课程。
当然,这只是一个开始,还有很多东西需要学习和发现,但如果开始学习了,希望学习者知道自己的立场和下一步计划。
一些建议
现在开始收听OC Devel的“机器学习指南”播客。这将提供一个完整的机器学习概述,包括机器学习的具体知识以及一个android和web应用程序开发人员转向机器学习道路的旅程。
在Kaggle上多练习(一旦开始机器学习,就会明白这一点)。