入门机器学习,大体路线怎样的。不太清楚每一个阶段要学习的东西


您好!这是我们老师根据现有资源整理的一个机器学习路径。涵盖了Numpy,Scipy,Pandas,Scikit-learn,Matplotlib 等开源工具的学习,并完成从数据清理、数据分析、模型构建,到最终的预测评估及可视化呈现。基本由浅入深地涵盖了大多机器学习的入门知识。

「成为编程大牛要一门好语言加一点点天分。一门好语言,一点点天分,再加一份坚持。要是天分少,光靠坚持也行。」

入门知识

  1. Linux 基础入门(新版)

2. Github 快速上手实战教程

3. Python3 简明教程

4. NumPy 百题大冲关5. Pandas 百题大冲关6. 使用 Matplotlib 绘制 2D 和 3D 图形本教程的正确食用姿势:区别于目前所有主流教程,这类教程的核心就是动手!跟著文档说明,在在线的Linux系统中一步一步地敲出基础知识,各种有趣项目;走出只看书、看视频却不动手的禁区,你会比别人学的更快的,放心。

演算法基础

  1. 基于SVM的猫咪图片识别器

SVM(支持向量机)是一种常用的机器学习分类演算法。教程使用HOG+SVM演算法和OpenCV实现一个图片分类器,通过自己训练分类器,达到可以判断任意图片是否是猫咪的效果。

2. K-近邻演算法实现手写数字识别系统

从电影题材分类的例子入手,详细讲述 k-近邻演算法的原理。在这之后,我们将会使用该演算法实现手写数字识别系统,书籍教程配套实验练习,帮助您更好得实战。

3. Spark 基础之使用机器学习库 MLlib你将可以学习到 Spark 的机器学习库—— MLlib 的相关知识,了解 MLlib 与 ML 之间的区别和联系,掌握 MLlib 中的几个基本数据类型。同时,还将通过一个电影推荐的实例,讲解如何利用机器学习演算法解决实际问题。4. 决策树实战项目-鸢尾花分类了解决策树的基本概念,学习决策树生成过程中的 ID3, C4.5 及 CART 演算法及原理。最后通过 scikit-learn 提供的决策树演算法完成鸢尾花分类实验。

5. 使用逻辑回归预测IPO市场在20世纪90年代末,获得了对的IPO(首次公开募股)就像赢得彩票一样。通过对一系列数据进行清洗、建模、分类,来获一个可以预测IPO市场的简单模型。6. 《Python 贝叶斯分析》- 利用逻辑回归实现鸢尾花分类讲解逻辑回归模型的概念,以及由线性回归扩展为逻辑回归的逆连结函数概念,并利用逻辑回归对鸢尾花进行分类。

中场休息......笑一个吧!

基础项目

  1. 人机对战初体验:Python基于Pygame实现四子棋游戏

利用Python模拟AI和玩家进行四子棋游戏,利用游戏实验Pygame库,为游戏提供界面和操作支持。AI演算法借用蒙特卡洛搜索树思想。通过设置AI的难度系数,即AI所能考虑到的未来棋子的可能走向,从而选择出最佳的方案和玩家对抗。

2. Python 实现英文新闻摘要自动提取新闻摘要提取就是除去新闻中冗余的部分,只保留关键的语句。教程将通过两个实验来为大家介绍两个不同的提取摘要演算法,并通过python语言完成英文新闻摘要的自动提取。

3. 使用 Python 实现深度神经网路教你使用 Python 实现一个深度神经网路,让你在实际动手的过程中理解深度学习的一些基本原理,带你真正入门深度学习。

4. 使用卷积神经网路进行图片分类卷积神经网路特别适合于处理图像相关问题,教程一边讲解卷积神经网路原理,一边带你动手使用caffe深度学习框架进行图片分类。

5. 基于卷积神经网路实现图片风格的迁移基于卷积神经网路,使用Caffe框架,探讨图片风格迁移背后的演算法原理,手把手教你实现和Prisma一样的功能,教计算机学习梵高作画。

开源工具学习

  1. scikit-learn 实战之非监督学习

机器学习中,除了常见的监督学习之外,还有一个非常重要的分支 —— 非监督学习。本教程将带你了解非监督学习,并学会使用 scikit-learn 解决非监督学习问题。

2. scikit-learn 实战之监督学习监督学习是机器学习中最为常见、应用最为广泛的分支之一。本教程将带你了解监督学习,并学会使用 scikit-learn 提供的各类监督学习方法解决实际问题。

3. 深度学习初探--入门DL主流框架通过8个实验,带领同学们入门TensorFlow、Theano、Keras 及 Caffe 几个主流的深度学习框架,通过项目实践使同学了解如何利用这些框架搭建自己的深度学习神经网路。中场休息......要么面带桃花,要么面带微笑。

