对机器学习很感兴趣,以后也想努力朝这个方向发展。这学期选修了学校研究生的机器学习课程,瞬间感觉到了自己的渺小。有什么适合小白入门的好教材好方法。


一定多看,多读,多写。学习最好的办法就是认真,只要用心,一切都是很简单的

最初出现在Quora上:「获得和分享知识的地方,使人们能够向他人学习,更好地了解世界。」

谷歌的Brain研究工程师Eric Jang在Quora上回答:

学习机器学习没有单一的「最佳途径」,你应该找到一个适合你的系统。 有些人更喜欢以课程的方式来学习,有些人喜欢按照自己的节奏阅读书籍,有些人则希望直接参与编码实操。2012年,我从Andrew Ng的机器学习Coursera课程开始,当时几乎不知道什么是线性代数,也不了解统计学和机器学习。请注意,尽管这个课程涵盖了神经网路,但它并不是一门深入学习的课程。但是我真的很喜欢这门机器学习课程,说白了只不过是数值优化而已。

如果在线课程对你来说太慢,最好的整合资源可能是Goodfellow、Bengio和Courville的深度学习书籍。这里面有几章专门介绍基本知识(类似于Ng的课程中包含的内容),然后直接跳转到实际的DNNs。

统计数学上严格的背景并不需要做有用的深度学习工作,但它确实有助于制定关于模型为什么不起作用的假设。 墨菲的概率机器学习教科书是机器学习的重要基础(也有很棒的图表!)

在阅读完DL book后,就可以通过自己实施一些例子来「专注」进入深度学习的一个子领域或是子子领域。 一些示例如下:

贝叶斯深度学习(将神经网路与图形模型相结合)深度强化学习(AlphaGo, atariai -playing AI, Robotics)生成模型(GAN,PixelCNN,VAE)深度学习理论计算机视觉NLP/Speech (translation, captioning, seq2seq models)Symbolic reasoning (e.g. proof-solving)重复性神经网路(如LSTMs)

在过去的几年里,深度学习领域已经有了显著的扩展,在短时间内探索深度学习的所有子领域是不现实的。建议深入到一个特定的子领域,一旦你掌握了一个领域,就更容易学习其他的子领域。除了它们都利用深度学习的表现力来学习端到端的任务,而且是一种普遍的实验风格(而不在是理论计算机科学)。

目前,最有趣的深度学习论文是在TensorFlow, Pytorch, Torch, Keras,或Theano中公开实现的,所以你可以快速建立一种直觉,看看是否可以改进现有的模型(例如,做一个更好的ResNet)。可能现在不应该从头开始在Python中实现自己的神经网路包,但是从中获得一些小细节对工作是非常重要的。


随著人工智慧的火热,数据科学领域逐渐被人们所熟知,相信你肯定也听说过诸如一些机器学习,深度学习之类让人听不懂的术语,而随著概念的火热,想进入人工智慧这个领域的人越来越多,原因无他,随著这个领域的火爆未来的发展机会,发展潮流乃至薪资都是非常可人的,但是许多人虽然想进入这个领域,却发现无从下手,或者说已经了解了人工智慧这个概念想开始学习机器学习,却不知道如何入门的人,今天就讲述一下,机器学习应该怎么样入门。

数据挖掘要了解机器学习,首先就不得不谈到数据挖掘,所谓数据挖掘,是指在数据中挖掘有价值的信息,最早定义的数据挖掘是KDD的一个步骤,后随著挖掘的应用场景不断丰富,其技术有了长足的发展,如今的数据挖掘,其概念无论从内涵还是外延角度而言都已独立成为一门学科。数据挖掘的特征是对客观世界的抽象,演算法则是对事物运行规律内嵌逻辑的还原,演算法作用于特征从而无限逼近客观事物运行规律的过程则是机器学习或者数据挖掘的过程。数据挖掘演算法分类

但凡从数据中进行有价值信息的挖掘,均可称为数据挖掘,时至今日,数据挖掘核心演算法主要可分为数理统计分析演算法和机器学习演算法两大类

  • 数理统计分析演算法核心演算法理论基于统计学相关理论,所有模型均经过严格数学理论验证,建模过程本质上是由现有模型理论出发向外求的过程机器学习演算法和数理统计分析演算法不同,机器学习演算法侧重于学习的过程,即利用数据训练模型,具体问题具体分析

