Py学习  »  Python

python机器学习,学习路径拆解及资源推荐

数据分析 • 4 年前 • 409 次点击  
后台回复“  机器学习 ”即可获取高清思维导图


自从Alpha围棋占据人类棋类智力顶峰以来,人工智能、机器学习等概念的热度变越来越高,机器在各大领域的应用大放异彩。


·全球首个“AI合成主播”上岗,以假乱真

·OpenAIDOTA5v5 AI大战人类团队,大获全胜

·谷歌Duplex代替人类自动接打电话,惊艳四座


但大多数人会将人工智能、机器学习、深度学习等概念混淆,甚至以为这些概念是一个意思,实际上,机器学习只是人工智能的一个分支。


机器学习整个知识体系可总结如下:



虽然机器学习一直都被认为是一个较难的领域,但经过对学习体系的分解,按照学习路径一步一步的学习,普通人也可以成长为机器学习大神。

 

接下来我们分别从每一个部分展开,讲讲具体应该学什么、怎么学,以及各个部分主要的知识点进行结构化地展示,并有针对性地推荐学习资源。



  机器学习基础知识 


想要步入机器学习领域,数学基础是第一个,也是最大的一个门槛。

 

如果你在学习机器学习过程中遭遇挫折,多半是由于数学知识的阻碍。


机器学习的数学基础知识有哪些?这是准备入门机器学习的学习者们面临的共同问题

 

微积分和线性代数很重要,大部机器学习是对机器的模型拟合,微积分作为基础中的基础,在大多数数据场景当中都有应用;


在模型使用时一般最先考虑的是线性模型,你需要用线性代数来简洁清晰的描述问题,为分析求解奠定基础。

 

概率论也少不了,涉及数据的问题,不确定性几乎是不可避免的,引入随机变量顺理成章,相关理论、方法、模型非常丰富。

 

优化基础和信息论也需要一定的了解,因为它们会在你面对复杂问题时为你提供思路。


推荐数学基础书籍和资源:

《概率论:科学的逻辑》  http://t.cn/R0MzVAA

《信息论、推理与学习算法》http://t.cn/EqirC5g

在线数学教材汇总  http://t.cn/7yiJV

免费数学教材  http://t.cn/RvltCtQ

MIT在线教材   http://t.cn/EIhFPc5



除了数学基础,机器学习的另一个准入门槛是一点简单的编程知识。

 

学习机器学习不一定要精通一门编程语言,但你需要一些基础知识,在这里我推荐使用python,因为python语言简单易用,即使没有计算机基础的人也能快速上手。


而且python当中包含很多基础库,直接调用就可以帮你做大多数事情。


推荐python学习资源:

《Learn Python the Hard Way》 https://dwz.cn/nhx5V5WF

Python 科学计算入门 http://suo.im/2cXycM

Python 文档  https://dwz.cn/18rdithb      


推荐Pandas文档:

十分钟入门Pandas  http://t.cn/EVTGis7

Pandas中文文档  https://www.pypandas.cn/


推荐Numpy文档:

Nump快速入门  http://h5ip.cn/ypHr

Numpy中文文档  https://www.numpy.org.cn/


推荐matplotlib文档:

matplotlib中文文档  

https://www.matplotlib.org.cn/



有一个说法是:机器学习是被美化的统计学。


当然,机器学习不只是统计学的美化,但是我们也能看出机器学习与统计学深有渊源,统计学注定成为机器学习基础中不可或缺的一部分。


推荐统计学习资源:

《统计学习元素》  https://dwz.cn/SAc2gXl4 

《统计学习方法》   http://t.im/ddj4      




  机器学习算法 


机器学习算法通常被分为两大类,有监督学习和无监督学习。

 

监督学习:有训练样本,带有属性标签,也可以理解成样本有输入有输出。

 

无监督学习:无监督学习(Unsupervised learning)就是聚类,事先不知道样本的类别,通过某种办法,把相似的样本放在一起归为一类。


无论是有监督学习还是无监督学习,我们需要掌握的最重要的一点就是算法。


所有的回归算法和分类算法都属于监督学习。回归(Regression)和分类(Classification)算法区别在于输出变量的类型,连续变量预测称为回归;离散变量预测成为分类。


 

无监督学习的两种常见用例是探索性分析和降维。常见的无监督学习还有随机森林(Random forests)、K均值聚类(K-means clustering)等方法。


推荐算法资源

斯坦福课程  http://uee.me/aMVF6  

监督学习十大算法  http://uee.me/aMVF3     

算法选择图谱  http://uee.me/aMVF4   





  数据特征与模型优化