进阶项目

  1. Python 应用马尔可夫链演算法实现随机文本生成

应用马尔可夫链演算法,实现根据给定训练文本,输出随机生成的中/英文文本。使用 Python 实现一个类,封装可供使用的方法。

2. 神经网路实现人脸识别任务利用基于无监督学习的自编码器对人脸数据进行特征提取,进行图片降维,利用降维后的结果作为有监督学习分类器的输入,最终利用一个三层神经网路实现人脸识别的任务。

3. 基于无监督学习的自编码器实现介绍一种基于无监督学习神经网路数据降维的一种应用——自联想存储器。

4. NBA常规赛结果预测:利用Python进行比赛数据分析

利用NBA在2015~2016年的比赛统计数据进行回归模型建立,最终在今年2016~2017的常规赛中预测每场比赛的输赢情况。

5. Python 气象数据分析:《Python 数据分析实战》先会对数据进行清洗,然后运用 Python 中 matplotlib 模块的对数据进行可视化处理,最终从清晰的图表中得出我们的结论。6. Twitter数据情感分析使用Spark MLlib对Twitter上的流数据进行情感分析,并且利用Python的工具包basemap可视化美国不同的州对于曾经的总统候选人情感分析结果。

7. Ebay 在线拍卖数据分析利用 eBay 上的拍卖数据进行数据分析,实现通过数据判断拍卖最终是否可以成功交易和预测最终成交的价格。8. 大数据带你挖掘打车的秘籍基于某市的计程车行驶轨迹数据,带你学习如何应用Spark SQL和机器学习相关技巧,并且通过数据可视化手段展现分析结果。

9. 使用 Spark 和 D3.js 分析航班大数据在航班数据分析实验中,可以学习到如何使用 OpenRefine 进行简单的数据清洗,以及如何通过 Spark 提供的 DataFrame、 SQL 和机器学习框架等工具,对航班起降的记录数据进行分析。如果你看到这里,你已经超过91.23%对机器学习感兴趣的人啦噢嘿嘿。你知不知道,有句话是这样说的:一件事,1000人想去做,100人开始做了,最终,只有1个人坚持到了最后。话虽没有绝对,但想想看,今天确实是你生命中最年轻的一天啦,所以,想要做的事,勇敢捡起来做吧!祝你学习顺利。

其他教程推荐:

第一弹:超全Python学习资源整理(入门系列)第二弹:超全Python学习资源整理(进阶系列)40个大数据学习资源PHP学习资源整理:入门到进阶全系列8个程序员专用软体/网站,个个是神器,第一个最惊喜......Java进阶之设计模式Scala 开发教程Hadoop部署及管理RabbitMQ 消息队列Redis基础教程Shell脚本实现打字游戏Python3 实现色情图片识别Python实现3D建模工具

谢谢邀请。

之前我们平台推出过一篇《怎样成为一名优秀的演算法工程师》,希望给能给大家一点启发。

首先来看一个高度相关的问题:一个优秀的演算法工程师必须具备哪些素质?我们给出的答案是这样的:

数学知识

编程能力机器学习与深度学习的知识应用方向的知识对自己所做的问题的思考和经验

数学知识

与其他工作方向如app、伺服器开发相比,以及与计算机科学的其他方向如网路,资料库,分散式计算等相比,人工智慧尤其是机器学习属于数学知识密集的方向。在各种书籍,论文,演算法中都充斥著大量的数学公式,这让很多打算入门的人或者开始学习的人感到明显的压力。首先我们考虑一个最核心的问题:机器学习和深度学习究竟需要哪些数学知识?在SIGAI之前的公众号文章「学好机器学习需要哪些数学知识」里,我们已经给出了答案。先看下面这张表:

上面的表给出了各种典型的机器学习演算法所用到的数学知识点。我们之前已经总结过,理解绝大多数演算法和理论,有微积分/高等数学,线性代数,概率论,最优化方法的知识就够了。除流形学习需要简单的微分几何概念之外,深层次的数学知识如实变函数,泛函分析等主要用在一些基础理论结果的证明上,即使不能看懂证明过程,也不影响我们使用具体的机器学习演算法。概率图模型、流形学习中基于图的模型会用到图论的一些基本知识,如果学习过离散数学或者数据结构,这些概念很容易理解。除此之外,某些演算法会用到离散数学中的树的概念,但很容易理解。

编程能力

编程能力是学好机器学习和深度学习的又一大基础。对于计算机类专业的学生,由于本科已经学了c语言,c++,数据结构与演算法,因此这方面一般不存在问题。对于非计算机专业的人来说,要真正学好机器学习和深度学习,这些知识是绕不开的。

