00:02
2.4分类器的不确定度估计。我们还没有谈到。论接口的另一个有用之处就是分类器能够给出预测的不确定度估计。一般来说,你感兴趣的不仅是分类器或预测一个测试点属于哪个类别,还包括他对这个预测的质性程度。在实践中。不同类型的错误会在现实应用中导致非常不同的结果。想象一个用于测试癌症的医疗应用,假阳性预测可能只会让患者接受额外的测试,但假阴性预测却可能导致重病没有得到治疗。第六章会进一步探讨这个主题。中有两个函数可用于获取分类器的不确定度估计decision function和predict pro。大多数分类器,但不是全部都至少有其中一个函数,很多分类器两个都有。
01:06
大家来看一下这个表。第一行的意思表示。最近K精灵分类器没有decision function,但是有predict pro。剩下的意思都差不多,大家自己看一下。我们接下来来构建一个。Class梯度提升机的分类器。它同时拥有decision function和predict pro这两个方法。看一下这两个函数对一个模拟的二维数据集的作用。
05:40
注意到这一行代码。一个数组。所以一个数组。
06:00
就像这样一个数组,所以一个数组,其中A是一个长度为N的异位数组。B是一个一为整数数组,其中每个元素取值范围负N到N减一的整数。A索引B表示什么?它表示一个和B长度相等的一位数组。计算其中每个元素的过程可以看下表。通过这个表我们可以发现,对任意的I。A索引B的I等于A。BI做索引。2.4.1决策函数。对于二分类的情况,Decision function返回值的形状是EMS为每个样本都返回一个浮点数。
08:01
对于类别一来说,这个值表示模型对该数据点属于正类的执行程度,正值表示。对正类的偏好,负值表示对反类,也就是其他类的偏好。
09:12
我们可以通过仅查看决策函数的正负号来在线预测值。
10:37
对于二分类问题,反类始终是class下划线属性的第一个元素,正类是class下划线属性的第二个元素。因此,如果你想完全在线predict的输出,需要利用class下划线这么一个属性。
13:42
首先是第一行代码。数组对象方法FPI。猜也能猜的出来。对数组中元素的类型进行转换。
14:08
还有一个朗派函数。在这一行。能派点哦。这个大家也能猜的出来。判断数组中。所有的元素。是不是都可以解释成true?先来看一下。数组对象方法s type,这是对应圆形。参数d type转换之后的元素数据类型。A cfk4选一。默认K指定了。迭代顺序。计算迭代顺序。也就是输出数组的内存布局,C对应行优先C语言风格F对应列优先,For语言风格A对应自动选择。
15:07
如果输入数组。都是列优先格式,这个时候输出数组也是列优先格式,否则输出数组是行优先格式K对应元素在内存中的顺序。Casting。No EV save kind ona5选一可选参数。数据类型的转换方式,具体解释可以看下表。Subk不类型默认处如果设置成false,将会返回一个严格意义上的数组对象,而不是数组对象的类。能派点哦,这么一个函数,这是对应的圆形。判断数组。
16:01
中的所有元素是不是都可以被解释成true?当然,也可以给定一条轴或者一些轴构成的多个子数组。判断这些子数组中每个子数组中所有元素是不是可以减,正数也是这样。如果可以返回true,否则返回false。为了简便起见,应该操作为二运算。参数A一个类似数组的对象。Access。类型type整数整数元组三选一,可选参数沿着哪一条轴或者哪一些轴构成的超平面、超空间来进行对应的二运算。如果是一个整数元组长度大于一,将会通过多条轴过程的超超空间来进行对应的O运算。关于常用的参数取值。进行描述。看一下表就行。重点看一下第一行,第六行和第七行。第一行也就是序号一。
17:03
输入数组A的尾数是N为X等于none。他表示对数组中所有元素进行or运算,返回一个数或者一个数组。如果keep Dis等于two,返回只有一个元素的N为数组,否则返回一个数。看一下第六行。输入数组A的位数是二维X等于零。把A看成一个由列向量组构成的一个矩阵,对这个列向量组中的每个列向量的所有分量进行O运算,返回一个数组。设输入数组的形状为M行列。如果keep等于返回一个一行N列的二维数组,否则返回一个长度为一个一维数组。看下第七行。A1就是二维X等于一,这个时候把A看成是一个由行向量组构成的一个矩阵,对这个行向量组中每个行向量所有分量进行O运算,返回一个数组。是输入数组形状,M行一列可以定等于数,假设如,那么返回一个M行一列的二维数组,否则返回一个长度为M之一为数组,其他情况。
18:09
大家自己看一下表。通过观察这个表格。可以得出以下四个结论。或者说以下四条性质,大家自己看一下。这里是对应的事例。X等于零。堪称。列向量组。对每个类项的所有分量进行or运算,True true or一下就是true false true有false那就是false。等于一。看成行向量组,对所有分量进行O运算,True false有false填false true true全是true填true。参数out,选择存放结果的输出数组默认为now。如果提供一个数组,其形状必须和预期输出的一致。
19:03
如果必要的话,类型将会被强制转换。Keep them。公网类型可选参数如果设置为,会保持数组的为数不变,根据这个变量,结果会直接映射到输入数组中例子。Access等于零。看成列向量组进行运算。第一个列向量处处,结果是处放在。第一行第一列。For处。第二个类型呢,结果是false。放在第一行第二列。X等于看成行向量组。进行运算出false结果,False放在第一行第一列出处。结果是true,放在第二行第一列。其他情况产生为数下降。
20:00
尾数的变化情况。大家可以看一下。这两点要求。返回值,返回一个布尔数组或者一个布尔值,如果指定的参数alt,它就会就地修改alt指针指向的数组对象,并返回这个指针。换句话说。返回的指针和参数alt指针指向了同一个数组对象。如果不指定参数,Al,返回一个新数组。Live。需要注意的是。Na not number,正无穷负无穷都被解释成处,为什么?因为他们不等于零。当然回到书上92页,点C方。可以在任意范围内取值,这取决于数据与模型的参数。
22:22
由于可以任意的缩放,因此decision function的输出往往很难解释。在下面的例子中,我们利用颜色编码,在二维平面中画出所有点的点C形、方形。还有决策边界。后者我们之前见过。我们将训练点画成圆,将测试数据化成三角。
27:28
注意到。这里点to list是什么意思?一个数组。To list方法。看名字也能猜的出来。把这个数组转换成对应的列表。只不过呢,这个方法。还是?虽然说简单,但是还是要讲一下。
28:02
看例子。通过这个例子,我总结了一张表。对于零为数组。调用list构造函数,它会报错。调用to list方法,它会返回一个数。对于一维数组,调用类似构造函数。它会把这个一维数组转成一维列表,但是不改变元素的类型。调用list方法,一维数组。它会转成一维列表,但是它会改变元素的类型。对于N为数组,N大于等于二。调用list构造函数,它会转成一维的数组列表。调用to list方法。
29:00
它会转成N为列表。关于to list方法以及list构造函数。就讲到这里,继续看到书本上。既给出预测结果,又给出分类器的置信程度,这样给出的信息量更大。但在上面的图中,很难分别出两个类别之间的边界。2.4.2预测概率。Predict pro的输出是每个类别的概率,通常比decision function的输出更容易理解。对于二类问题,它的形状始终是。N3S逗号二。
30:31
每一行的第一个元素是第一个类别的估计概率,第二个元素是第二个类别的估计概率。由于predict pro的输出是一个概率,因此总是在零和一之间,两个类别的元素之和始终为一。
31:30
行。由于两个类别的概率之和为一。因此只有一个类别的概率。
32:02
超过50%,也就是0.5,这个类别就是模型的预测结果。需要注意的是。由于概率是浮点数,所以不太可能,或者说几乎不可能。两个值都等于0.5,但如果出现了这种情况,预测结果是随机选择的。在上一个输出中可以看到,分类器对大部分点的置信程度都是相对较高的,不确定度大小实际上反映了数据依赖于模型和参数的不确定度。护理和更强的模型可能会做出自信程度更高的预测,即使可能是错的。复杂度越低的模型,通常对预测的不确定度越大。如果模型给出的不确定度符合实际情况。那么这个模型被称为校正。Calibr模型在校正模型中,如果预测有70%的确定度,那么它在70%的情况下是正确的。
33:04
在下面的例子中,我们再次给出该数据集的决策边界以及类别一的。类别概率。
36:49
这张图的边界更加明确。不确定的小小块区域。更加清晰可见。
37:02
Sexon网站。给出了许多模型的对比。以及不确定度。古迹的形状。在书上。95页图二-57。当然,我建议你去网站查看。那些事例?看到2.4.3多分类问题的不确定度。到目前为止,我们只讨论了二分类问题中的不确定度估计,但decision function和predict pro也适用于多分类问题,我们将这两个函数应用于鸢尾化iris数据集。这是一个三分类的数据集。
39:46
嗯。
41:02
对于多分类的情况,Decision function的形状为en symbols in classes。每一列对应每个类别的确定度分数。分数较高的类别可能性更大。分数较低的类别可能性较小,你可以找出每个数据点的最大元素,从而利用这些分数在线预测结果。
42:55
注意到这里一个函数。派点max。
43:05
这个函数稍微有一点点麻烦。根据给定的轴返回数组中的最大值的对应,所以。该运算基为啊跟max运算。参数A。一个类似数组的对象输入数组。X整数可选参数默认long沿着哪一条轴进行阿格max运算,默认找到所有元素的最大值对应的索引。如果是N为数组,N大于等于二,该索引就是该数组暂停之后的对应的索引。其他情况,沿着给定的轴进行运算。参数常用取值看下表就行。重点看一下第一行、第六行和第七行。输入数组,N为数组等于now。对数组中所有元素进行max运算,返回一个数。
44:03
输入数组A2为X等于零,把A开始是一个由列向量组构成的一个矩阵,对这个列向量组中每个列向量所有分量进行2X运算。找到当前列的最大值对应的行索引。设输入数组A的形状M行N列,返回一个长度为N的一位数组。输入数组A的位数是二,为X等于一。把A看成一个由行向量组构成的一个矩阵,对这个行向量组中每个行向量所有分量进行2X运算,也就是找到当前行的最大值对应的列,所以返回一个数组。是输入数组A的形状是M行引列返回一个长度为M的一位数组。其他四种情况都是同理了,大家自己看一下吧。Leave。
45:00
直接看例子可能有点难理解。首先看这么一个例子。X等于long,也就是默认情况,它返回的是展平之后的。数组最大值对应的索引。在计算它的过程中,我们首先得把A展平,展平。就变成这样。展平之后,最大值在这里,它对应的索引五。等于零,看成列向量组。求最大行索引。十十三。最大值是13,对应的行索引是一。十一十四。最大值是14,对应的行索引也是一。十二十五。
46:02
对最大值15对应的行索引是一。X等于一看成行向量组。进行max运算。十十一十二最大值是12。对应的列索引是二。十三十四十五。15是最大值,对应的列索引是二。参数,Out。选择存放结果的输出数组,默认为,那如果提供一个数组,其形状必须和预期的输出数组一致,其元素的数据类型必须是整数。看一下例子。比较简单。需要注意的是,如果一个数组中有多个最大值,那么我就返回第一个最大值对应的,所以。
47:00
就比如说这个例子中。它有两个最大值。我要返回第一个最大值,对应的索引零,对应索引零五,也就是最大值吗?对应的索引是一直接返回。这里的五就当没看到。我们可以发现。这一个数组。和这一个数组完全相同。不仅形状相同,而且值也相同。回到书上,Predict pro输出的形状相同,也是enems in。
48:02
和decision function是一样的,同样每个数据点所有可能的类别的概率之和为一。
50:01
同样,我们可以通过计算predict pro的max来在线预测结果。
51:36
依旧是。这两个数组。完全相同。总之,Predict pro和decision function的形状始终相同,都是in sample in classes,除了二分类情况下的decision function,对于二分类情况,Decision function只有一列。
52:04
对于。对应证类class下线一。如果有n class这么多列,你可以通过计算每一列的max来在线预测结果。但如果类别是字符串或者是整数,但不是从零开始的连续整数的话,一定要小心。如果你想要对。想要对比predict的结果与decision function形或者predict的结果,一定要用分类器的classes。下限这么一个属性来获取真实的属性名称。
56:42
可以发现predictions冒号后面这个数组。哦。Max combined with classes3号线。冒号后面这个数组,这两个数组完全相同。2.5小结与展望本章首先讨论了模型复杂度,然后讨论了泛化,或者说学习一个能够在前所未见的新数据上表现良好的模型,这就引出了欠拟合和过拟合的概念。前者是指一个模型无法获取训练数据中的所有变化,后者是指模型过分关注训练数据,但对新数据的泛化性能不好。
57:22
然后,本章讨论了一系列用于分类和回归的机器学习模型,各个模型的优点和缺点以及如何控制它们的复杂度。我们发现,对于许多算法而言,设置正确的参数。对模型性能至关重要,有些算法还对输入数据的表示方式和敏感,特别是特征的缩放。因此,如果盲目的将一个算法应用于某个数据集,而不去理解模型所做的假设以及。参数设定的含义不太可能会得到,或者说根本不可能会得到。精度高的模型。本章包含大量有关算法的信息,在继续阅读后续章节之前。
58:04
你不必记住所有的这些细节,但是这里提到的有关模型的某些知识,以及在特定情况下使用哪种模型。对于。在实践中。成功应用机器学习模型是很重要的。关于何时使用哪一种模型,下面是一份快速总结。最近零适用于小型数据集。是很好的基准模型,很容易解释。线性模型非常可靠的首选方法,适用于非常大的数据集,也适用于高维数据。朴素贝叶斯。只适用于分类问题,比线性模型速度快,适用于非常大的数据集和高维数据。精度通常要低于线性模型。决策术。速度很快,不需要数据缩放,可以可视化,很容易解释。随机森林。
59:00
几乎总是比单科决策数的表现要好,鲁棒性很好,非常强大,不需要数据缩放,不适用于高维稀疏数据。梯度提升决策数。精度通常比随机森林略高一点。与随机森林相比,训练速度慢,但预测速度快。需要的内存也更少,比随机森林需要更多的参数调节。支持向量机。对于特征含义相似的中等大小的数据集很强大,需要数据缩放,对参数敏感。神经网络。可以构建非常复杂的模型,特别是对于大型数据集而言。对于数据缩放敏感,对参数选取敏感,大型网络需要很长的训练时间。面对新的数据集,通常最好先从简单模型开始,比如线性模型、朴素贝叶斯或最近灵分类器。
60:00
看看能得到什么样的结果。对数据有了进一步了解之后,你可以考虑用于构建更复杂模型的算法,比如随机森林梯度提升决策数。和制制向量机、SVM或神经网络。现在你应该对如何应用调节和分析我们介绍过的模型有了一定的了解。本章主要介绍了二类问题,因为这通常是最容易理解的。不过本章大多数算法都可以同时用于分类和回归,而且所有分类算法都可以同时用于二分类和多分类。你可以尝试将这些算法应用于S的内置数据集,比如用于回归的。Boston housing或。这么一个数,这么两个数据集,或者用于多分类的数据集。在不同的数据集上实验这些算法可以让你更好的感受他们所需的训练时间、分析模型的难易程度以及他们对数据表示的敏感程度。
61:05
虽然我们分析了不同参数的设定对算法的影响,但在生产环境中,实际构建一个对新数据泛化性能很好的模型要更复杂一些。我们将在第六章介绍正确的调参方法和自动寻找最佳参数的方法。不过,首先我们将在下一章,也就是第三章深入讨论一下无监督学习和预处理。
我来说两句