在作者的心目中,机器学习这一解释推理数据的应用和算法科学,是计算机科学中最令人振奋的领域!我们生活在数据多到泛滥的时代,使用机器学习领域的自学习算法 ,可以将数据转换为知识。借助近些年来开发的众多开源库,我们迎来了进入机器学习领域最好的时代,可以学习利用强大的算法来一窥数据的模式并对未来事件进行预测。
本章中我们将学习机器学习的主要概念及其不同类型。伴随着对相关术语的基础介绍,我们为成功使用机器学习解决实际问题打好基础。
本章中主要讲解如下内容:
- 机器学习的主要概念
- 机器学习的三种类型以及基本术语
- 成功设计机器学习系统的组成部分
- 安装、配置Python进行数据分析和机器学习
构建智能机器将数据转化为知识
现代科技发展至今,有一种资源浩如烟海:大量的结构化和非结构化数据。20世纪下半叶,机器学习演进为人工智能(AI) 的子学科,包含自学习算法从数据中提取知识来进行预测。
机器学习没有要求人工分析大量数据提取规则、构建模块,而是提供了众多高效的方法从数据中捕获知识进而提升预测模型的性能并通过数据驱动决策。
机器学习不仅在计算机科学研究中越来越重要,在日常生活中也发挥着越来越重要的作用。因为有了机器学习,我们享受着健壮的垃圾邮件过滤器、便捷的文本和语音识别软件、可行的网页搜索引擎、优秀电影推荐、移动支付、送餐时间预测等等。还有望在不久的将来迎来安全高效的自动驾驶技术。同时在医疗领域也取得了长足的进步,比如研究人员演示了通过深度学习模型可监测出皮肤癌,精度可与人工相媲美(www.nature.com/articles/na…)。另一项由DeepMind研究人员实现的里程碑是使用深度学习来预测3D蛋白结构,甩出物理方式几条街 (deepmind.com/blog/articl…)。精确的蛋白质结构预测在生物制药研究中发挥中举足轻重的作用,在医疗保健领域还有很多其它的机器学习应用。比如,研究人员设计了一套系统提前4天预测新冠病人所需的氧气来辅助医院添置所需的资源 (ai.facebook.com/blog/new-ai…)。如今另一个重要的话题是气候变化,它是我们所面临的巨大挑战之一。现在投入了很多资源来开发智能系统 应对这一问题 (www.forbes.com/sites/robto…)。其中一种应对气候变化的方法是新兴的精准农业。研究人员设计了基于计算机视觉的机器学习系统来将肥料的使用和浪费降至最低。
机器学习的三种类型
本节中我们来学习机器学习的三种类型:监督学习、无监督学习和强化学习。我们会学习三种类型的不同点,通过概念示例,我们会进一步了解它们所适用的实际领域:
图1.1: 机器学习的三种类型
通过监督学习预测未来
监督学习的主要目的是通过打好标签的训练数据来对未来进行预测。这里的“监督”是指训练样例(输入数据)中期望的输出信号(标签)是已知的。然后监督学习生成输入数据和标签关联的模型。因此可以把监督学习看成是“标签学习”。
图1.2中总结了典型的监督学习工作流,其中将带标签的训练数据传递给机器学习算法来拟合出预测模型,以便对新的无标签数据进行预测:
图1.2: 监督学习流程
设想下垃圾邮件过滤的场景,我们可以使用监督机器学习算法对一组打过标签的邮件来训练出一个能正确标记出垃圾邮件和正常邮件的模型,进而预测新收到的邮件属于哪一类。带有离散分类标签的监督学习任务,比如我们所举的垃圾邮件过滤的例子,也被称为分类任务。监督学习的另一个分支是回归,其结果信号是一个连续值。
使用分类预测分类标签
分类是监督学习的一个子类,目标是根据过往观察预测出新实例或数据点的分类标签。这些分类标签为离散的无序值,可以理解成数据点的分组成员。前述的垃圾邮件监测就是典型的二元分类任务,机器学习算法学习一组规则来分辨两种可能的分类:垃圾邮件和正常邮件。
图1.3中描述了30个训练样例二元分类任务的概念,15个训练样例标记为A类,另外15个训练样例标记为B类。在这一场景中,数据集是二维的,即每个样例有两个关联值:x1和x2。这时我们可以使用机器学习算法来学习一套规则-使用虚线标记出的决策边界-来分出两类并根据新数据的x1和x2值将其划为其中一类:
图1.3:对新数据集进行分类
但分类标签不一定要是二元的。由监督学习算法预测出的模型可将训练数据集中的任一分类标签分配给未标记的新数据点或实例。
经典的多元分类的例子是手写文字识别。我们可以收集由不同字母组成的多个手写样例训练集。字母((“A,” “B,” “C,”等 )表示需要预测的不同无序分类或类标签。这时用户通过输入设备提供了新的手写文字,预测模型就能预测出正确的字母,达到一定的准确度。但如果数字0到9不在训练集中,机器学习系统就无法识别它们。
预测连续结果的回归
在前面的小节中我们学习了分类任务是对实例分配分类、无序标签。监督学习的第二种类型是对续结果的预测,也称为回归分析。在回归分析中,会给定一些预测(解释)变量和持续响应变量(结果),然后通过这些变量间的关联预测出结果。
在机器学习领域,预测变量通常称为“特征”,响应变量通常称为“目标变量”。在本书中我们会遵照这一惯例。
举个例子,假设想要预测出学生的SAT数学成绩。(SAT常被称为“美国高考”。)如果学生在学习上花费的时间和最终分数之间存在关联,我们就可以将其用作训练数据,训练出一套模型来根据学习的时长预测备考学生未来的成绩。
回归算术平均
“回归”一词来自英国遗传学习Francis Galton于1886年发表的论文《遗传身高的平庸回归》(Regression towards Mediocrity in Hereditary Stature)。Galton发现了人类的身高变化并没有随时间增加的生物现象。
他观察到父母的身高并没有传递给子女,而是子女身高回归到一个平均水平。
图1.4中描述了线性回归的概念。给定特征变量x和目标变量y,我们为数据拟合出了一条最小化距离的直线,常称为(数据点和拟合直线间的)均方距离。
这时我们可以使用通过数据学习的交点和斜线来预测出新数据的目标变量:
图1.4: 线性回归示例
使用强化学习解决交互问题
另一种机器学习是强化学习。强化学习的目标是开发出一套系统(agent)来根据与环境的交互提升提性能。因为当前环境的状态信息通常包含所谓的奖励信号(reward signal),我们可以把强化学习看成是与监督学习相关的领域。但在强化学习中,反馈不再是确定为事实的标签或值 ,而是由奖励函数评价操作有多好的一个度量。通过与环境的交互,agent随后可使用强化学习去学习一系列动作通过探索性试错或刻意规划来最大化奖励。
著名的强化学习的例子是下棋程序。agent根据棋盘(环境)的状态来决定一系列着数,奖励可定义为游戏结束时的赢棋或输棋:
图1.5:强化学习流程
强化学习有很多子类型。但通常的模式是由agent通过一系列与环境的交互学习尝试最大化奖励。每种状态都可以关联为正向或反向奖励,奖励可定义为完成一项整体目标,比如下棋游戏中的赢棋或输棋。例如,下棋时每一着的结果都可看成是环境的不同状态。
为进一步探讨下棋的例子,我们把棋盘上的某一布置看成是导致赢棋可能性所关联的一种状态,比如吃掉对方一颗棋子或将军。在下棋游戏中,奖励(赢棋的正向奖励或输棋的负面奖励)只有游戏结束时才能给出。而且最终的奖励还取决于对手如何下。比如对手可能舍弃了车,最终却记得了比赛。
总之,强化学习关心的是学习选择一系列动作来最大化总奖励,这种奖励可通过立即采取行动或是延迟反馈来赢得。
发现无监督学习的隐藏结构
在监督学习中,我们在训练模型前就知道了正确答案(标签或目标变量),而在强化学习中,我们为agent所招待的具体动作定义了一种奖励的度量。但在无监督学习中,我们处理的是无标签数据或是未知结构的数据。通过无监督学习技术,我们可以在没有结果变量或奖励函数的指引下探索出数据的结构,提取有用信息。
通过聚类找出子分组
聚类是一种解释性数据分类或模式发现技术,可在事前不知道分组成员的情况下将一堆信息组织为有用的分组(聚类)。在分析过程中产生的每个聚类都定义着一组对象,它们有某种相似性却又与其它聚类中的对象存在区别,这也是为什么聚类有时也称作无监督分类。聚类对于信息结构化以及从数据中提取有用信息是一项很好的技术。比如,营销人员可根据客户兴趣发现分组,进而开发出不同的营销策略。
图1.6描绘了聚类如何用于将未打标签数据按特征x1和x2的相似性组织为三种不同的组或聚类(A, B及C,顺序随意):
图1.6: 聚类的原理
通过降维压缩数据
无监督学习的另一个子领域是数据降维(dimensionality reduction)。通常我们所操作的是高维度数据-每次观测都包含大量的度量,这对有限的存储空间和机器学习算法的计算性能都构成了极大挑战。无监督学习的数据降维常用于特征预处理,去除掉数据中的噪声,这些噪声可能会降低某些算法的预测性能。降维将数据压缩为更小维度的子空间,同时又保留其相关信息。
有时,降维还可用于可视化数据,比如,可将高维度的特征投射为一维、二维或三维特征空间,来可视化为2D或3D的散点图或直方图。图1.7展示了使用非线性降维将三维瑞士卷压缩为二维特征子空间:
图1.7: 将三维降维为二维的示例
整理翻译自:Machine Learning with PyTorch and Scikit-Learn一书