虽然现在大家热衷于学习python,但要作为一名真正的演算法工程师,还是应该好好学习一下c++,至少,机器学习和深度学习的很多底层开源库都是用它写的;很多公司线上的产品,无论是运行在伺服器端,还是嵌入式端,都是用c++写的。此外,如果你是应届生,在校园招聘时不少公司都会面试你c++的知识。

机器学习与深度学习

在说完了数学和编程基础之后,下面我来看核心的内容,机器学习和深度学习知识。机器学习是现阶段解决很多人工智慧问题的核心方法,尤其是深度学习,因此它们是演算法工程师的核心知识。在这里有一个问题:是否需要先学机器学习,还是直接学深度学习?如果是一个专业的演算法工程师,我的建议是先学机器学习。至少,你要知道机器学习中的基本概念,过拟合,生成模型,ROC曲线等,上来就看深度学习,如没有背景知识你将不知所云。另外,神经网路只是机器学习中的一类方法,对于很多问题,其他机器学习演算法如logistic回归,随机森林,GBDT,决策树等还在被大规模使用,因此你不要把自己局限在神经网路的小圈子里。

首先来看机器学习,这方面的教材很多,周志华老师的机器学习,李航老师的统计学习方法是国内的经典。这里我们介绍国外的经典教材,首先是PRML,深度学习是花书,然后强化学习是《An Introdction to Reinforcement Learning》

开源库

上面介绍了机器学习和深度学习的理论教材,下面来说实践问题。我们无需重复造车轮子,熟练的使用主流的开源库是需要掌握的一项技能。对于经典的机器学习,常用的库的有:

libsvm

liblinearXGBoostOpenCVHTKWeka

在这里我们不一一列举。借助于这些库,我们可以方便的完成自己的实验,或是研发自己的产品。对于深度学习,目前常用的有:

Caffe

TensorFlowMXNet

除此之外,还有其他的。对于你要用到的开源库,一定要理解它的原理,以及使用中的一些细节问题。例如很多演算法要求输入的数据先做归一化,否则效果会非常差,而且面临浮点数溢出的问题,这些实际经验需要你在使用中摸索。如果有精力把这些库的核心代码分析一遍,你对实现机器学习演算法将会更有底气。以深度学习为例,最核心的代码无非是实现:

各种层,包括它们的正向传播和反向传播

激活函数的实现损失函数的实现输入数据的处理求解器,实现各种梯度下降法

这些代码的量并不大,沉下心来,我相信一周之内肯定能分析完。看完之后你会有一种豁然开朗的感觉。

应用方向的知识

接下来是各个方向的知识,与机器学习有关的应用方向当前主要有:

机器视觉

语音识别 自然语言处理数据挖掘知识图谱推荐系统

除此之外,还有其他一些特定小方向,在这里不一一列举。这些具体的应用方向一般都有自己的教材,如果你以后要从事此方向的研究,系统的学习一遍是必须的。

实践经验与思考

在说完理论与实践知识之后,最后我们来说经验与思考。在你确定要做某一个方向之后,对这个方向的方法要有一个全面系统的认识,很多方法是一脉相承的,如果只追求时髦看最新的演算法,你很难做出学术上的创新,以及工程上的优化。对于本问题所有的经典论文,都应该化时间细度,清楚的理解它们解决了什么问题,是怎么解决的,还有哪些问题没有解决。例如:

机器视觉目标检测中的遮挡问题

推荐系统中的冷启动问题

自然语言处理中文分词中的歧义切分问题

只有经过大量的编程和实验训练,以及持续的思考,你才能算得上对这个方向深刻理解,以至于有自己的理解。很多同学对自己实现轮上的演算法没有底气,解决这个问题最快的途径就是看论文演算法的开源代码,在github上有丰富的资源,选择一些合适的,研究一下别人是怎么实现的,你就能明白怎么实现自己的网路结构和损失函数,照葫芦画瓢即可。

计算机以及人工智慧是一个偏实践的学科,它的方法和理论既需要我们有扎实的理论功底,又需要有丰富的实践能力与经验。这两个方面构成了演算法工程师最主要的素质。科学的学习路径能够让你取得好的学习效果,同时也缩短学习时间。错误和浮躁的做法则会让你最后事倍功半。这是SIGAI对想进入这个领域,或者刚进入这个领域的每个人要说的!


你的英语如何?英语好的话私信我。我发现一个印度人做的课非常好。


只需十四步:从零开始掌握Python机器学习(附资源)


先大致复习下数学,微积分,矩阵,概率统计,再看下数据结构,入门课推荐ng的机器学习课,数学要求比较低讲的也很细,看完课可以再看一下周志华的《机器学习》
推荐阅读:
查看原文 >>
相关文章