数理统计分析一般流程

基于数理统计原理进行的分析,现在称作数理统计分析,也是数据挖掘的一个分支,如线性回归、时间序列等演算法,至今仍然是使用最广泛的演算法

数理统计分析一般遵循假设检验-建模参数选择-构建模型-建设检验评估模型-参数调优这五个步骤。机器学习一般流程机器学习的定义:一个计算机程序可以从经验E中学习某些类型的任务T和性能度量P,而且它在任务T中的性能(用P度量)可以随著经验E的提高而提高

机器学习鼻祖:感知机理论

随著计算机运算能力不断提升,数理统计分析大行其道。但人们并不止步于此,50年代就被提出的感知机理论在80年代再次进入公众视野,人们开始尝试使用计算机训练多层感知机,也就是现在所谓的神经网路。

神经网路演算法的计算机实践是成功的,这即是神经网路演算法本身诸多优秀特性所导致,也是计算机运算让神经网路迭代运算如虎添翼演算法分类从演算法理论层面来说,数理统计是基于统计学原理设计的一系列演算法,大多是基于少量样本的统计推断,其演算法虽然大多诞生实践较早,但在当今数据环境中仍然能够发挥巨大价值。机器学习是需要更多的计算资源及数据量支撑,计算前无需预设过多条件,运算过程会不断迭代,直至收敛。从演算法应用情景来分的话可以分为三个方面:
  • 有监督学习:在有标签数据上执行的分类、回归或者预测类演算法。无监督学习:在无标签的数据上执行聚类、频繁项挖掘等演算法。半监督学习、强化学习…

数据挖掘常用演算法

数理统计

机器学习有监督学习线性回归、逻辑回归、时间序列、岭回归、贝叶斯网路KNN、决策树、神经网路、支持向量机无监督学习假设检验、参数估计聚类分析、协同过滤、关联规则机器学习演算法分类演算法大类

代表演算法

距离类模型KNN、K-Means线性方程模型线性回归、岭回归、Lasso、弹性网、逻辑回归规则类模型树模型、Apriori、FP-Growth条件概率模型朴素贝叶斯、贝叶斯网路强学习器

支持向量机、神经网路

集成演算法Bagging、Boosting演算法学习的三重境界学习演算法有三种境界:
  1. 掌握演算法入口出口理解原理,灵活调优融会贯通,设计演算法

第一重境界,将演算法本身当做黑箱,在不知道演算法具体原理的情况下能够掌握演算法的基本应用情景(有监督、无监督),以及演算法的基本使用情景,能够调包实现演算法。

第二重境界则是能够深入了解、掌握演算法原理,并在此基础上明白演算法实践过程中的关键技术、核心参数,最好能够利用编程语言手动实现演算法,能够解读演算法执行结果,并在理解原理的基础上对通过调参对演算法进行优化最后一重境界,实际上也是演算法(研发)工程师的主要工作任务,即能够结合业务场景、自身数学基础来进行有针对性的演算法研发,此部分工作不仅需要扎实的演算法基本原理知识,也需要扎实的编程能力。机器学习的学习安排理论基础讲完,接下来就是要介绍一下我们应该如何的去安排我们如何去学习机器学习了,当前主流的数据挖掘演算法——机器学习大类演算法并非完全由一个个独立的演算法所组成,机器学习演算法内部有诸多相通之处,核心思想高度一致,彼此之间处理手段也有相互借鉴的地方,因此教学过程不仅对将各个演算法的核心原理、编程语言实现方法进行讲解,还需要对更为一般的机器学习方法论进行系统的讲解。我们的学习任务也分为三个阶段:

  1. 演算法入门演算法大爆炸高阶演算法

第一阶段

第一阶段主要是进行演算法入门,主要学习的是两点:核心演算法和机器学习方法论
  • 核心演算法:基于距离的模型:KNN最近邻分类器、聚类分析(K-Means、DBSCAN和层次聚类)机器学习方法论:基于距离的机器学习模型评估指标、加权距离与优化方法、学习曲线、交叉验证方法等

