分享

一个基于树的建模的完整的教程(R & Python)第二部分

 youxd 2016-04-21

本文为数盟原创译文,转载时请务必注明出处为“数盟社区”,并将原文链接置于文首。

1.回归树vs分类树

我们都知道,终端节点(或树叶)位于决策树的底部。这意味着我们通常会颠倒绘制决策树,即叶子在底部根在顶部(如下所示)。

一个基于树的建模的完整的教程(R & Python)第二部分

这些模型的功能几乎相似,让我们看看回归树和分类树主要的差异和相似点:

①用于回归树的因变量是连续的,而用于分类树的因变量是无条件的。

②在回归树中,训练数据中的终端节点的价值获取是观测值落在该区域的平均响应。因此,如果一个看不见的数据观察落在那个区域,我们将它估算为平均值。

③在分类树中, 训练数据中终端节点获得的价值是观测值落在该区域的模式。因此,如果一个看不见的数据落在该地区,我们会使用众数值作为其预测值。

④这两个树将预测空间(独立变量)划分为明显的非重叠区域。为了简单起见,你可以认为这些区域是高维盒子或箱子。

⑤这两种树模型都遵循的自上而下的贪婪的方法称为递归二分分裂。我们之所以叫它为“自上而下”,是因为当所有的观察值都在单个区域时它先从树的顶端开始,然后向下将预测空间分为两个分支。它被称为“贪婪”,是因为该算法(寻找最佳变量可用)关心的只有目前的分裂,而不是构建一个更好的树的未来的分裂。

⑥这个分裂的过程一直持续到达到一个用户定义的停止标准。例如:我们可以告诉该算法一旦观察每个节点的数量少于50就停止。

⑦在这两种情况下,分裂过程达到停止标准后就会构建出一个成年树。但是,成年树可能会过度适应数据,导致对未知数据的低准确性。这就带来了“修剪”。修剪是一个解决过度拟合的技术。我们会在以下部分了解更多关于它的内容。

2.树模型是如何决定在哪分裂的?

制造战略性的分裂决定将严重影响树的准确性。分类树和回归树的决策标准是不同的。

决策树算法使用多个算法决策将一个节点分裂成两个或两个以上的子节点。子节点的创建增加了合成子节点的同质性。换句话说,我们可以说节点的纯度随着对目标变量得尊重而增加。决策树在所有可用的变量上分裂节点,然后选择产生最均匀的子节点的分裂。

算法的选择也要基于目标变量的类型。让我们来看看这四个最常用的决策树算法:

基尼系数

基尼系数表示,如果总量是纯粹的,我们从总量中随机选择两项,那么这两项必须是同一级别的,而且概率为1。

①它影响着无条件的分类目标变量的“成功”或“失败”。

②它只执行二进制分裂。

③基尼值越高同质性越高。

④CART (分类树和回归树)使用基尼系数方法创建二进制分裂。

通过计算尼基系数来产生分裂的步骤:

①计算子节点的尼基系数,使用公式计算成功和失败的概率的平方和 (p ^ 2 + ^ 2)。

②使用加权尼基系数计算每个节点的分裂。

例子:参照上面使用的例子,我们要基于目标变量(或不玩板球)隔离学生。在下面的快照中,我们使用了性别和班级两个输入变量。现在,我想使用基尼系数确定哪些分裂产生了更均匀的子节点。

一个基于树的建模的完整的教程(R & Python)第二部分

性别节点:

①计算,女性子节点的基尼=(0.2)*(0.2)+(0.8)*(0.8)= 0.68

②男性子节点的基尼=(0.65)*(0.65)+(0.35)*(0.35)= 0.55

③为性别节点计算加权基尼=(10/30)* 0.68 +(20/30)* 0.55 = 0.59

班级节点的相似性:

①IX子节点的基尼=(0.43)*(0.43)+(0.57)*(0.57)= 0.51

②X子节点的基尼=(0.56)*(0.56)+(0.44)*(0.44)= 0.51

③计算班级节点的加权基尼=(14/30)* 0.51 +(16/30)* 0.51 = 0.51

以上,你可以看到基尼得分在性别上高于班级,因此,节点分裂将取于性别。

l卡方

这是一个用来找出子节点和父节点之间差异的统计学意义的算法。我们测量它的方法是,计算观察和期望频率与目标变量之间标准差的平方和。

①它影响到无条件分类目标变量的“成功”或“失败”。

②它可以执行两个或更多的分裂。

③卡方值越高,子节点和父节点之间差异的统计学显著性越明显。

④每个节点的卡方检验都是使用公式计算。

⑤卡方=((实际-预期)^ 2 /预期)^ 1/2

⑥它生成树称为CHAID(卡方自动交互检测器)

卡方计算节点分裂的步骤:

①通过计算成功与失败的偏差为单个节点计算卡方。

②通过计算每个节点成功和失败的卡方和来计算卡方分割点。

例子:让我们使用上面用来计算基尼系数的例子。

性别节点:

①首先我们填充女性节点,填充的实际内容为“打板球”和“不打板球”,这些分别为2和8。

②计算期望值“打板球”和“不打板球”,这对双方而言都是5,因为父节点有相同的50%的概率,我们应用相同的概率在女性计数上(10)。

