机器学习之PyTorch和Scikit-Learn第一章 赋予计算机学习数据的能力Part 1

简介: 在作者的心目中,机器学习这一解释推理数据的应用和算法科学,是计算机科学中最令人振奋的领域!我们生活在数据多到泛滥的时代,使用机器学习领域的自学习算法 ,可以将数据转换为知识。借助近些年来开发的众多开源库,我们迎来了进入机器学习领域最好的时代,可以学习利用强大的算法来一窥数据的模式并对未来事件进行预测。

在作者的心目中,机器学习这一解释推理数据的应用和算法科学,是计算机科学中最令人振奋的领域!我们生活在数据多到泛滥的时代,使用机器学习领域的自学习算法 ,可以将数据转换为知识。借助近些年来开发的众多开源库,我们迎来了进入机器学习领域最好的时代,可以学习利用强大的算法来一窥数据的模式并对未来事件进行预测。

本章中我们将学习机器学习的主要概念及其不同类型。伴随着对相关术语的基础介绍,我们为成功使用机器学习解决实际问题打好基础。

本章中主要讲解如下内容:

  • 机器学习的主要概念
  • 机器学习的三种类型以及基本术语
  • 成功设计机器学习系统的组成部分
  • 安装、配置Python进行数据分析和机器学习

构建智能机器将数据转化为知识

现代科技发展至今,有一种资源浩如烟海:大量的结构化和非结构化数据。20世纪下半叶,机器学习演进为人工智能(AI) 的子学科,包含自学习算法从数据中提取知识来进行预测。

机器学习没有要求人工分析大量数据提取规则、构建模块,而是提供了众多高效的方法从数据中捕获知识进而提升预测模型的性能并通过数据驱动决策。