机器学习的一般遵循“数据采集-数据预处理-特征工程-模型评估-模型优化-预测”的流程,预测是机器学习的最终目的。


1.原始数据的采集


机器学习的第一步是进行原始数据的采集,原始数据的数量和质量直接决定了预测模型的好坏。


数据采集前需要明确哪些数据对最后的结果预测有帮助?数据从哪些渠道进行采集?运用什么方式来采集? 


原始数据通过各种渠道收集而来,公开数据源是获取有效数据的捷径,这些数据大多经过相关机构的收集和整理并经过分类再公布出来,数据来源可靠,信息丰富。


另外一个采集原始数据的渠道是通过爬虫爬取,到这里你可能就会知道为什么先修基础当中会要求一定的python基础。


最后,在数据采集的过程当中,你可能还需要注意以下几点:


收集完整的数据,我们无法预先知道哪些属性哪些信息对于模型预测是真正有价值的,因此需要收集完整的数据集以确保模型预测的有效性。


对数据进行标记,在监督学习的场景当中,例如,情感分析模型需要用标签标记,来帮助算法理解人类使用的俚语或讽刺挖苦的表达方式。


有时数据标记的工作往往非常耗时耗力,在某些场景中,这类工作不仅对人的专业背景要求高,而且完成标记所需的周期长。


推荐数据汇总资源:

数据获取方式汇总   https://dwz.cn/Q44MsDkH




2.数据预处理


在机器学习中有一句名言:数据和特征决定了机器学习的上限,而模型和算法的应用只是让我们逼近这个上限


这个说法形象深刻的说明了前期数据处理的重要性。


机器学习的数据预处理一般包括数据采样、数据清洗和数据标准化


·数据采样


当机器学习中样本比例不平衡时,通常会采取数据采样的方法,对数据进行采样可以有针对性地改变数据中样本的比例。


采样一般有两种方式

·over-sampling :增加样本数较少的样本,其方式是直接复制原来的样本

·under-sampling:减少样本数较多的样本,其方式是丢弃这些多余的样本


通常来说,当总样本数目较多的时候考虑 under-sampling,而样本数数目较少的时候考虑 over-sampling。



·数据清洗


采集到的原始数据往往比较粗糙或伴随有噪音,此时我们需要进行数据清洗,清洗的对象是缺失值、错误值、重复值和不一致的数据。



·数据标准化


与普通的数据挖掘不同,机器学习的数据还需要进行数据标准化。

包括与样本尺度归一化、逐样本的均值相减、标准化等,这些工作简单可复制,经过标准化的数据能够更好地帮助我们进行特征处理。


另外,在预处理阶段,我们还需要将数据分为三种数据集。

包括用来训练模型的训练集、开发过程中用户调参的验证集以及测试时所使用的测试集。




3.特征工程


特征是数据中抽取出来的对结果预测有用的信息,可以是文本或者数据。


特征工程的目的是筛选出更好的特征,获取更好的训练数据。


·特征处理特征总体分为数值型、类别型、时间型、文本型等几个类型 ,特征处理需要将这些类型的特征进行归一化、标准化等处理。


·特征选择 从多个特征中,挑选出一些对结果预测最有用的特征。


·特征降维: 当特征选择完成后,可以直接训练模型了,但是可能由于特征矩阵过大,导致计算量大,训练时间长的问题,因此降低特征矩阵维度也是必不可少的。


常见的降维方法有主成分分析法(PCA)、线性判别分析(LDA),以及多维尺度分析


·PCA即主成分分析方法,是一种使用最广泛的数据降维算法。


·LDA:PCA和LDA总是同时谈到,它们都是非常有效的数据降维算法。


·MDS:即多维尺度分析,是根据具有很多维度的样本或变量之间的相似性(距离近)或非相似性(距离远,即通过计算其距离)来对其进行分类的一种统计学研究方法。


推荐特征工程资源:

《机器学习模型的特征工程》   http://t.im/ddvz

PCA文档   http://t.im/ddki

LDA视频   http://t.im/ddls  

MDS   https://Multidimensional




4.模型评估


模型评估是准确预测的关键。


评估指标是把"尺子",用来评判模型优劣水平的算法,不同的机器学习模型有着不同的"尺子"。


同时同一种机器学习模型也可以用不同的尺子来评估,只是每个尺子的的着重点不同而已。


通过训练集产生的模型,利用测试数据来进行模型效果的评估,混淆矩阵、roc曲线等一系列评估指标将帮助判断模型是否可行以及是否满足业务目标。

-分类评估指标