第二阶段

第二阶段是演算法大爆炸,在有了第一阶段基本演算法思维培养和基本方法论掌握的基础上,第二阶段将对当前主流机器学习演算法进行讲解学习,也是分为核心演算法和机器学习方法论。
  • 核心演算法:树模型:包括ID3、C4.5、CART等;回归分析:包括线性回归、岭回归、Lasso、广义线性回归(逻辑回归)等;贝叶斯分类器;关联规则:包括Apriori、FP-Growth、PrefixSpan等机器学习方法论:机器学习演算法一般流程、常用凸函数优化方法(梯度下降、最小二乘法、坐标轴下降、拟牛顿法等)、概率分类问题模型评估指标(ROC、AUC)、感知机模型基本原理

第三阶段

第三阶段也就是最后一个阶段是学习讲解当前机器学习演算法的高阶演算法部分,主要包括由感知机模型衍生而来的两个模型:神经网路和SVM,以及一些常用的集成方法。此部分所谓高级演算法,即指其基本原理要更加艰深,也指其使用过程难度更大。
  • 核心演算法:神经网路,多层感知机模型;SVM,包括线性SVM分类器、高斯核SVM分类器;集成演算法:Bagging和Boosting两大类演算法,包括AdaBoost、随机森林等。机器学习方法论:偏倚-方差评估体系、核函数方法、SMO演算法原理等

演算法

以上就是我么学习机器学习的三个阶段,接下来我们简单的讨论而言,在各种领域中,演算法是何物。
  • 在计算机领域中,演算法用来调整语法结构、数据结构,从而优化程序执行效率;在数学领域中,演算法指的是在根据一定条件构建的模型是否有解、是否存在最优解,及获取解的过程而在数据分析、数据挖掘或机器学习领域,演算法用于捕捉数据背后隐藏的客观规律,去解决和实际业务高度相关的某些问题。某些时候演算法是为了调整数据结构、降低程序的时间复杂度,提高计算机执行效率(如FP-Growth),多数时候演算法是为了解决最优化问题(如最小二乘法、梯度下降等),更多时候演算法就是一个数学模型,作用于特定的数据,产出特定的结论,解决特定的问题。

机器学习的一般流程

机器学习的一般流程是分为六个步骤:

  1. 提出问题:回归、分类,还是探索数据结构
  2. 底层核心逻辑,如自变数加权求和预测因变数
  3. 构建演算法体系或演算法方程,如

4. 设置模型超参数,然后根据问题构造损失函数,损失函数是一个包含模型参数的方程

5. 利用最优化演算法求解损失函数极值,常用最小二乘法、梯度下降、牛顿法、坐标轴下降演算法等,在求解损失函数极值的过程就是求解方程参数值的过程构建模型评估指标,寻找模型优化途径,模型调参。

6. 构建模型评估指标,寻找模型优化途径,模型调参。演算法理论、编程语言与演算法库接下来我们讨论一下演算法理论、编程语言和演算法库这三者的关系。首先,演算法理论是此三者中最核心的知识内容,掌握演算法基本理论、拥有演算法素养和演算法思维才能根据需求及数据情况合理选择选法、根据模型结果进行演算法调优,并合理解读模型结果;其次,演算法需要利用计算机来执行,因此我们需要将演算法中的人类逻辑转化为计算机逻辑交付计算机执行,此过程需要用到编程语言,但其只是演算法实践的工具最终,演算法库将进一步封装演算法底层执行过程,提供整洁而统一的介面给用户使用,从而降低演算法使用门槛。学习目标最后我们树立一下我们有关机器学习的学习目标:
  • 掌握常用演算法的核心原理掌握机器学习一般方法论了解常用演算法的优化方法树立数据挖掘思想和机器学习思想

以上就是有关机器学习入门的步骤希望大家在看完之后可以明白什么是机器学习,并且坚定的在这条道路上走下去,紧跟时代的潮流,早日找到自己满意的一份领域内的工作,谢谢。

最后附上Scikit-learn中文文档:scikit-learn中文社区