③通过使用公式计算偏差,实际—预期。实际上就是“打板球”(2 - 5 = -3),“不打板球”(8 - 5 = 3)。

④计算卡方节点的“打板球”和“不打板球”的公式=((实际-预期)^ 2 /预期)^ 1/2。您可以参考下表计算。

⑤遵循同样的步骤计算男性节点卡方值。

⑥现在添加所有卡方值来计算卡方性别分裂点。

一个基于树的建模的完整的教程(R & Python)第二部分

班级节点:

执行以上类似的步骤来计算班级分裂点,你就会得出下面的表。

一个基于树的建模的完整的教程(R & Python)第二部分

以上,你也可以看到,卡方识别性别分裂比班级更重要。

l信息增益

看看下面的图片,你认为哪个节点容易描述。我相信你的答案是C,因为它需要更少的信息,所有的值是相似的。另一方面,B需要更多的信息来描述它,A需要最大的信息。换句话说,我们可以说,C是一个纯粹的节点,B是较不纯粹的,而A是最不纯粹的。

一个基于树的建模的完整的教程(R & Python)第二部分

现在,我们可以提出一个结论:较不纯粹的节点需要更少的信息来描述它,而纯粹度越高需要的信息越多。定义这一个系统的无序程度的信息理论称为熵。如果样品完全均匀,那么熵为0,如果样品是同等划分(50% - 50%),那么它的熵为1 。

熵可以使用公式计算:

一个基于树的建模的完整的教程(R & Python)第二部分

这里的p和q分别为成功和失败的概率节点。熵也用于分类目标变量。选择相比父节点和其他节点分裂最低的熵。熵越小越好。

计算熵分割的步骤:

①计算父节点的熵。

②计算每个独立节点分割的熵,并计算分裂中所有子节点得加权平均值。

例子:我们用这种方法来为学生例子确定最佳分割点。

①父节点的熵= - (15/30)log2(15/30)-(15/30)log2(15/30)= 1。1表示这是一个不纯洁的节点。

②女性节点的熵= -(2/10)log2(2/10)-(8/10)log2(8/10)= 0.72和男性节点,-(13/20)log2(13/20)(7/20)log2(7/20)= 0.93

③子节点性别分割的熵=加权熵=(10/30)* 0.72 +(20/30)* 0.72 = 0.86

④IX班级子节点的熵,-(6/14)log2(6/14)(8/14)log2(8/14)= 0.99 X班级子节点,-(9/16)log2(9/16)(7/16)log2(7/16)= 0.99。

⑤班级分割的熵=(14/30)* 0.99 +(16/30)* 0.99 = 0.99

以上,你可以看到性别分裂的熵在所有之中是最低的,所以这个树模型将在性别上分裂。我们可以得出信息熵作为1 -熵。

l减少方差

到现在,我们已经讨论了分类目标变量的算法。减少方差算法用于连续目标变量(回归问题)。该算法使用标准方差公式选择最佳分裂。选择方差较低的分裂作为总量分裂的标准:

一个基于树的建模的完整的教程(R & Python)第二部分

以上X指的是值,X是实际得值,n是值的数量。

方差的计算方法:

①为每个节点计算方差。

②为每个节点方差做加权平均。

例子:——让我们分配数值1为打板球和0为不玩板球。现在按以下步骤确定正确的分割:

①方差为根节点,这意味着值是(15 * 1 + 15 * 0)/ 30 = 0.5,我们有15个 1和15个 0。现在方差是((1 - 0.5)^ 2 +(1 - 0.5)^ 2 +…。+ 15倍(0 - 0.5)^ 2 +(0 - 0.5)^ 2 +…)/ 30的15倍,这可以写成(15 *(1 - 0.5)^ 2 + 15 *(0 - 0.5)^ 2)/ 30 = 0.25

②女性节点的平均值=(2 * 1 + 8 * 0)/ 10 = 0.2和方差=(2 *(1 - 0.2)^ 2 + 8 *(0 - 0.2)^ 2)/ 10 = 0.16

③男性节点的平均值=(13 * 1 + 7 * 0)/ 20 = 0.65,方差=(13 *(1 - 0.65)^ 2 + 7 *(0 - 0.65)^ 2)/ 20 = 0.23

④分割性别的方差=子节点的加权方差=(10/30)* 0.16 +(20/30)* 0.16 = 0.21

⑤IX班级节点的平均值=(6 * 1 + 8 * 0)/ 14 = 0.43,方差=(6 *(1 - 0.43)^ 2 + 8 *(0 - 0.43)^ 2)/ 14 = 0.24

⑥X班级节点的平均值=(9 * 1 + 7 * 0)/ 16 = 0.56和方差=(9 *(1 - 0.56)^ 2 + 7 *(0 - 0.56)^ 2)/ 16 = 0.25

⑦分割性别的方差=(14/30)* 0.24 +(16/30)* 0.25 = 0.25

以上,你可以看到性别分割方差比父节点低,所以分割会发生在性别变量。

到这里,我们就学会了基本的决策树和选择最好的分裂建立树模型的决策过程。就像我说的,决策树可以应用在回归和分类问题上。让我们详细了解这些方面。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多