00:01
第二章监督学习前面说过,监督学习是最常用也是最成功的机器学习类型之一。本章将会详细介绍监督学习,并解释这种常用的监督学习算法。我们在第一章已经见过一个监督学习应用,利用物理测量数据将鸢尾花分成几个品种。记住,每当想要根据给定输入预测某个结果,并且还有输入输出队的事例时,都应该使用监督学习。这些输入输出对构成了训练集,我们利用它来构建机器学习模型。我们的目标是对从未见过的新数据做出准确的预测。监督学习通常需要人力来构建训练级,但之后的任务本来非常费力,甚至无法完成,现在却可以自动完成,通常速度也更快。2.1分类与回归。监督学习问题主要有两种,分别叫做分类classification与回归regression。分类问题的目标是预测类别标签class label,这些标签来自预定义的可选列表。第一章讲过一个例子,即将拥有花分到三个可能品种之一。
01:07
分类问题有时可分为all分类binary classification在两个类别之间进行区分的一种特殊情况和多分类multi class classification在两个以上的类别之间进行区分。你可以将offer类看作是尝试回答一道是否问题。将电子邮件分为垃圾邮件和非垃圾邮件就是二类问题的实例。在这个offer类问题中。要问的是否问题为这封电子邮件是垃圾邮件吗?在二分类问题中。我们通常将其中一个类别称为真类。Positive class另一个类别称为反类。哪个class?这里的正并不代表好的方面或正数,而是代表研究对象。因此,在寻找垃圾邮件时,正可能指的是垃圾邮件这一类别。将两个类别中的哪一个作为正类,往往是主观判断,与距离的领域有关。另一方面,鸢尾花的例子则属于多分类问题。另一个多分类的例子是根据网站上的文本,预测网站所用的语言。
02:08
这里的类别就是预定义的语言列表。回归任务的目标是预测一个连续值。编程术语叫做浮点数floating point number,数学术语做实数real number。根据教育水平、年龄和居住地来预测一个人的年收入,这就是回归的一个例子。在预测收入时,预测值是一个金额amount。可以在给定范围内任意取值回归任务的一个例子是,另一个例子是根据上一年的产量。天气和农场员工数等属性来预测玉米农场的产量。同样,产量也可以取任意数值。区分分类任务和回归任务有一个简单的方法,那就是问一个问题,输出是否具有某种连续性?如果在可能结果之间具有连续性,那么它就是一个回归问题。想想预测年收入的例子,输出具有非常明显的连续性,一年赚4万美元还是40001美元,并没有实质的差别。即使两者金额不同,如果我们的算法在本应预测4万美元时,预测的结果是39999美元或者40001美元,不必过分在意。与此相反,与此相反。
03:11
对于识别网站语言的任务,这是一个分类问题来说,并不存在程度问题。网站使用的要么是这种语言,要么是那种语言,在语言之间不存在连续性,在英语和法语之间不存在其他的语言。请语言学家原谅,我们将语言的表示方式简化为独特而又确定的实体。2.2,泛化过拟核与劝拟核。在监督学习中,我们想要在训练数据上构建模型,然后能够对没有见过的新数据,这些新数据与训练集具有相同的特性做出准确预测。如果一个模型能够对没见过的数据做出准确预测,我们就说它能够从训练集泛化,只能relax到测试机。我们想要构建一个泛化精度尽可能高的模型。通常通常来说,我们构建模型是指在训练集上能够做出准确预测,如果训练集和测试集足够相似。
04:03
我们预计模型在测试集上也能够做出准确的预测,不过在某些情况下,这一点并不成立。例如,如果我们可以构建非常复杂的模型,那么在训练集上的精度可以想多高就多高。为了说明这一点,我们来看一个虚构的例子。比如,有一个新手数据科学家已知之前传的买家记录和对买船不感兴趣的顾客记录,想要预测某个顾客是否会买船,在现实世界中,这实际上是一个非常复杂的问题。虽然我们知道其他顾客还没有从我们这里买过船,但他们可能已经在其他人那里买过了,或者人在存钱并打算将来再买。目标是向可能购买的人发送促销电子邮件,而不去打扰那些不感兴趣的顾客。假设我们有顾客记录。如表二-一所示,表二-一在书上的22页到23页。对数据观察一段时间之后,我们的新手数据科学家发现以下规律,如果顾客年龄大于45岁,并且子女少于三个或没有离婚,那么他就想要买船。
05:10
如果你问他这个规律的效果如何,我们的数据科学家会回答100%准确。的确,对于表中的数据,这条规律完全正确。我们还可以发现,好多规律都可以完美解释这个数据集中的某个人是否想要买船,数据中的年龄都没有重复。因此,我们可以这样说,六十六五十二五十三和58岁的人想要买船,而其他年龄的人都不想买。虽然我们可以编出许多条适用于这个数据集的规律,但要记住,我们感兴趣的并不是对这个数据进行预测。我们已经知道这些顾客的答案,我们想要知道是新顾客是不会卖船。因此,我们想要找到一条适用于新顾客的规律,而在训练机上实现100%的进度对此没有帮助。我们可能认为,数据科学家发现了规律无法适用于所有的新顾客,他看起来过于复杂,而且只有很少的数据知识,例如规律或没有离婚这一条,对应的只有一名顾客。
06:06
判断一个算法在新数据上表现好坏的唯一度量就是在测试集上的评估。然后从直觉上看。我们认为简单的模型对新数据的泛化能力更好,在数学上也可以证明这一点。如果规律是年龄大于50岁的人想要买船,并且这可以解释所有顾客的行为,那么我们将更相信这条规律,而不是与年龄、子女和婚姻状况都有关系的那条规律。因此,我们总想找到最简单的模型,构建一个对现有信息量来说过于复杂的模型。正如我们的新手数据科学家做的那样,这被称之为过硬over。如果你在你和模型时过分关注训练级的细节,得到了一个在训练集上表现很好,但不能泛化到新数据上的模型。那么就存在过你和与之相反,如果你的模型过于简单,比如说有房子的人都买穿,那么你可能无法抓住数据的全部内容以及数据中的变化,你的模型甚至在训练集上的表现就很差。
07:01
过于简单的模型选择过于简单的模型被称之为嵌离合on the city。我们的模型越复杂,在训练数据上的预测结果就越好。但是如果我们如果我们的模型过于复杂。我们开始过多关注训练其中的每个单独的数据点,模型就不能很好的泛化到新数据上,二者之间存在一个最佳位置。可以得到最好的泛化性能,这就是我们想要的模型图二-一。在书上的24页,他给出了过拟和与欠拟合之间的均衡。模型复杂度与数据集大小的关系需要注意模型复杂度与训练数据集中输入的变化密切相关,数据集中包含的数据点变化范围越来越大。在不发生过拟合的前提下,你可以使用的模型就越复杂。通常来说,收集更多的数据点可以有更大的变化范围,所以更大的数据集可以用来构建更复杂的模型。但是,仅复制相同的数据点或收集非常相似的数据是无济于事的。
08:10
回到前面卖船的例子,如果我们查看了一万多行的顾客记录,并且所有数据都符合这条规律,如果顾客年龄大于45岁,并且子女少于三个或没有离婚,那么他就想要买船。那么我们就更有可能相信这是一条有效的规律,比从表二-一中仅12行数据得出来的更为克星。收集更多数据,构建适当构建更复杂的模型,对监督学习任务往往特别的有用。本书主要关注固定大小的数据集,在现实世界中,你往往能够决定收集多少数据,这可能比模型调仓更为有效。永远不要低估更多数据的力量2.3。监督学习算法现在开始介绍最常用的机器学习算法,并解释这些算法如何从数据中学习以及如何预测。我们还会讨论每个模型的复杂度如何变化,并概述每个算法如何构建模型。我们将说明每个算法的优点和缺点,以及他们最适用于哪类数据。
09:10
此外,还会解释最重要的参数和选项的含义。许多算法都有分类和回归两种形式,两者我们都会讲到。讲解,所有的参数和选项超出了本书的范围。你可以参与赛论文档来了解更多的细节。没有必要通读每个算法的详细描述,但理解模型可以让你更好的理解机器学习算法的各种工作原理。本章还可以作为参考指南,当你不确定某个算法的工作原理时,就可以回来查看本章的内容。二点三点一一些样本的数据集。我们将使用一些数据集来说明不同的算法,其中有一些数据集很小,而且是模拟的,其目的是强调算法的某个特定方面。其他数据集都是现实世界的大型数据集。
10:01
一个模拟的二类数据集,实例是for数据集,它有两个特征,下列代码将绘制一个三连图。将此数据集的所有数据点可视化,图像的第一个特征为X轴,第二个特征为Y轴。正如其他三点图那样,每个数据点对应图像中的一点。每个点的颜色和形状对应其类别。
12:26
从x.shape可以看出。这个数据集包含26个数据点和两个特征。我们用模拟的wave数据集来说明回归算法。Wave数据集只有一个输入特征和一个连续的目标变量或响应。后者是模型想要预测的对象。下面绘制图像中的单一特征位于X轴,回归目标,也就是输出位于Y轴。
14:00
我们之所以使用这些非常简单的低维数据集,是因为它们的可视化非常简单。屏幕。只有两个维度。所以很难展示特征数超过两个的数据。从特征较少的数据集也叫低维数据集中得出的结论可能并不适用于特征较多的数据集,也叫高维数据集。只要你记住这一点,那么在低维数据机上研究算法也是很有启发的。除了上面这些小型的模拟的数据集,我们还将补充两个现实世界中的数据集,他们都包含在S克论中,其中一个是威斯康新洲乳腺癌数据及简称cancerl,里面记录了乳腺癌肿瘤的临床测量数据,每个肿瘤都被标记为良性本N表示无害肿瘤或恶性,Malignant表示癌性肿瘤。其任务是基于人体组织的测量数据来学习预测肿瘤是否为恶性。
15:01
可以用S克勒模块的road breast cancer函数来加载数据。
16:07
包含在S论中的数据集通常被保存为棒NCH对象,里面包含真实数据以及一些数据及信息。关于棒NCH对象。你只需知道它与字典很相似。而且还有一个额外的好处。就是你可以用点操作符来访问对象的值。比如用棒点K来代替棒中括号字符串T。这个数据集共包含569个数据点,每个数据点有30个特征。
17:12
在569个数据点中,212个被标记为恶性,357个被标记为良性。
18:25
这一诺代码。重点讲一下这个函数。派中的bin count。它表示的意思是对一为非负整数数组,也就是参数X。计算其中每个值的出现次数。输出数组,也就是返回的数组中元素的个数比输入数组的最大值要多一。如果参数。被指定。那么。输出数组的长度将会至少是这个数,如果必要的话,输出数组的长度会更长,这取决于输入数组的内容,当输出数组中的最大值大于等于minimum的时候。
19:12
就会出现这种情况。输出数组中每个元素表示其索引在输入数组中的出现次数。如果参数未,则被指定。参数为此被置定。输入数组就被赋予了,就被其赋予了权重。举个例子,如果非负整数A在输入数组中的索引为I,那么输出数组DN加一个元素al n。不是。四加一进行计数,而是加上。该索引对应的权重数组中的权重值。
20:13
需要注意out in。初值圣灵。下面来讲解三个参数。X。一个类似于一位数组的对象,其中每个元素都是一个非负整数。位次数组,一个类似于一位数组的对象可选参数,其中每个元素都是数,其长度和输入数组的长度是相等的。Minimum一个整数可选参数输出数组的最小长度。既然表示长度,它应该是非负的。返回值返回一个数组,其中每个元素是一个数,如果指定参数minimum length,那么其长度至少是minimum,至多是输入数组中的最大值。再加一。
21:11
否则其长度一直是输入数组中的最大值。再加一。接下来讲一下。这个zip。里面传了两个东西,一个是np.b count。Can target,一个是can target names。首先看到cancel target names,它表示一个数组长度为二。为零。Doing malignant doing,唯一,Doingn。讲np.b count的之前,我们先要看一下can.target这么一个一位数组。
22:03
它是一个很长的一个数字,长度是。569。里面的每个元素。取值不是零就是一。零。对应。买了个一对。我们都知道它是进行简单的计数吗?计数出来。也就是看点target里面有212个零,有357个一。剩下的内容就比较简单了,ZP把它们缝合起来。缝合成为。这样的格式买了一个能头。
23:05
缝合成为这样的一个格式,一个类似于原组列表的格式。然后把元组列表中的。每个元素的第一个元素拿出去作为字典中的键。第二个元素。拿出去作为字典中的值。也就变成了这样的一个字典。为了得到每个特征的语义说明,我们可以看一下FA这么一个属性。
24:09
感兴趣的话,你可以阅读勘测点DC。来了解数据的更多信息。我们还会用到一个现实世界中的回归数据集及波士顿房价数据集。与这个数据集相关的任务是利用犯罪率、是否临近查尔斯和公路可达性等信息来预测20世纪70年代波士顿地区房屋价格的中位数。这个数据集包含506个数据点和13个特征。
25:31
同样,你可以阅读Boston对象的describe de c属性来了解数据集的更多信息。对于我们的目的而言,我们需要扩展这个数据集。输入特征不仅包括这13个测量结果,还包括这些特征之间的乘积,也叫交互项。换句话说。我们不仅将犯罪率和公路可达性作为特征,还将犯罪率和公路可达性的乘积作为特征。像这样包含导出特征的方法叫做特征工程。feature engineering将在第四章详细论述这个导出的数据,即可用load extended Bo函数来加载。
26:52
最初的最初的13个特征,加上这13个特征两两组合,有放回的,得到的91个特征一共有。
27:01
13加上91等于104个特征。为什么两两组合会得到91个特征?简单来说,这就是一个握手问题。利用高斯公式。准确来说是等差数列求和公式。就可以算出来为什么是91了。第一个特征可以与13个特征相乘,这就好比第一个人有14个人握手。第一个人可以与剩下的13个人握手。第二个人。就只能够和剩下的12个人握手。以此类推。第一个特征可以与13个特征相乘,第二个特征可以与12个特征相乘,那除了第一个,第三个可以与。11个特征相乘,除了第一,第二个。依次类推,依次相加,也就是13加12加十一一直加到一等于。
28:03
一加13的整体等于十四十四再乘以。13项14乘以13除以二,也就是七乘以13等于91。我们将利用这些数据集对不同机器学习算法的性质进行解释说明,但目前来说,先来看算法本身。下一回首先来重新学习上一章见过的K进0KNN算法。
我来说两句