带你读《Python机器学习》之一:机器学习基础

简介: 本书讲解了如何使用Python的核心元素以及强大的机器学习库,同时还展示了如何正确使用一系列统计模型。本书可作为学习数据科学的初学者及想进一步拓展数据科学领域认识的读者的参考书。同样,本书也适合计算机等相关专业的本科生、研究生阅读。全书共13章,除了简要介绍机器学习及Python在机器学习中的应用,还系统讲述了数据分类、数据预处理、模型优化、集成学习、回归、聚类、神经网络、深度学习等内容。本书将机器学习背后的基本理论与应用实践联系起来,通过这种方式让读者聚焦于如何正确地提出问题、解决问题。

智能系统与技术丛书
点击查看第二章
点击查看第三章
Python机器学习

image.png


赵涓涓 强 彦 主编

第1章

机器学习基础

1.1 引论

在本书开篇之前,读者首先需要明白一个问题:机器学习有什么重要性,以至于需要学习这本书呢?
那么接下来的两张图片,希望可以帮助大家解决这个首要问题。
图1-1所展示的三位学者是当今机器学习界的执牛耳者。中间是Geoffrey Hinton,加拿大多伦多大学教授,如今被聘为“Google大脑”的负责人。右边是Yann LeCun,纽约大学教授,如今是Facebook人工智能实验室的主任。而左边这位相信大家都很熟悉,是Andrew Ng,中文名吴恩达,斯坦福大学副教授,曾于2014年加入百度,担任百度公司首席科学家,负责百度研究院的领导工作,尤其是Baidu Brain计划。

image.png

这三位都是目前业界炙手可热的大牛,深受互联网界大鳄的欢迎,这足以证明他们的重要性。而他们的研究方向无一例外都是机器学习的子类学科——深度学习。
图1-2所描述的是Windows Phone上的语音助手Cortana,它的名字来源于科幻游戏《光环》中士官长的助手。相比其他竞争对手,微软很迟才推出这个服务。Cortana背后的核心技术是什么?为什么它能够听懂人的语音?事实上,这个技术正是机器学习。机器学习是所有语音助手产品(包括Apple的Siri与Google的Now)能够跟人交互的关键技术。

image.png

通过以上两张图片,相信各位读者可以看出机器学习似乎是一项很重要的、有很多未知特性的技术。

1.2 何谓机器学习

1.2.1 概述