·对数损失函数:在分类输出中,若输出不再是0-1,而是实数值,即属于每个类别的概率,那么可以使用Log-loss对分类结果进行评价。


·精确率-召回率(Precision-Recall):精确率-召回率其实是两个评价指标,但是它们一般都是同时使用。


精确率是指分类器分类正确的正样本的个数 该分类器所有分类为正样本个数的比例。

回率是指分类器分类正确的正样本的个数占所有的正样本个数的比例。


·混淆矩阵:混淆矩阵显示了分类模型相对数据的真实输出(目标值)的正确预测和不正确预测数目。


·ROC曲线:越远离对角线,说明模型效果越好,ROC曲线下的区域面积即为AUC值,AUC值越接近1模型的效果越好。

随着阈值的减小,Sensitivity和1-Specificity也相应增加,所以ROC曲线呈递增态势。



理想情况下,曲线快速爬向左上,表示模型准确预测数据。红色斜对角线表示随机模型。


·AUC(Area Under the ROC Curve)指标:AUC是曲线下面积。

在模型评估阶段常被用作最重要的评估指标来衡量模型的准确性,横坐标为其中随机分类的模型AUC为0.5,所以模型的AUC基线值大于0.5才有意义。




-回归评价指标


·RMSE(root mean square error平方根误差):回归模型中最常用的评价模型。


·Quantiles of Errors  --误差的分位数:为了改进RMSE的缺点,提高评价指标的可行性,使用误差的分位数来代替,如中位数来代替平均数。


推荐模型评估资源:

模型选择与评估公开课     http://t.im/ddwy

《评估机器学习模型》   http://t.im/ddx8      




5.模型优化


机器学习模型建立过程是一个参数学习与调优的过程,模型的应用是循环迭代的过程,只有通过持续调整和调优才能适应在线数据和业务目标。


调参是机器学习中的一项大工程,大多数人知道有调参这个步骤,却并不知道调参的目的是什么?到底要调哪些东西?


调参的过程是一种基于数据集、模型、和训练过程细节的实证过程。


参数可以分为两类,一类是不需要手动设置、在训练过程中可以自动被调整的参数;


另一类是超参数,即需要在训练前手动设置的参数,例如树的数量或深度、学习率、k均值聚类中的簇数……


超参数的种类多,调节范围大,需要先进行简单的测试确定调参范围。


交叉验证在这里提出,是因为它可作为一种确定超参数的方法。


对训练集再次进行切分,得到训练集以及验证集,通过训练集训练得到的模型,在验证集验证,从而确定超参数。(选取在验证集结果最好的超参数)




推荐模型优化资源:

模型优化文档   http://t.im/ddzl 

超参数文档   http://t.im/ddpm             

交叉验证文档   http://t.im/ddpd




集成学习:集成学习(Ensemble learning)是使用一系列学习器进行学习,并使用某种规则把各个学习结果进行整合,从而获得比单个学习器显著优越的泛化性能。


它不是一种单独的机器学习算法,而更像是一种优化策略,因此将它列入模型优化当中。


推荐集成学习资源:  

使用sklearn进行集成学习 http://uee.me/aMVFH  




  细分进阶



如果通过上面的学习你已经具备了机器学习的基础,并且能够实现一个完整的机器学习流程。

 

那么接下来你可以尝试进行一些更为深入的领域。比如深度学习和强化学习。

 

·强化学习:又称再励学习、评价学习,是一种重要的机器学习方法,在智能控制机器人及分析预测等领域有许多应用。


·深度学习:深度学习是机器学习研究中的一个新的领域,其动机在于建立、模拟人脑进行分析学习的神经网络,它模仿人脑的机制来解释数据,例如图像,声音和文本。


推荐细分进阶资源:

《强化学习》  http://t.im/ddon    

强化学习课程   http://t.im/ddod   

深度学习资源   http://t.im/ddny    



以上就是机器学习完整的学习路径,这个框架确实有一些庞大和复杂,因为它需要强大的数学知识做支撑,并包含了大量的算法和理论。

 

但没有必要感到困难和可怕,因为我们是站在巨人的肩膀上来学习,前人已经给出了我们一套完整的方法,我们只需要去学习就能够达到工程师的高度。

 

以上知识框架,我们做了完整打包

包含超清版图片、PDF文档、思维导图文件

还有机器学习相关资料 

后台回复“  机器学习 ”即可获取


本文转自:DC黑板报 ;获授权;

END

合作请加QQ:365242293  

数据分析(ID : ecshujufenxi )互联网科技与数据圈自己的微信,也是WeMedia自媒体联盟成员之一,WeMedia联盟覆盖5000万人群。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/52786
 
409 次点击