图灵社区会员chugeln(499702878@qq.com)专享尊重版权
图灵社区会员 zhugeln(499702878@qq.com) 专享 尊重版权
书籍下载gg群6089740钉钉群21734177 IT书籍http:/t.cn/RDIAj5D 第1章 引言 机器学习(machine learning)是从数据中提取知识。它是统计学、人工智能和计算机 科学交叉的研究领域,也被称为预测分析(predictive analytics)或统计学习(statistical learning)。近年来,机器学习方法已经应用到日常生活的方方面面。从自动推荐看什么电 影、点什么食物、买什么商品,到个性化的在线电台和从照片中识别好友,许多现代化网 站和设备的核心都是机器学习算法。当你访问像Facebook、Amazon或Netflix这样的复杂 网站时,很可能网站的每一部分都包含多种机器学习模型。 除了商业应用之外,机器学习也对当前数据驱动的研究方法产生了很大影响。本书中介绍 的工具均已应用在各种科学问题上,比如研究恒星、寻找遥远的行星、发现新粒子、分析 DNA序列,以及提供个性化的癌症治疗方案。 不过,如果想受益于机器学习算法,你的应用无需像上面那些例子那样给世界带来重大改 变,数据量也用不着那么大。本章将解释机器学习如此流行的原因,并探讨机器学习可以 解决哪些类型的问题。然后将向你展示如何构建第一个机器学习模型,同时介绍一些重要 的概念。 1.1为何选择机器学习 在“智能”应用的早期,许多系统使用人为制订的“if”和“else”决策规则来处理数据, 或根据用户输入的内容进行调整。想象有一个垃圾邮件过滤器,其任务是的情将收到的某 些邮件移动到垃圾邮件文件夹。你可以创建一个关键词黑名单,所有包含这些关键词的邮 件都会被标记为垃圾邮件。这是用专家设计的规则体系来设计“智能”应用的一个示例。 人为制订的决策规则对某些应用来说是可行的,特别是人们对其模型处理过程非常熟悉的 应用。但是,人为制订决策规则主要有两个缺点。 电子书寻找看手相钉钉或微信pythontesting
第 1 章 引言 机器学习(machine learning)是从数据中提取知识。它是统计学、人工智能和计算机 科学交叉的研究领域,也被称为预测分析(predictive analytics)或统计学习(statistical learning)。近年来,机器学习方法已经应用到日常生活的方方面面。从自动推荐看什么电 影、点什么食物、买什么商品,到个性化的在线电台和从照片中识别好友,许多现代化网 站和设备的核心都是机器学习算法。当你访问像 Facebook、Amazon 或 Netflix 这样的复杂 网站时,很可能网站的每一部分都包含多种机器学习模型。 除了商业应用之外,机器学习也对当前数据驱动的研究方法产生了很大影响。本书中介绍 的工具均已应用在各种科学问题上,比如研究恒星、寻找遥远的行星、发现新粒子、分析 DNA 序列,以及提供个性化的癌症治疗方案。 不过,如果想受益于机器学习算法,你的应用无需像上面那些例子那样给世界带来重大改 变,数据量也用不着那么大。本章将解释机器学习如此流行的原因,并探讨机器学习可以 解决哪些类型的问题。然后将向你展示如何构建第一个机器学习模型,同时介绍一些重要 的概念。 1.1 为何选择机器学习 在“智能”应用的早期,许多系统使用人为制订的“if”和“else”决策规则来处理数据, 或根据用户输入的内容进行调整。想象有一个垃圾邮件过滤器,其任务是酌情将收到的某 些邮件移动到垃圾邮件文件夹。你可以创建一个关键词黑名单,所有包含这些关键词的邮 件都会被标记为垃圾邮件。这是用专家设计的规则体系来设计“智能”应用的一个示例。 人为制订的决策规则对某些应用来说是可行的,特别是人们对其模型处理过程非常熟悉的 应用。但是,人为制订决策规则主要有两个缺点。 1 书籍下载qq群6089740 钉钉群21734177 IT书籍 http://t.cn/RDIAj5D 电子书寻找看手相 钉钉或微信pythontesting
·做决策所需要的逻辑只适用于单一领域和单项任务。任务哪怕稍有变化,都可能需要重 写整个系统。 想要制订规则,需要对人类专家的决策过程有很深刻的理解。 这种人为制订规则的方法并不适用的一个例子就是图像中的人脸检测。如今,每台智能手 机都能够检测到图像中的人脸。但直到2001年,人脸检测问题才得到解决。其主要问题 在于,计算机“感知”像素(像素组成了计算机中的图像)的方式与人类感知面部的方式 有非常大的不同。正是由于这种表征差异,人类想要制订出一套好的规则来描述数字图像 中的人脸构成,基本上是不可能的。 但有了机器学习算法,仅向程序输入海量人脸图像,就足以让算法确定识别人脸需要哪些 特征。 1.1.1机器学习能够解决的问题 最成功的机器学习算法是能够将决策过程自动化的那些算法,这些决策过程是从已知示例 中泛化得出的。在这种叫作监督学习(supervised learning)的方法中,用户将成对的输入 和预期输出提供给算法,算法会找到一种方法,根据给定输入给出预期输出。尤其是在没 有人类帮助的情况下,给定前所未见的输入,算法也能够给出相应的输出。回到前面垃圾 邮件分类的例子,利用机器学习算法,用户为算法提供大量电子邮件(作为输入),以及 这些邮件是否为垃圾邮件的信息(作为预期输出)。给定一封新邮件,算法就能够预测它 是否为垃圾邮件。 从输入/输出对中进行学习的机器学习算法叫作监督学习算法(supervised leaming algorithm), 因为每个用于算法学习的样例都对应一个预期输出,好像有一个“老师”在监督着算法。虽然 创建一个包含输入和输出的数据集往往费时又费力,但监督学习算法很好理解,其性能也易于 侧量。如果你的应用可以表示成一个监督学习问题,并且你能够创建包含预期输出的数据集, 那么机器学习很可能可以解决你的问题。 监督机器学习任务的示例如下。 识别信封上手写的邮政编码 这里的输入是扫描的手写数字,预期输出是邮政编码中的实际数字。想要创建用于构建 机器学习模型的数据集,你需要收集许多信封。然后你可以自己阅读邮政编码,将数字 保存为预期输出。 基于医学影像判断肿瘤是否为良性 这里的输入是影像,输出是肿瘤是否为良性。想要创建用于构建模型的数据集,你需要 一个医学影像数据库。你还需要咨询专家的意见,因此医生需要查看所有影像,然后判 断哪些肿瘤是良性的,哪些不是良性的。除了影像内容之外,甚至可能还需要做额外的 诊断来判断影像中的肿瘤是否为癌变。 检测信用卡交易中的诈骗行为 这里的输入是信用卡交易记录,输出是该交易记录是否可能为诈骗。假设你是信用卡的发 行单位,收集数据集意味着需要保存所有的交易,并记录用户是否上报过任何诈骗交易。 2|第1章
2 | 第 1 章 • 做决策所需要的逻辑只适用于单一领域和单项任务。任务哪怕稍有变化,都可能需要重 写整个系统。 • 想要制订规则,需要对人类专家的决策过程有很深刻的理解。 这种人为制订规则的方法并不适用的一个例子就是图像中的人脸检测。如今,每台智能手 机都能够检测到图像中的人脸。但直到 2001 年,人脸检测问题才得到解决。其主要问题 在于,计算机“感知”像素(像素组成了计算机中的图像)的方式与人类感知面部的方式 有非常大的不同。正是由于这种表征差异,人类想要制订出一套好的规则来描述数字图像 中的人脸构成,基本上是不可能的。 但有了机器学习算法,仅向程序输入海量人脸图像,就足以让算法确定识别人脸需要哪些 特征。 1.1.1 机器学习能够解决的问题 最成功的机器学习算法是能够将决策过程自动化的那些算法,这些决策过程是从已知示例 中泛化得出的。在这种叫作监督学习(supervised learning)的方法中,用户将成对的输入 和预期输出提供给算法,算法会找到一种方法,根据给定输入给出预期输出。尤其是在没 有人类帮助的情况下,给定前所未见的输入,算法也能够给出相应的输出。回到前面垃圾 邮件分类的例子,利用机器学习算法,用户为算法提供大量电子邮件(作为输入),以及 这些邮件是否为垃圾邮件的信息(作为预期输出)。给定一封新邮件,算法就能够预测它 是否为垃圾邮件。 从输入 / 输出对中进行学习的机器学习算法叫作监督学习算法(supervised learning algorithm), 因为每个用于算法学习的样例都对应一个预期输出,好像有一个“老师”在监督着算法。虽然 创建一个包含输入和输出的数据集往往费时又费力,但监督学习算法很好理解,其性能也易于 测量。如果你的应用可以表示成一个监督学习问题,并且你能够创建包含预期输出的数据集, 那么机器学习很可能可以解决你的问题。 监督机器学习任务的示例如下。 识别信封上手写的邮政编码 这里的输入是扫描的手写数字,预期输出是邮政编码中的实际数字。想要创建用于构建 机器学习模型的数据集,你需要收集许多信封。然后你可以自己阅读邮政编码,将数字 保存为预期输出。 基于医学影像判断肿瘤是否为良性 这里的输入是影像,输出是肿瘤是否为良性。想要创建用于构建模型的数据集,你需要 一个医学影像数据库。你还需要咨询专家的意见,因此医生需要查看所有影像,然后判 断哪些肿瘤是良性的,哪些不是良性的。除了影像内容之外,甚至可能还需要做额外的 诊断来判断影像中的肿瘤是否为癌变。 检测信用卡交易中的诈骗行为 这里的输入是信用卡交易记录,输出是该交易记录是否可能为诈骗。假设你是信用卡的发 行单位,收集数据集意味着需要保存所有的交易,并记录用户是否上报过任何诈骗交易
书籍下载qg群6089740钉钉群21734177 IT书籍http:/L.cn/RDIAj5D 在这些例子中需要注意一个有趣的现象,就是虽然输人和输出看起来相当简单,但三个例 子中的数据收集过程却大不相同。阅读信封虽然很辛苦,却非常简单,也不用花多少钱。 与之相反,获取医学影像和诊断不仅需要昂贵的设备,还需要稀有又昂贵的专家知识,更 不要说伦理问题和隐私问题了。在检测信用卡诈骗的例子中,收集数据要容易得多。你的 顾客会上报诈骗行为,从而为你提供预期输出。要获取所有欺诈行为和非欺诈行为的输入/ 输出对,你只需等待即可。 本书会讲到的另一类算法是无监督学习算法(unsupervised learning algorithm)。在无监督 学习中,只有输入数据是已知的,没有为算法提供输出数据。虽然这种算法有许多成功的 应用,但理解和评估这些算法往往更加困难。 无监督学习的示例如下。 确定一系列博客文章的主题 如果你有许多文本数据,可能想对其进行汇总,并找到其中共同的主题。事先你可能并 不知道都有哪些主题,或者可能有多少个主题。所以输出是未知的。 将客户分成具有相似偏好的群组 给定一组客户记录,你可能想要找出哪些客户比较相似,并判断能否根据相似偏好对这 些客户进行分组。对于一家购物网站来说,客户分组可能是“父母”“书虫”或“游戏 玩家”。由于你事先并不知道可能有哪些分组,甚至不知道有多少组,所以并不知道输 出是什么。 检测网站的异常访问模式 想要识别网站的滥用或bug,找到异常的访问模式往往是很有用的。每种异常访问模式 都互不相同,而且你可能没有任何记录在案的异常行为示例。在这个例子中你只是观察 流量,并不知道什么是正常访问行为和异常访问行为,所以这是一个无监督学习问题。 无论是监督学习任务还是无监督学习任务,将输入数据表征为计算机可以理解的形式都是 十分重要的。通常来说,将数据想象成表格是很有用的。你想要处理的每一个数据点(每 一封电子邮件、每一名客户、每一次交易)对应表格中的一行,描述该数据点的每一项属 性(比如客户年龄、交易金额或交易地点)对应表格中的一列。你可能会从年龄、性别 账号创建时间、在你的购物网站上的购买频率等方面来描述用户。你可能会用每一个像素 的灰度值来描述肿瘤图像,也可能利用肿瘤的大小、形状和颜色进行描述。 在机器学习中,这里的每个实体或每一行被称为一个样本(sample)或数据点,而每一列 (用来描述这些实体的属性)则被称为特征(feature)。 本书后面会更详细地介绍如何构建良好的数据表征,这被称为特征提取(feature extraction)或特征工程(feature engineering)。但你应该记住,如果没有数据信息的话,所 有机器学习算法都无法做出预测。举个例子,如果你只有病人的姓氏这一个特征,那么任 何算法都无法预测其性别。这一信息并未包含在数据中。如果你添加另一个特征,里面包 含病人的名字,那么你预测正确的可能性就会变大,因为通过一个人的名字往往可以判断 其性别。 引言13 电子书寻找看手相钉钉或微信pythontesting
引言 | 3 在这些例子中需要注意一个有趣的现象,就是虽然输入和输出看起来相当简单,但三个例 子中的数据收集过程却大不相同。阅读信封虽然很辛苦,却非常简单,也不用花多少钱。 与之相反,获取医学影像和诊断不仅需要昂贵的设备,还需要稀有又昂贵的专家知识,更 不要说伦理问题和隐私问题了。在检测信用卡诈骗的例子中,收集数据要容易得多。你的 顾客会上报诈骗行为,从而为你提供预期输出。要获取所有欺诈行为和非欺诈行为的输入 / 输出对,你只需等待即可。 本书会讲到的另一类算法是无监督学习算法(unsupervised learning algorithm)。在无监督 学习中,只有输入数据是已知的,没有为算法提供输出数据。虽然这种算法有许多成功的 应用,但理解和评估这些算法往往更加困难。 无监督学习的示例如下。 确定一系列博客文章的主题 如果你有许多文本数据,可能想对其进行汇总,并找到其中共同的主题。事先你可能并 不知道都有哪些主题,或者可能有多少个主题。所以输出是未知的。 将客户分成具有相似偏好的群组 给定一组客户记录,你可能想要找出哪些客户比较相似,并判断能否根据相似偏好对这 些客户进行分组。对于一家购物网站来说,客户分组可能是“父母”“书虫”或“游戏 玩家”。由于你事先并不知道可能有哪些分组,甚至不知道有多少组,所以并不知道输 出是什么。 检测网站的异常访问模式 想要识别网站的滥用或 bug,找到异常的访问模式往往是很有用的。每种异常访问模式 都互不相同,而且你可能没有任何记录在案的异常行为示例。在这个例子中你只是观察 流量,并不知道什么是正常访问行为和异常访问行为,所以这是一个无监督学习问题。 无论是监督学习任务还是无监督学习任务,将输入数据表征为计算机可以理解的形式都是 十分重要的。通常来说,将数据想象成表格是很有用的。你想要处理的每一个数据点(每 一封电子邮件、每一名客户、每一次交易)对应表格中的一行,描述该数据点的每一项属 性(比如客户年龄、交易金额或交易地点)对应表格中的一列。你可能会从年龄、性别、 账号创建时间、在你的购物网站上的购买频率等方面来描述用户。你可能会用每一个像素 的灰度值来描述肿瘤图像,也可能利用肿瘤的大小、形状和颜色进行描述。 在机器学习中,这里的每个实体或每一行被称为一个样本(sample)或数据点,而每一列 (用来描述这些实体的属性)则被称为特征(feature)。 本书后面会更详细地介绍如何构建良好的数据表征,这被称为特征提取(feature extraction)或特征工程(feature engineering)。但你应该记住,如果没有数据信息的话,所 有机器学习算法都无法做出预测。举个例子,如果你只有病人的姓氏这一个特征,那么任 何算法都无法预测其性别。这一信息并未包含在数据中。如果你添加另一个特征,里面包 含病人的名字,那么你预测正确的可能性就会变大,因为通过一个人的名字往往可以判断 其性别。 书籍下载qq群6089740 钉钉群21734177 IT书籍 http://t.cn/RDIAj5D 电子书寻找看手相 钉钉或微信pythontesting
1.1.2熟悉任务和数据 在机器学习过程中,最重要的部分很可能是理解你正在处理的数据,以及这些数据与你想 要解决的任务之间的关系。随机选择一个算法并将你的数据输入进去,这种做法是不会有 什么用的。在开始构建模型之前,你需要理解数据集的内容。每一种算法的输入数据类型 和最适合解决的问题都是不一样的。在构建机器学习解决方案的过程中,你应该给出下列 问题的答案,或者至少要将这些问题记在脑中。 我想要回答的问题是什么?已经收集到的数据能够回答这个问题吗? 。 要将我的问题表示成机器学习问题,用哪种方法最好? 我收集的数据是否足够表达我想要解决的问题? 我提取了数据的哪些特征?这些特征能否实现正确的预测? ·如何衡量应用是否成功? 。 机器学习解决方案与我的研究或商业产品中的其他部分是如何相互影响的? 从更大的层面来看,机器学习算法和方法只是解决特定问题的过程中的一部分,一定要始 终牢记整个项目的大局。许多人浪费大量时间构建复杂的机器学习解决方案,最终却发现 没有解决正确的问题。 当深入研究机器学习的技术细节时(本书会讲到这些细节),很容易忽视最终目标。我们 虽然不会详细讨论上面列出的问题,但仍然鼓励你记住自己在开始构建机器学习模型时做 出的假设,无论是明确的还是隐含的假设。 1.2 为何选择Python Pythor已经成为许多数据科学应用的通用语言。它既有通用编程语言的强大功能,也有特 定领域脚本语言(比如MATLAB或R)的易用性。Python有用于数据加载、可视化、统 计、自然语言处理、图像处理等各种功能的库。这个大型工具箱为数据科学家提供了大量 的通用功能和专用功能。使用Python的主要优点之一,就是利用终端或其他类似Jupyte: Notebook的工具能够直接与代码进行交互;我们很快会讲到Jupyter Notebook。机器学习 和数据分析本质上都是迭代过程,由数据驱动分析。这些过程必须要有快速迭代和易于交 互的工具。 作为通用编程语言,Python还可以用来创建复杂的图形用户界面(graphical user interface, GUI)和Web服务,也可以集成到现有系统中。 1.3 scikit-learn scikit-learn是一个开源项目,可以免费使用和分发,任何人都可以轻松获取其源代码来 查看其背后的原理。scikit-learn项目正在不断地开发和改进中,它的用户社区非常话 跃。它包含许多目前最先进的机器学习算法,每个算法都有详细的文档(http:/scikit--leam. org/stable/documentation)。scikit-learn是一个非常流行的工具,也是最有名的Python机 器学习库。它广泛应用于工业界和学术界,网上有大量的教程和代码片段。scikit-learn 41第1章
4 | 第 1 章 1.1.2 熟悉任务和数据 在机器学习过程中,最重要的部分很可能是理解你正在处理的数据,以及这些数据与你想 要解决的任务之间的关系。随机选择一个算法并将你的数据输入进去,这种做法是不会有 什么用的。在开始构建模型之前,你需要理解数据集的内容。每一种算法的输入数据类型 和最适合解决的问题都是不一样的。在构建机器学习解决方案的过程中,你应该给出下列 问题的答案,或者至少要将这些问题记在脑中。 • 我想要回答的问题是什么?已经收集到的数据能够回答这个问题吗? • 要将我的问题表示成机器学习问题,用哪种方法最好? • 我收集的数据是否足够表达我想要解决的问题? • 我提取了数据的哪些特征?这些特征能否实现正确的预测? • 如何衡量应用是否成功? • 机器学习解决方案与我的研究或商业产品中的其他部分是如何相互影响的? 从更大的层面来看,机器学习算法和方法只是解决特定问题的过程中的一部分,一定要始 终牢记整个项目的大局。许多人浪费大量时间构建复杂的机器学习解决方案,最终却发现 没有解决正确的问题。 当深入研究机器学习的技术细节时(本书会讲到这些细节),很容易忽视最终目标。我们 虽然不会详细讨论上面列出的问题,但仍然鼓励你记住自己在开始构建机器学习模型时做 出的假设,无论是明确的还是隐含的假设。 1.2 为何选择Python Python 已经成为许多数据科学应用的通用语言。它既有通用编程语言的强大功能,也有特 定领域脚本语言(比如 MATLAB 或 R)的易用性。Python 有用于数据加载、可视化、统 计、自然语言处理、图像处理等各种功能的库。这个大型工具箱为数据科学家提供了大量 的通用功能和专用功能。使用 Python 的主要优点之一,就是利用终端或其他类似 Jupyter Notebook 的工具能够直接与代码进行交互;我们很快会讲到 Jupyter Notebook。机器学习 和数据分析本质上都是迭代过程,由数据驱动分析。这些过程必须要有快速迭代和易于交 互的工具。 作为通用编程语言,Python 还可以用来创建复杂的图形用户界面(graphical user interface, GUI)和 Web 服务,也可以集成到现有系统中。 1.3 scikit-learn scikit-learn 是一个开源项目,可以免费使用和分发,任何人都可以轻松获取其源代码来 查看其背后的原理。scikit-learn 项目正在不断地开发和改进中,它的用户社区非常活 跃。它包含许多目前最先进的机器学习算法,每个算法都有详细的文档(http://scikit-learn. org/stable/documentation)。scikit-learn 是一个非常流行的工具,也是最有名的 Python 机 器学习库。它广泛应用于工业界和学术界,网上有大量的教程和代码片段。scikit-learn