机器学习(Machine Learning,ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。它专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。它是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域,它主要使用归纳、综合而不是演绎。
传统上,如果想让计算机工作,我们给它一串指令,然后它遵照这个指令一步步执行下去,有因有果,非常明确。但这样的方式在机器学习中却行不通。机器学习所接受的不是我们输入的指令,而是我们输入的数据。也就是说,机器学习是一种让计算机利用数据而不是指令来执行各种工作的方法。这听起来非常不可思议,但实际上却是非常可行的。

1.2.2 引例

为了加深机器学习在读者心中的印象,我们使用“等人问题”的例子,来进一步介绍机器学习的概念。
1.提出问题
小Y不是一个守时的人,最常见的表现是他经常迟到。小A与他相约3点钟在某地见面,在出门的那一刻小A突然想到一个问题:我现在出发合适吗?我会不会到了地点后,又要花上30分钟去等他?
2.解决思路
小A把以往跟小Y相约的经历在脑海中重现一遍,统计了一下跟他约会的次数中,迟到占了多大的比例,并以此为依据来预测小Y这次约会迟到的可能性。如果这个值超出了小A心里的某个界限,那么小A选择等一会再出发。
假设小A跟小Y相约过5次,小Y迟到的次数是1,那么小Y按时到的比例为80%。如果小A心中的阈值为70%,那么就认为这次小Y应该不会迟到,因此小A按时出门;如果小Y迟到过4次,也就是他按时到达的比例仅为20%,由于这个值低于小A心中的阈值,则小A选择推迟出门的时间。
这个方法从其利用层面来看,又称为经验法。在经验法的思考过程中,我们事实上利用了以往所有约会的数据,因此也可以称之为依据数据所做的判断。依据数据所做的判断跟机器学习的思想根本上是一致的。
3.建立模型
上述小A的思考过程只考虑“频次”这种属性,而一般的机器学习模型至少考虑两个量:一个是因变量,即希望预测的结果,在上述例子中就是小Y迟到与否的判断;另一个是自变量,也就是用来预测小Y是否迟到的量。
假设将时间作为自变量,譬如根据以往经验发现小Y所有迟到的日子基本都是星期五,而在非星期五情况下他基本不迟到。于是可以建立一个模型,来模拟小Y迟到跟日期是否是星期五的概率,如图1-3所示。

image.png


这样的图就是一个最简单的机器学习模型,我们称之为决策树。
当仅仅考虑一个自变量时,情况较为简单。但实际情况较为复杂,还需要考虑一个其他因素,例如小Y迟到的部分原因是他开车赶往约定地点时出现的状况(比如,开车比较慢或者路较堵)。考虑到这些信息,就需要建立一个更复杂的模型,这个模型包含两个自变量与一个因变量;而考虑更复杂的情况,小Y的迟到跟天气也有一定的关系,例如,下雨时路比较滑导致路途花费的时间更长,这时需要考虑三个自变量。
如果将所有的自变量和因变量输入计算机,将建模过程交给计算机,由计算机生成一个模型,同时让计算机根据小A当前的情况,给出小A是否需要晚出门以及需要晚几分钟的建议,那么计算机执行这些辅助决策的过程就是机器学习的过程。
4.建立对比
通过上述分析,可以看出机器学习与人类思考的经验过程是类似的,并且可以考虑更多的情况,执行更加复杂的计算。事实上,机器学习的一个主要目的就是把人类思考归纳经验的过程转化为计算机通过对数据的处理计算得出模型的过程。经过机器学习,计算机训练出的模型能够以近似于人的方式解决很多灵活而复杂的问题。
将机器学习的过程与人类对历史经验归纳的过程进行比对,如图1-4所示。

image.png

机器学习中的“训练”与“预测”过程可以对应到人类的“归纳”和“预测”过程。通过这样的对应,我们可以发现,机器学习的思想并不复杂,仅仅是对人类在生活中学习成长的一个模拟。由于机器学习不是基于编程形成的结果,因此它的处理过程不是因果的逻辑,而是通过归纳思想得出的相关性结论。

1.3 机器学习中的常用算法

机器学习有许多算法,这里,我们分别按照两个标准对常用的机器学习算法进行划分:第一个标准是算法的学习方式,第二个标准是算法的相似性。

1.3.1 按照学习方式划分

根据数据类型的不同,对一个问题的建模有多种不同的方式。在机器学习领域,通常将算法按照学习方式进行分类,这样可以在建模和算法选择的时候根据输入数据的类型来选择最合适的算法以获得最好的结果。按学习方式可分为监督学习、无监督学习、半监督学习和强化学习。
1.监督学习
监督学习(Supervised Learning)示例模型如图1-5所示。

image.png

在监督学习中,输入数据称为“训练数据”,每组训练数据有一个明确的标识或结果。如防垃圾邮件系统中“垃圾邮件”“非垃圾邮件”,手写数字识别中的“1”“2”“3”“4”等。在建立预测模型的时候,监督学习建立一个学习过程,将预测结果与“训练数据”的实际结果进行比较,不断地调整预测模型,直到模型的预测结果达到一个预期的准确率。监督学习的常见应用场景有分类问题和回归问题。常见算法有逻辑回归(Logistic Regression)和反向传递神经网络(Back Propagation Neural Network)。
2.无监督学习
无监督学习(Unsupervised Learning)示例模型如图1-6所示。

image.png

在无监督学习中,数据并没有被特别标识,学习模型是为了推断出数据的一些内在结构。常见的应用场景包括关联规则的学习以及聚类等。常见算法包括Apriori算法和k-means算法。
3.半监督学习
半监督学习(Semi-Supervised Learning)示例模型如图1-7所示。

image.png

在半监督学习方式下,输入数据部分被标识,部分没有被标识,这种学习模型可以用来进行预测,但是模型首先需要学习数据的内在结构以便合理地组织数据来进行预测。应用场景包括分类和回归,算法包括一些对常用监督式学习算法的延伸,这些算法首先试图对未标识数据进行建模,在此基础上再对标识的数据进行预测,如图论推理算法(Graph Inference)或者拉普拉斯支持向量机(Laplacian SVM)等。
4.强化学习
强化学习(Reinforcement Learning)示例模型如图1-8所示。

image.png

在这种学习模式下,输入数据作为对模型的反馈,不像监督模型那样,输入数据仅仅是作为一个检查模型对错的方式,在强化学习下,输入数据直接反馈到模型,模型必须对此立刻做出调整。常见的应用场景包括动态系统以及机器人控制等。常见算法包括Q-Learning以及时间差学习(Temporal Difference Learning)。
在企业数据应用场景下最常用的是监督学习模型和无监督学习模型;在图像识别等领域,由于存在大量的非标识的数据和少量的可标识数据,故半监督学习是当前一个热门话题;而强化学习更多应用在机器人控制及其他需要进行系统控制的领域。

1.3.2 按照算法相似性划分

根据算法的功能和形式的相似性,我们可以把算法分类,比如分为基于树的算法、基于神经网络的算法等。当然,机器学习的范围非常庞大,有些算法很难明确归类到某一类。而对于有些分类来说,同一分类的算法可以针对不同类型的问题。这里,我们尽可能把常用的算法按照最容易理解的方式进行分类。
1.回归算法
回归算法示例模型如图1-9所示。

image.png

回归算法是研究自变量和因变量之间关系的一种预测模型技术。该算法的应用场景包括预测、构建时间序列模型及寻找变量之间关系等,例如可以通过回归算法去研究超速与交通事故发生次数的关系。回归算法是统计机器学习的利器,常见的回归算法包括:最小二乘法(Ordinary Least Square)、逻辑回归(Logistic Regression)、逐步式回归(Stepwise Regression)、多元自适应回归样条(Multivariate Adaptive Regression Splines)以及本地散点平滑估计(Locally Estimated Scatterplot Smoothing)。
2.基于实例的算法
基于实例的算法示例模型如图1-10所示。

image.png

基于实例的算法通常用来对决策问题建立模型,这样的模型常常先选取一批样本数据,然后根据某些相似性把新数据与样本数据进行比较。通过这种方式来寻找最佳匹配。因此,基于实例的算法常常也称为“赢家通吃”学习或者“基于记忆的学习”。常见的算法包括 KNN(K-Nearest Neighbor)、学习矢量量化(Learning Vector Quantization,LVQ),以及自组织映射(Self-Organizing Map,SOM)算法。
3.正则化方法
正则化方法的示例模型如图1-11所示。

image.png

正则化方法是其他算法(通常是回归算法)的延伸,根据算法的复杂度对算法进行调整。正则化方法通常对简单模型予以奖励而对复杂算法予以惩罚。常见的算法包括:岭回归(Ridge Regression)、套索方法(Least Absolute Shrinkage and Selection Operator,LASSO),以及弹性网络(Elastic Net)。
4.决策树学习
决策树学习示例模型如图1-12所示(这里为了方便对照,重复图1-3)。

image.png

决策树算法根据数据的属性采用树状结构建立决策模型,决策树模型常常用来解决分类和回归问题。常见的算法包括:分类及回归树(Classification And Regression Tree,CART)、ID3(Iterative Dichotomiser 3)、C4.5、卡方自动交互检测(Chi-squared Automatic Interaction Detection,CHAID)、单层决策树(Decision Stump)、随机森林(Random Forest)、多元自适应回归样条(MARS)以及梯度推进机(Gradient Boosting Machine,GBM)。
5.贝叶斯方法
贝叶斯方法示例模型如图1-13所示。

image.png

基于贝叶斯定理的一类算法统称为贝叶斯方法,该类算法是为了解决不定性和不完整性问题提出的,对于解决复杂设备不确定性和关联性引起的故障有很大的优势,在多个领域中获得广泛应用,主要用来解决分类和回归问题。常见算法包括:朴素贝叶斯算法、平均单依赖估计(Averaged One-Dependence Estimators,AODE),以及贝叶斯信念网络(Bayesian Belief Network,BBN)。
6.基于核的算法
支持向量机示例模型如图1-14所示。

image.png

基于核的算法中最著名的莫过于支持向量机(SVM)。基于核的算法是将输入数据映射到一个高阶的向量空间,在高阶向量空间里,有些分类或者回归问题能够更容易地解决。常见的基于核的算法包括:支持向量机(Support Vector Machine,SVM)、径向基函数(Radial Basis Function,RBF),以及线性判别分析(Linear Discriminate Analysis,LDA)等。
7.聚类算法
聚类算法示例模型如图1-15所示。
聚类算法通常按照中心点或者分层的方式对输入数据进行归并,所以聚类算法都试图找到数据的内在结构,以便按照最大的共同点将数据进行归类。常见的聚类算法包括 k-means算法以及期望最大化算法(Expectation Maximization,EM)。
8.关联规则学习
关联规则学习示例模型如图1-16所示。
关联规则学习通过寻找最能够解释数据变量之间关系的规则,来找出大量多元数据集中有用的相关性规则。常见算法有Apriori算法和Eclat算法等。
9.人工神经网络
人工神经网络示例模型如图1-17所示。

image.png

人工神经网络算法模拟生物神经网络,是一类模式匹配算法,通常用于解决分类和回归问题。人工神经网络是机器学习的一个庞大的分支,有几百种不同的算法(深度学习就是其中的一类算法,我们稍后会单独讨论)。重要的人工神经网络算法包括:感知器神经网络(Perceptron Neural Network)、反向传递(Back Propagation)、Hopfield网络、自组织映射(Self-Organizing Map,SOM),以及学习矢量量化(Learning Vector Quantization,LVQ)。

image.png

10.降维算法
降维算法示例模型如图1-18所示。

image.png

与聚类算法相同,降维算法试图分析数据的内在结构,不过降维算法是以无监督学习的方式试图利用较少的信息来归纳或者解释数据。这类算法可以用于高维数据的可视化或者简化数据以便监督学习使用。常见的算法包括:主成分分析(Principle Component Analysis,PCA)、偏最小二乘回归(Partial Least Square Regression,PLS)、Sammon映射、多维尺度(Multi-Dimensional Scaling,MDS)、投影追踪(Projection Pursuit)等。
11.深度学习
深度学习示例模型如图1-19所示。

image.png

深度学习算法是对人工神经网络的发展。在近期赢得了很多关注,特别是百度也开始布局深度学习以后,更是在国内引起了很多关注。在计算能力变得日益廉价的今天,深度学习试图建立大得多也复杂得多的神经网络。很多深度学习的算法是半监督学习算法,用来处理存在少量未标识数据的大数据集。常见的深度学习算法包括:受限波耳兹曼机(Restricted Boltzmann Machine,RBN)、深度置信网络(Deep Belief Networks,DBN)、卷积网络(Convolutional Network)、堆栈式自动编码器(Stacked Auto-encoders)。
12.集成算法
集成算法示例模型如图1-20所示。

image.png

集成算法用一些相对较弱的学习模型独立地就同样的样本进行训练,然后把结果整合起来进行整体预测。集成算法的主要难点在于究竟集成哪些独立的较弱的学习模型以及如何把学习结果整合起来。这是一类非常强大的算法,同时也非常流行。
常见的算法包括:Boosting、Bagging(Bootstrapped Aggregation)、AdaBoost、堆叠泛化(Stacked Generalization,Blending)、梯度推进机(Gradient Boosting Machine,GBM)和随机森林(Random Forest)。

1.4 本章小结

机器学习领域的研究工作主要围绕以下三个方面进行:(1)面向任务的研究,研究和分析改进一组预定任务的执行性能的学习系统;(2)认知模型,研究人类学习过程并进行计算机模拟;(3)理论分析,从理论上探索各种可能的学习方法和独立于应用领域的算法。
机器学习是继专家系统之后人工智能应用的又一重要研究领域,也是人工智能和神经计算的核心研究课题之一。机器学习的宗旨就是让机器学会“人认知事物的方法”,希望机器拥有人学习的能力,机器可以从无到有地学习事物的表象与本质。因此,对机器学习的讨论和机器学习研究的进展,必将促进人工智能和整个科学技术的进一步发展。

1.5 本章习题

1. 选择题
(1)以下哪些方法不可以直接对文本分类?(  )
A. k-means
B.决策树
C.支持向量机
D. KNN

(2)下列哪一类算法不是从算法相似性角度划分的?(  )
A. 回归算法
B. 半监督学习
C. 决策树学习
D. 聚类算法

2. 填空题
(1)机器学习中,按学习方式可将算法分为            

(2) 机器学习是一门    学科,涉及    、统计学、逼近论、凸分析、     等多门学科。

3. 判断题
当训练数据较少时更容易发生过拟合。(  )

相关文章
|
24天前
|
机器学习/深度学习 人工智能 算法
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
手写数字识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Flask框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
67 0
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
|
26天前
|
机器学习/深度学习 数据采集 人工智能
探索机器学习:从理论到Python代码实践
【10月更文挑战第36天】本文将深入浅出地介绍机器学习的基本概念、主要算法及其在Python中的实现。我们将通过实际案例,展示如何使用scikit-learn库进行数据预处理、模型选择和参数调优。无论你是初学者还是有一定基础的开发者,都能从中获得启发和实践指导。
41 2
|
28天前
|
机器学习/深度学习 数据采集 搜索推荐
利用Python和机器学习构建电影推荐系统
利用Python和机器学习构建电影推荐系统
51 1
|
28天前
|
机器学习/深度学习 算法 PyTorch
用Python实现简单机器学习模型:以鸢尾花数据集为例
用Python实现简单机器学习模型:以鸢尾花数据集为例
73 1
|
1月前
|
机器学习/深度学习 数据采集 算法
Python机器学习:Scikit-learn库的高效使用技巧
【10月更文挑战第28天】Scikit-learn 是 Python 中最受欢迎的机器学习库之一,以其简洁的 API、丰富的算法和良好的文档支持而受到开发者喜爱。本文介绍了 Scikit-learn 的高效使用技巧,包括数据预处理(如使用 Pipeline 和 ColumnTransformer)、模型选择与评估(如交叉验证和 GridSearchCV)以及模型持久化(如使用 joblib)。通过这些技巧,你可以在机器学习项目中事半功倍。
40 3
|
1月前
|
机器学习/深度学习 人工智能 算法
机器学习基础:使用Python和Scikit-learn入门
机器学习基础:使用Python和Scikit-learn入门
33 1
|
2月前
|
机器学习/深度学习 算法 Java
机器学习、基础算法、python常见面试题必知必答系列大全:(面试问题持续更新)
机器学习、基础算法、python常见面试题必知必答系列大全:(面试问题持续更新)
|
Java Python
Python基础 | 深浅拷贝问题、递归函数练习
在实际工作中,经常涉及到数据的传递,在数据传递使用过程中,可能会发生数据被修改的问题。为了防止数据被修改,就需要在传递一个副本,即使副本被修改,也不会影响原数据的使用。为了生成这个副本,就产生了拷贝。下面先了解一下几个概念:对象、可变类型、引用
260 0
Python基础 | 深浅拷贝问题、递归函数练习
|
Python
python——基础练习(五)
python——基础练习(五)
136 0
python——基础练习(五)
|
Python
python——基础练习(四)
python——基础练习(四)
141 0
python——基础练习(四)