对于刚刚接触的同学来讲,参与Kaggle、阿里云天池等数据科学竞赛平台的项目和比赛是最好的学习方式。希望你能记住,机器学习只看书是永远也学不会的,必须参与项目、参与比赛,在实践中学习。搞清楚如何数据分析、 如何做数据清洗?、如何做特征工程、如何做特征选择、如何选择合适的机器学习模型、如何调参数。

参与比赛有一个重要的好处就是让你100%地清楚哪些演算法在实际应用中更有效。现在很多人往往是看过了周志华的西瓜书,就觉得自己懂机器学习了,这是很可笑的。最典型的例子就是很多人觉得SVM是最好用的分类器。包括很多发过会议论文的同学,其实也是停留在理论的乌托邦,而且论文的results部分有多real也很难判断。做比赛你可以拿到工业界的数据,而且这些数据都是头部互联网大厂的实际业务数据,所以在实战的过程中,我们可以逐渐井底之蛙蜕变为翱翔在天空的雄鹰,很清楚地知道哪些演算法好用,哪些方法靠谱,哪些人在吹逼和忽悠。

我曾经在GitHub开源了我的数据科学竞赛经验,里面也谈了很多关于如何学习机器学习知识和学习编程语言的经验。

yzkang/My-Data-Competition-Experience?

github.com

更详细的文字版本在这里:

David K:数据科学竞赛:你从未见过的究极进化秘笈?

zhuanlan.zhihu.com图标

可以先学一些卷积神经网路的基础知识,然后用Keras、TFLearn编程实现,跑一跑程序。

卷积神经网路

卷积神经网路有非常多的变体,可以继续深入学习,掌握残差网路、残差收缩网路等较新的结构。

残差网路

残差收缩网路[1][2]主要适合强杂讯、高冗余的数据,主要归功于自适应软阈值化的部分。

深度残差收缩网路

参考

  1. ^10分钟看懂深度残差收缩网路 https://www.cnblogs.com/uizhi/p/12239690.html
  2. ^M. Zhao, S. Zhong, X. Fu, B. Tang, M. Pecht, Deep residual shrinkage networks for fault diagnosis, IEEE Transactions on Industrial Informatics, vol. 16, no. 7, pp. 4681-4690, 2020. http://ieeexplore.ieee.org/document/8850096/


如果是初学者,建议一边实践一边学理论知识。

  1. 可以先学习 《机器学习实战》

机器学习实战 (豆瓣)?

book.douban.com图标

这本书从小数据集开始, 从零实现一些常用的机器学习演算法,让读者了解机器学习的来龙去脉,比较适合入门。

2. 如果看书比较枯燥的话, 也可以通过一些视频课程进行学习,

Python3入门机器学习_经典演算法与应用-慕课网实战?

coding.imooc.com图标

这个视频课程里面, 从零实现了sklearn 常用的机器学习演算法, 虽然是简化版实现, 但是对理解机器学习常用框架演算法很有帮助。

3. 吴恩达的机器学习视频, 也是入门机器学习的必看视频。

[中英字幕]吴恩达机器学习系列课程_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili?

www.bilibili.com图标

4. 有了以上的基础, 可以继续学习一些机器学习理论知识。这个时候可以看看西瓜书了。

机器学习 (豆瓣)?

book.douban.com图标

5. 接下来可以学习一下深度学习的内容 《深度学习入门》 这本书没有使用任何深度学习框架, 用python 搭建了完整的卷积神经网路, 可以深入了解神经网路的实现原理,以后再学习更复杂的框架时,有一个扎实的基础。

深度学习入门 (豆瓣)?

book.douban.com图标

6. 有了一些基础知识以后, 可以学习一些实战课程

机器学习实战:基于Scikit-Learn和TensorFlow (豆瓣)?

book.douban.com图标Python深度学习 (豆瓣)?

book.douban.com图标

7. 最后可以在Kaggle 做一些比赛题目,一开始可以先找一些自己感兴趣的数据集, 学习一下别人的解决方法,慢慢尝试自己来实践。

https://www.kaggle.com?

www.kaggle.com

机器学习需要很多的动手实践, 实践过程中慢慢积累理论知识,希望能帮助到你。


推荐阅读:
相关文章