全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 数据分析与数据挖掘
878 0
2020-10-22
决策树的构建块
有人说是 数据科学家 是“21最性感头衔ST 世纪。” 这是因为一个主要原因,因为我们以前所未有的速度生成数据,所以有大量可用数据。随着对数据的大量访问,现在出现了复杂的算法,例如决策树,随机森林等。当有大量可用数据时,最复杂的部分是选择正确的算法来解决问题。每个模型都有其优缺点,应根据当前问题的类型和可用数据进行选择。
决策树:
这篇博客文章的目的是讨论最广泛使用的机器学习算法之一:“决策树”。顾名思义,它使用树状模型进行决策,如下图所示。决策树上下颠倒,其根在顶部。根据哪个决策树分裂为分支,在每个节点处提出一个问题。不进一步分裂的树的末端称为叶子。
决策树|  无量纲
决策树可用于分类以及回归问题。这就是所谓的分类树或回归树(CART)的原因。在上面的示例中,决策树用于分类问题,以确定一个人是合适的还是单位。树的深度是指从根节点到叶的树的长度。
有关决策树的基础知识,请单击此处。
您是否曾经想到过,如果有这么多复杂的算法(例如神经网络)在参数(例如准确性)方面更好,那么为什么决策树是使用最广泛的算法之一?
决策树的最大优点是可解释性。让我们谈论神经网络来理解这一点。为了使神经网络的概念易于理解,我们将神经网络视为“黑匣子”。    输入数据集被提供给黑匣子,它产生与输入数据集相对应的输出。现在,黑匣子里面是什么?黑匣子由一个计算单元组成,根据问题的复杂程度,该计算单元由几个隐藏层组成。而且,需要大量数据集来训练这些隐藏层。随着增加号。在隐藏层中,神经网络的复杂性显着增加。在这种情况下,很难解释神经网络的输出。这就是决策树的重要性。决策树的可解释性可帮助人们了解黑匣子内部发生的事情?这可以在诸如准确性,避免过度拟合等几个参数方面显着帮助改善神经网络的性能。
决策树的另一个优点包括参数之间的非线性关系不影响树的性能,决策隐式执行功能选择和最少的数据清理工作。
如前所述,每种算法都有其优缺点。如果决策树过于适合数据并且不能很好地概括,则决策树的缺点包括性能不佳。对于较小的数据变化,决策树可能不稳定。因此,应通过套袋,加强等方法减少这种变化。
如果您曾经使用过已实施的决策树:您是否曾想过在Python中使用sci-kit Learn实施决策树时后台发生了什么?让我们了解决策树的本质,即各种功能,例如列车测试拆分,检查数据的纯度,数据的分类,计算在后台运行的数据的整体熵等。让我们通过从头开始实施决策树(即在numpy和pandas的帮助下(无需使用skicit learning))来理解决策树的概念。
在这里,我正在使用Titanic数据集来构建决策树。需要训练决策树,以根据年龄,性别,Pclass等参数对乘客是死亡还是幸存进行分类。请注意,泰坦尼克号数据集包含各种变量,例如乘客姓名,地址等,这些变量被删除是因为它们只是标识符,不会给决策树增加价值。此过程正式称为“功能选择”。
决策树-2 |  无量纲
建立ML算法的第一步是数据清理。这是最重要的步骤之一,因为基于未格式化数据的模型可能会严重影响模型的性能。我将使用Titanic数据集来构建决策树。该模型的目的是基于给定的信息将乘客分类为幸存者或未幸存者。第一步是加载数据集,对其进行清理。数据清理包含2个步骤:
删除在决定中最不重要的变量。在“泰坦尼克号”数据集列中,例如名称,机舱号。票号 最不重要。因此,它们已被删除。
填写所有缺失值,即用最合适的集中趋势替换NA。在连续变量的情况下,所有NA均用均值替换;在分类变量的情况下,均用模式替换。数据干净后,我们将尝试构建帮助程序功能,以帮助我们编写主要算法。
火车测试拆分:
我们将数据集分为2组,即训练数据集和测试数据集。我将火车测试拆分比率保持为80:20。但是,情况可能有所不同。最佳做法是根据数据集的大小,使测试数据集与火车数据集相比保持较小。但是测试不能太小而不能代表总体
对于大型数据集,该数据集分为3类:训练数据集,验证数据集,测试数据集。训练数据用于训练模型,验证数据集用于根据精度,过度拟合等参数调整模型。一旦验证了模型的最佳准确性,就可以将其用于测试。
检查数据纯度并分类:
如框图所示,“数据纯净”功能检查数据集的纯度,即,如果该数据集仅包含一种花。如果是这样,它将对数据进行分类。如果数据集包含不同种类的花朵,它将尝试提出可以准确区分不同种类花朵的问题。它是通过实现诸如潜在拆分,拆分数据,计算总体熵之类的功能来完成的。让我们详细了解它们。
电位分割功能:
潜在拆分功能可为所有变量提供所有可能的拆分。 在泰坦尼克号数据集中,有2种变量:分类变量和连续变量。两种类型的变量都以不同的方式处理。
对于分类变量,每个唯一值均应尽可能拆分。让我们以性别为例。性别只能使用2个值,无论是男性还是女性。可能的分裂是男性和女性。问题很简单:性别==“男性”。这样,决策树可以根据性别将人群隔离。
由于连续变量可以取任何值。因此,电位分裂可以恰好在数据集中两个值的中点。让我们借助泰坦尼克号数据集中的“票价”变量来了解这一点。假设票价= {10
一旦潜在分裂函数给出了所有变量的所有潜在分裂。拆分数据功能用于根据每个潜在拆分来拆分数据。它将数据分为两半,上面的数据和下面的数据。为每个拆分计算熵。
杂质测量:
有两种测量杂质的方法:基尼杂质和信息增益熵。两种方法的工作原理相同,杂质度量的选择对决策树的性能影响很小。但是熵在计算上是昂贵的,因为它处理对数函数。这是大规模使用基尼杂质而不是信息增益熵的主要原因。下面是这两个公式:
基尼(Gini):基尼(E)= 1-∑j = 1(pj2)
熵:H(E)=-∑cj = 1(pjlogpj)
我已经使用信息增益熵来衡量杂质。您可以使用它们中的任何一个,因为在CART分析的情况下,两者都给出几乎相同的结果,如下图所示。简单来说,熵就是对随机性或不确定性的度量。对于每个潜在的分裂,将计算熵。最佳的潜在分裂将是总体熵最低的分裂。这是因为较低的熵,较低的不确定性以及因此更大的可能性。
杂质测量方法|  基尼杂质
请参考以下链接,比较两种杂质??测量方法:
https://github.com/rasbt/python-machine-learning-book/blob/master/f ...
要在泰坦尼克号数据集示例中计算熵,请使用计算熵和计算整体熵函数。根据上述方程式定义功能。一旦通过拆分数据功能将数据拆分为两半,便会为每个潜在拆分计算熵。在确定最佳分割函数的帮助下,选择具有最低总体熵的潜在分割为最佳分割
确定功能类型:
确定要素的类型确定要素的类型是分类的还是连续的。有2个用于将该功能称为分类的条件,第一个条件是该功能的数据类型为字符串,第二个条件是否。该要素的类别总数小于10。否则,该要素被认为是连续的。
确定要素的类型根据上述标准(作为潜在拆分功能的输入)确定功能是否为分类。这是因为如上面的潜在拆分函数中所述,潜在拆分具有处理分类数据和连续数据的不同方式
决策树算法:
由于我们已经构建了所有辅助函数,因此现在该构建决策树算法了。
目标决策树应如下所示:
目标决策树|  无量纲
如上图所示,决策树由几个子树组成。每个子树都是一个字典,其中“ Question ”是字典的关键字,并且每个问题对应两个答案,即“是”答案和“否”答案。
子树的表示如下:
sub_tree = {“问题”:[“ yes_answer”,“ no_answer”]}
决策树算法是主要算法,用于在我们先前构建的辅助函数的帮助下训练模型。首先,调用“火车测试拆分”功能,该功能将数据集分为火车数据和测试数据。拆分数据后,将调用“数据纯净和分类”功能以检查数据的纯度并根据纯度对数据进行分类。潜在拆分功能可为所有变量提供所有潜在拆分。计算每个潜在分裂的总体熵,最终,选择具有最低总体熵的潜在分裂,并且分裂数据功能将数据分为两部分。这样,就构建了子树,并且一系列子树构成了我们的目标决策树。
一旦在训练数据集上对模型进行了训练,就可以借助分类功能在测试数据集上验证决策树的性能。通过计算精度函数,以精度来衡量模型的性能。可以通过基于树的最大深度修剪树来提高模型的性能。该模型的准确性为77%。
1
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群