机器学习不仅在计算机科学研究中越来越重要,在日常生活中也发挥着越来越重要的作用。因为有了机器学习,我们享受着健壮的垃圾邮件过滤器、便捷的文本和语音识别软件、可行的网页搜索引擎、优秀电影推荐、移动支付、送餐时间预测等等。还有望在不久的将来迎来安全高效的自动驾驶技术。同时在医疗领域也取得了长足的进步,比如研究人员演示了通过深度学习模型可监测出皮肤癌,精度可与人工相媲美(https://www.nature.com/articles/nature21056)。另一项由DeepMind研究人员实现的里程碑是使用深度学习来预测3D蛋白结构,甩出物理方式几条街 (https://deepmind.com/blog/article/alphafold-a-solution-to-a-50-year-old-grand-challenge-in-biology)。精确的蛋白质结构预测在生物制药研究中发挥中举足轻重的作用,在医疗保健领域还有很多其它的机器学习应用。比如,研究人员设计了一套系统提前4天预测新冠病人所需的氧气来辅助医院添置所需的资源 (https://ai.facebook.com/blog/new-ai-research-to-help-predict-covid-19-resource-needs-from-a-series-of-x-rays/)。如今另一个重要的话题是气候变化,它是我们所面临的巨大挑战之一。现在投入了很多资源来开发智能系统 应对这一问题 (https://www.forbes.com/sites/robtoews/2021/06/20/these-are-the-startups-applying-ai-to-tackle-climate-change)。其中一种应对气候变化的方法是新兴的精准农业。研究人员设计了基于计算机视觉的机器学习系统来将肥料的使用和浪费降至最低。

机器学习的三种类型

本节中我们来学习机器学习的三种类型:监督学习、无监督学习和强化学习。我们会学习三种类型的不同点,通过概念示例,我们会进一步了解它们所适用的实际领域:

图1.1: 机器学习的三种类型

图1.1: 机器学习的三种类型

通过监督学习预测未来

监督学习的主要目的是通过打好标签的训练数据来对未来进行预测。这里的“监督”是指训练样例(输入数据)中期望的输出信号(标签)是已知的。然后监督学习生成输入数据和标签关联的模型。因此可以把监督学习看成是“标签学习”。

图1.2中总结了典型的监督学习工作流,其中将带标签的训练数据传递给机器学习算法来拟合出预测模型,以便对新的无标签数据进行预测:

图1.2: 监督学习流程

图1.2: 监督学习流程

设想下垃圾邮件过滤的场景,我们可以使用监督机器学习算法对一组打过标签的邮件来训练出一个能正确标记出垃圾邮件和正常邮件的模型,进而预测新收到的邮件属于哪一类。带有离散分类标签的监督学习任务,比如我们所举的垃圾邮件过滤的例子,也被称为分类任务。监督学习的另一个分支是回归,其结果信号是一个连续值。

使用分类预测分类标签

分类是监督学习的一个子类,目标是根据过往观察预测出新实例或数据点的分类标签。这些分类标签为离散的无序值,可以理解成数据点的分组成员。前述的垃圾邮件监测就是典型的二元分类任务,机器学习算法学习一组规则来分辨两种可能的分类:垃圾邮件和正常邮件。

图1.3中描述了30个训练样例二元分类任务的概念,15个训练样例标记为A类,另外15个训练样例标记为B类。在这一场景中,数据集是二维的,即每个样例有两个关联值:x1和x2。这时我们可以使用机器学习算法来学习一套规则-使用虚线标记出的决策边界-来分出两类并根据新数据的x1和x2值将其划为其中一类:

图1.3:对新数据集进行分类

图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: 线性回归示例

图1.4: 线性回归示例

使用强化学习解决交互问题

另一种机器学习是强化学习。强化学习的目标是开发出一套系统(agent)来根据与环境的交互提升提性能。因为当前环境的状态信息通常包含所谓的奖励信号(reward signal),我们可以把强化学习看成是与监督学习相关的领域。但在强化学习中,反馈不再是确定为事实的标签或值 ,而是由奖励函数评价操作有多好的一个度量。通过与环境的交互,agent随后可使用强化学习去学习一系列动作通过探索性试错或刻意规划来最大化奖励。

著名的强化学习的例子是下棋程序。agent根据棋盘(环境)的状态来决定一系列着数,奖励可定义为游戏结束时的赢棋或输棋:

图1.5:强化学习流程

图1.5:强化学习流程

强化学习有很多子类型。但通常的模式是由agent通过一系列与环境的交互学习尝试最大化奖励。每种状态都可以关联为正向或反向奖励,奖励可定义为完成一项整体目标,比如下棋游戏中的赢棋或输棋。例如,下棋时每一着的结果都可看成是环境的不同状态。

为进一步探讨下棋的例子,我们把棋盘上的某一布置看成是导致赢棋可能性所关联的一种状态,比如吃掉对方一颗棋子或将军。在下棋游戏中,奖励(赢棋的正向奖励或输棋的负面奖励)只有游戏结束时才能给出。而且最终的奖励还取决于对手如何下。比如对手可能舍弃了车,最终却记得了比赛。

总之,强化学习关心的是学习选择一系列动作来最大化总奖励,这种奖励可通过立即采取行动或是延迟反馈来赢得。

发现无监督学习的隐藏结构

在监督学习中,我们在训练模型前就知道了正确答案(标签或目标变量),而在强化学习中,我们为agent所招待的具体动作定义了一种奖励的度量。但在无监督学习中,我们处理的是无标签数据或是未知结构的数据。通过无监督学习技术,我们可以在没有结果变量或奖励函数的指引下探索出数据的结构,提取有用信息。

通过聚类找出子分组

聚类是一种解释性数据分类或模式发现技术,可在事前不知道分组成员的情况下将一堆信息组织为有用的分组(聚类)。在分析过程中产生的每个聚类都定义着一组对象,它们有某种相似性却又与其它聚类中的对象存在区别,这也是为什么聚类有时也称作无监督分类。聚类对于信息结构化以及从数据中提取有用信息是一项很好的技术。比如,营销人员可根据客户兴趣发现分组,进而开发出不同的营销策略。

图1.6描绘了聚类如何用于将未打标签数据按特征x1和x2的相似性组织为三种不同的组或聚类(A, B及C,顺序随意):

图1.6: 聚类的原理

图1.6: 聚类的原理

通过降维压缩数据

无监督学习的另一个子领域是数据降维(dimensionality reduction)。通常我们所操作的是高维度数据-每次观测都包含大量的度量,这对有限的存储空间和机器学习算法的计算性能都构成了极大挑战。无监督学习的数据降维常用于特征预处理,去除掉数据中的噪声,这些噪声可能会降低某些算法的预测性能。降维将数据压缩为更小维度的子空间,同时又保留其相关信息。

有时,降维还可用于可视化数据,比如,可将高维度的特征投射为一维、二维或三维特征空间,来可视化为2D或3D的散点图或直方图。图1.7展示了使用非线性降维将三维瑞士卷压缩为二维特征子空间:

图1.7: 将三维降维为二维的示例

图1.7: 将三维降维为二维的示例

整理翻译自:Machine Learning with PyTorch and Scikit-Learn一书

相关文章
|
13天前
|
机器学习/深度学习 数据采集 数据挖掘
实战派教学:掌握Scikit-learn,轻松实现数据分析与机器学习模型优化!
【10月更文挑战第4天】Scikit-learn凭借高效、易用及全面性成为数据科学领域的首选工具,简化了数据预处理、模型训练与评估流程,并提供丰富算法库。本文通过实战教学,详细介绍Scikit-learn的基础入门、数据预处理、模型选择与训练、评估及调优等关键步骤,助你快速掌握并优化数据分析与机器学习模型。从环境搭建到参数调优,每一步都配有示例代码,便于理解和实践。
64 2
|
2月前
|
机器学习/深度学习 并行计算 PyTorch
优化技巧与策略:提高 PyTorch 模型训练效率
【8月更文第29天】在深度学习领域中,PyTorch 是一个非常流行的框架,被广泛应用于各种机器学习任务中。然而,随着模型复杂度的增加以及数据集规模的增长,如何有效地训练这些模型成为了一个重要的问题。本文将介绍一系列优化技巧和策略,帮助提高 PyTorch 模型训练的效率。
192 0
|
5天前
|
机器学习/深度学习 人工智能 算法
机器学习基础:使用Python和Scikit-learn入门
【10月更文挑战第12天】本文介绍了如何使用Python和Scikit-learn进行机器学习的基础知识和入门实践。首先概述了机器学习的基本概念,包括监督学习、无监督学习和强化学习。接着详细讲解了Python和Scikit-learn的安装、数据处理、模型训练和评估等步骤,并提供了代码示例。通过本文,读者可以掌握机器学习的基本流程,并为深入学习打下坚实基础。
11 1
|
7天前
|
机器学习/深度学习 人工智能 算法
机器学习基础:使用Python和Scikit-learn入门
本文介绍了如何使用Python和Scikit-learn进行机器学习的基础知识和实践。首先概述了机器学习的基本概念,包括监督学习、无监督学习和强化学习。接着详细讲解了Python和Scikit-learn的安装、数据处理、模型选择与训练、模型评估及交叉验证等关键步骤。通过本文,初学者可以快速上手并掌握机器学习的基本技能。
32 2
|
7天前
|
机器学习/深度学习 数据挖掘 Serverless
手把手教你全面评估机器学习模型性能:从选择正确评价指标到使用Python与Scikit-learn进行实战演练的详细指南
【10月更文挑战第10天】评估机器学习模型性能是开发流程的关键,涉及准确性、可解释性、运行速度等多方面考量。不同任务(如分类、回归)采用不同评价指标,如准确率、F1分数、MSE等。示例代码展示了使用Scikit-learn库评估逻辑回归模型的过程,包括数据准备、模型训练、性能评估及交叉验证。
19 1
|
11天前
|
机器学习/深度学习 人工智能 数据挖掘
机器学习基础:使用Python和Scikit-learn入门
【10月更文挑战第6天】在人工智能领域,机器学习已成为核心技术。本文指导初学者使用Python与Scikit-learn入门机器学习,涵盖基本概念、环境搭建、数据处理、模型训练及评估等环节。Python因简洁性及其生态系统成为首选语言,而Scikit-learn则提供了丰富工具,简化数据挖掘与分析流程。通过实践示例,帮助读者快速掌握基础知识,为进一步深入研究奠定坚实基础。
19 4
|
13天前
|
机器学习/深度学习 算法 数据挖掘
从零到精通:Scikit-learn在手,数据分析与机器学习模型评估不再难!
【10月更文挑战第4天】在数据科学领域,模型评估是连接理论与实践的桥梁,帮助我们理解模型在未知数据上的表现。对于初学者而言,众多评估指标和工具常令人困惑。幸运的是,Scikit-learn 这一强大的 Python 库使模型评估变得简单。本文通过问答形式,带你逐步掌握 Scikit-learn 的评估技巧。Scikit-learn 提供了丰富的工具,如交叉验证、评分函数(准确率、精确率、召回率、F1 分数)、混淆矩阵和 ROC 曲线等。
22 1
|
19天前
|
机器学习/深度学习 数据采集 算法
【Python篇】从零到精通:全面分析Scikit-Learn在机器学习中的绝妙应用
【Python篇】从零到精通:全面分析Scikit-Learn在机器学习中的绝妙应用
30 2
|
1月前
|
机器学习/深度学习 算法 数据挖掘
Python数据分析革命:Scikit-learn库,让机器学习模型训练与评估变得简单高效!
在数据驱动时代,Python 以强大的生态系统成为数据科学的首选语言,而 Scikit-learn 则因简洁的 API 和广泛的支持脱颖而出。本文将指导你使用 Scikit-learn 进行机器学习模型的训练与评估。首先通过 `pip install scikit-learn` 安装库,然后利用内置数据集进行数据准备,选择合适的模型(如逻辑回归),并通过交叉验证评估其性能。最终,使用模型对新数据进行预测,简化整个流程。无论你是新手还是专家,Scikit-learn 都能助你一臂之力。
97 8
|
16天前
|
机器学习/深度学习 算法
【机器学习】迅速了解什么是集成学习
【机器学习】迅速了解什么是集成学习