00:00
2.3.5决策数在讲决策数之前,首先需要安装一个P模块graph viz。在终端下输入命令type in VI z。就可以进行安装。当然安装完成之后。我们还需要去安装。Graph viz这么一个可执行程序。进入到graph viz可执行程序的下载页面。在这里。他给出了所有系统的。安装方式。当然。我就只讲解一下我的系统对应的安装方式,因为我是WINDOWS1064位。所以我。点击这么一个文件。对应的链接进行下载即可,当然我是已经下载好了。下载好了之后。
01:11
打开下载目录。找到这个文件。右击打开傻瓜式安装。当然,安装完成之后,不要忘了环境变量。右击次电脑属性。高级系统设置。环境变量。系统变量pass编辑。将安装目录下面的子目录BI子目录添加到环境变量中来。就可以了,当然我这地方已经添加好了前面这一块内容。千万不要照着我的抄。因为大家可能。和我的路径不一样。
02:02
完成之后一路点击确定。安装目录在哪里?在傻瓜式安装的时候,大家可以留意一下。准备工作全部做完之后。把第二张。这个笔记本里的所有的格子全部运行一遍。当然运行的时间。9.9我们先看到书上决策数是广泛用于分类和回归任务的模型,本质上,它从一层层的EL问题中进行学习,并得出结论。这些问题类似于你在twenty questions游戏中可能会问的问题。这个twenty question游戏是一种室内游戏,其中一个人想象一个对象,其他人轮流通过向他提问来猜测这个对象,他只能回答是或否。如果20轮问题过后,人没人仍然没有人可以猜得出,那么这个提问的人获胜。想象一下,你想要区分下面这四种动物,雄鹰。
03:15
企鹅和海豚。你的目标是通过提出尽可能少的1L的问题来得到正确答案。你可能首先会问这种动物有没有羽毛,这个问题会将可能的动物减少到只有两种。如果答案是有,你可以问下一个问题,帮你区分鹰和企鹅。例如,你可以问这种动物会不会飞,如果这种动物有没有羽毛。如果这种动物没有羽毛,那么。可能是海豚或者熊,所以你需要问一个问题来区分这两种动物。比如问这种动物有没有奇?这一系列问题可以表示成一棵决策树。
04:27
在这张图中,数的每个节点代表一个问题或一个包含答案的终结点,也叫叶节点。数的边,将问题的答案与将问的下一个问题连接起来。用积极学习的语言来说,就是为了区分四类动物,鹰、企鹅、海豚和熊。我们利用三个特征,有没有羽毛、会不会飞和有没有鳍来构建一个模型。我们可以利用监督学习从数据中学习模型,而无需人为构建模型。
05:16
看到构造决策数。我们在图。二-23所示的二维分类数据集上构造决策数。图二-23在书上的56页。这个数据集由两个半月形组成,每个类别都包含50个数据点,我们将这个数据集称为two。学习决策数,就是学习一系列EL的问题,使我们能够以最快的速度得到正确答案。在机器学习中,这些问题叫做测试,不要与测试集弄混,测试集是用来测试模型泛化性能的数据。数据通常并不是像动物的例子那样具有二元特征是否的形式,而是表示为连续特征。
06:01
比如图二-23所示的二维数据集,用于连续数据的测试形式是特征I的值是否大于A。为了构造决策数,算法搜遍所有可能,测试找出对目标变量来说信息量最大的那一个。图二-二四展示了选出的第一个测试,将在将数据集在X1等于0.0596处垂直划分,可以得到最多的信息。它在最大程度上将类别零中的点与类别一中的点进行区分,顶节点也叫根节点。表示整个数据集包含属于类别零的50个点和属于类别一的50个点。通过测试。X小于等于0.0596的真假来对数据进行划分。在图中表示为一条黑线,如果测试结果为真,那么将这个点分配给左节点,左节点里包含属于类别零和类别二属于类别零的两个点和属于类别一的32个点。
07:04
否则将这个点分配给右节点,右节点里包含属于类别零的48个点和属于类别一的18个点。这两个节点对应于图二-24中的顶部区域和底部区域。尽管第一次划分已经对两个类别做了很好的区分,但底部区域仍包含属于类别零的点,顶部区域也仍包含属于类别一的点。我们可以在两个区域中重复寻找最佳测试的过程,从而构建出更准确的模型。图二-二五展示了心向最大的下X划分,这个划分是基于X0做出的,分为左右两个区域。这一递归过程生成一个二元决策树,其中每个节点都包含一个测试。或者,你可以将每个测试看成沿着一条轴对当前数据进行划分。这是一种将算法看作分层划分的观点。由于每个测试仅关注一个特征,所以划分后的区域边界始终与坐标轴平行。
08:03
对数据反复进行递归划分,只当划分后的每个区域决策数中的每个页节点只包含单一目标值、单一类别或单一回归值。如果书中的某个业界点所包含的数据点的目标值都相同,那么这个业界点就是纯的Q。这个数据集的最终划分结果见图二-26。想要对新数据点进行预测,首先要查看这个点位于特征空间,划分到哪个区域。然后将该区域的多数目标值,如果是纯的业界点,就是单一目标值作为预测结果。从根节点开始对数进行遍历,就可以找到这一连续区域。每一步向左还是向右,取决于是否满足相应的测试。决策数也可以用于回归任务,使用的方法完全相同。预测方法是基于每个节点的测试对数进行遍历,最终找到新数据点所属的业节点,这一数据点的输出即为此业界点中所有训练点的平均目标值。
09:09
控制决策数的复杂度。通常来说,构造决策数直到所有业界点都是纯的业界点,这会导致模型非常的复杂,并且对训练数据高度过敏。和纯叶节点的存在说明这棵树在训练体上的精度是100%。训练集中的每个数据点都位于分类正确的业界点中。在图二-26的左图可以看出过拟合。你可以看到在所有属于类别零中,类别的零的点中间有一块属于类别一的区域,另一方面有一小条数与类别零的区域。包围着最右侧属于类别零的那个点。这并不是人们想象中决策边界的样子。这个决策边界过于关注远离同类别其他点的单个异常点。防止过拟合有两种常见的策略。一种是及早停止树的生长,也叫遇见枝。
10:03
另一种是先构造数。但随后删除或折叠信息量很少的点,也叫后减值post或减值。预减值的限制条件可能包括限制数的最大声、限制液节点的最大数目或规定一个节点中数据点的最小数目来防止继续划分。这个预减之后后减枝。简单理解就是。举个例子。一个男生向一个女生表白。这个女生。一开始。就拒绝掉他。
11:00
也就是把这个选择给减掉,这种情况。就是遇见之。而如果这个女生同意。那个男生。相处一段时间。发现相处的不好。再去。把这一段。感情可以直接减掉,这种情况叫做后减脂。在我看来。进行预检值。或许是个正确的选择。毕竟在进行后减值的过程中。会有那么一点舍不得。这就是为什么论的决策数在decision treeg regretsive类和decision class file类一个用于回归,一个用分类两个中实现,在分只实现了预减值,没有实现后减值。
12:14
我们在乳腺癌数据集上更详细的看一下预检值的效果。和前面一样,我们导入数据集,并将其分为训练集和测试,然后利用默认设置来构建模型。默认将数完全展开,数不断分支,直到所有业界点都是纯的。我们固定数的random state用于在内部解决平局问题。
14:52
不出所料,训练集上的精度是100%,这是因为业绩点都是纯的,输的深度很大,所以完美的记住训练数据的所有标签,测试及精度比之前讲过的线性模型略低。
15:07
线性模型的精度约为95%。如果我们不限制决策数的深度,它的深度和复杂度都可以变得特别的大,因此未减值的数容易过拟合,对新数据的泛化能力不佳。现在,我们可以将预检值应用在单科决策,预检值应用在决策书上。就可以在完美拟合训练数据之前阻止书的展开。一种选择是在到达一定深度后停止数的展开。这里我们设置max steps等于四。也就是树的最大深度是四,这意味着只可以连续问四个问题。三键图二-24和图二-26限制数的深度可以减少玻璃和,这会降低训练级的精度,但可以提高测试题的精度。
16:24
分析决策数,我们可以利用群模块的export graph VI z函数来将数可视化,这个函数会生成一个点dot格式的文件。这是一种用于保存图形的文本文件格式。我们设置为。我们设置为叶节为节点添加颜色的选项,颜色表示每个节点中的多数类别,同时传入类别名称和特征名称,这样可以对数正确标记。
18:32
我们可以利用graph VI z模块读取这个文件。并将其可视化。你也可以使用任何能读取点dot文件的程序。
20:03
当然这棵树比较大。大家可以看一下书上59页图二-27。一个缩小版的。数的可视化有助于深入理解算法是如何进行预测的,也是易于向非专家解释的机器学习算法的优秀事例。不过。即使这里树的深度只有四层,也有点太大了。深度更大的数深度为十并不罕见,更加难以理解。一种观察数的方法可能有用,就是找出大部分数据的实际路径。图二-27中每个节点的3BOSS给出了该节点中的样本个数。Values给出了。每个类别的样本个数。观察小于等于16.795分之右侧的子节点。
21:10
也就是这边这个节点。我们发现它只包含。八个。良心样本。但有134个恶性样本。数的这一侧的其余分支,只是利用一些更精细的区别,将这八个良性样本分离出来。在第一次划分右侧的142个样本中,几乎所有样本。一个。最后都进入。最右侧的。业绩。联通。再来看一下根节点的左侧子节点。
22:05
对于whats大于16.795,我们得到25个恶性样本和259个良性样本,几乎所有良性样本最终都进入。左子数的。第二个业界面中。大部分其他业界都只包含很少的样本。数的特征重要性,查看整个数可能非常费劲。除此之外,我们还可以利用一些有用的属性来总结数的工作原理,其中最常用的是特征重要性,发importance。它为每个特征对数的决策的重要性进行排序。对于每个特征来说,它都是一个介于零和一之间的。
23:02
数字,其中零表示根本没用到,一表示完美预测目标值特征重要性的求和始终为一。我们可以将特征重要性可视化。与我们将线性模型的系数可视化的方法类似。
26:19
这里我们看到顶部划分用到的特征what radiOS是最重要的特征,这也证实了我们在分析数时的观察结论及第一层划分已经将两个类。区分的很好。但是,如果某个特征3IMPORTANCE很小,并不能说明这个特征没有提供任何信息,这只能说明该特征没有被数选中,可能是因为另一个特征包含了同样的信息。与线性模型的系数不同,特征重要性始终为正数。也不能说明该特征对应哪个类别。特征重要性告诉我们我radio特征很重要。但并没有告诉我们半径大的表示的样本是良性还是恶性。事实上,在特征和类别之间可能没有这样的简单关系。
27:08
你可以在下面的例子中看出这一点。该图显示的是有两个特征和两个类别的数据集。这里所有信息都包含在X1中,没有用到X0,但X1和输出类别之间并不是单调关系,所以我们不能这样说,较大的X1对应类别零,较小的X1对应类别一,反过来也不可以。
28:05
虽然我们主要讨论的是用于分类的决策数,但用于回归的决策数所有内容都是类似的。Right。据regret类中实现回归数的用法和分析与分类数非常相似,但将基于数的模型用于回归数。我们想要指出它的一个特殊性质,Decisions。以及其他所有基于数的回归模型不能外推。OL也不能在训练数据范围之外进行预测,我们利用计算机内存IM历史价格的数据集来更详细的研究这一点。这个数据集在哪里?在我们第一章。下载MGZ这么一个拈。
29:05
所对应的github。项目中。我于根目录的data。The I price seriously。复制过来。
30:54
我们需要注意的是Y轴的对数刻度。
31:01
在利用对数坐标绘图时,二者的线性关系看起来非常好,所以预测应该相对比较容易,除了一些不平滑支出以外。我们将利用2000年前的历史数据来预测2000年后的价格,只用日期作为特征。我们将对比两个简单的模型,Decision tos和lines。我们对价格去对数。使得二者的。关系线性相对更好。这对decisiongs不会产生什么影响,但对linegssion的影响却很大。我们将在第四章中进一步讨论训练模型并做出预测。之后我们应用指数映射来做对数变换的逆运算。为了方便可视化,我们这里对整个数据集进行预测。但如果是为了定量评估,我们将只考虑测试数据集。
37:18
这里创建的。图二-32将决策数和线性回归的模型预测结果与真实值进行对比。图二-30在书上的。64页。
40:11
在讲这幅图之前,也就是书上的。64页图二纲三朝之前。首先来讲一下。对一个数组。这么进行索引或切片。是个什么意思?
41:22
其实很简单。我们首先。来看一下浪派点new。它对应的值是什么?不用看了,在这里大家都看到了。他对应的值是浪。那么问题就转化成了。A冒号逗号,那表示什么?其中A是一个长度为N的一维数组。那么A冒号,逗号,那表示什么?
42:00
其实很简单。它就等价于a.reha负一一。接下来我们来看到这幅图。两个模型之间的差异非常的明显,线性模型用一条直线对数据做近似,这是我们所知道的。这条线对应测试数据2000年后的价格给出了相当好的预测,不过忽略了训练数据和测试数据中一些更细微的变化。与之相反。数模型完美预测了训练数据,由于我们没有限制数的复杂度,因此他记住了整个数据集。但是一旦输入超出模型训练数据的范围,模型就只能持续预测最后一个已知数据点数不能在训练数据范围之外产生新的响应。所有基于数字模型都有这个缺点。实际上,利用基于数的模型可以做出非常好的预测,比如试图预测价格会上涨还是下跌。这个例子的目的并不是要说明对于时间序列来说,数是一个不好的模型,而是为了说明数在预测方式上的特殊性质。
43:18
看到最后优点、缺点和参数如前所述,控制决策树模型复杂度的参数是预检之参数,它在数完全展开之前停止数的构造。通常来说,选择一种预减值策略,设置max step,最大深度max live notes。最多一点点个数或。Minimum samples live。业绩点中的最小样本数量。足以防止过敏和。当然。决策书当中。
44:00
还有一个参数。是。Minimum symbols split。我们就把这四个参数放在一起讲。都是遇见知道。Ma steps,整数默认为nu数字最大深度,如果是long节点或永无休止的进行分解,直到所有业界点都是纯的,也就是每个业界点中的样本只属于一个类别,或者所有业界点包含少于。Minimum split样本。Minimum split、整数和浮点数默认为分支节点的最小样本数,如果是整数,就认为每个分支节点。至少有minimum样本。如果是浮点数,就认为每个分支点至少有。Minimum split乘上enems这么多个样本,其中enems是样本数量。Ma leave notes。整数默认为呢最多业绩点个数,如果是呢,业绩的数量可以任意打。
45:05
也就是让所有业界点都达到纯。Minimum somebody lef,整数或浮点数默认一一个业间点所含的最小样本数,如果是整数,就认为每个业界点必须至少有minimum s这么多个样本,如果是浮点数,就是我每个页间至少有minimum sample Le乘上n samples向上取整这么多个样本。与前面讨论过的许多算法相比,决策数有两个优点,一是得到的模型很容易可视化,所以专家也很容易理解,至少对于较小的数而言,二是算法完全不受数据缩放的影响。由于每个特征被单独处理,而且数据的划分也不依赖于缩放,因此决策数算法不需要特征预处理,比如归一化或标准化。特别是特征的尺度完全不一样时,或者二元特征和连续特征同时存在时,决策数的效果很好。
46:06
决策书的主要缺点在于。即使我做了遇见之。它也会经常的过敏和泛化,性能也很差。因此,在大多数应用中,往往使用瑕疵介绍的集成方法来代替单科决策数。
我来说两句