子节点的Gini减少和Gini杂质


15

我正在研究随机森林的基尼特征重要性度量。因此,我需要计算节点杂质的基尼系数降低。这是我这样做的方式,它导致与定义的冲突,表明我在某处一定是错误的... :)

对于一个二叉树,给定左右子节点的概率,我可以计算出节点的基尼杂质:n

i(n)=1pl2pr2

基尼值下降:

Δi(n)=i(n)pli(nl)pri(nr)

因此,对于在一个节点上有110个观察值的示例:

- node (110)
   - left (100)
      - left_left (60)
      - left_right (40)
   - right (10)
      - right_left (5)
      - right_right (5)

我会像这样计算节点的Gini减少量:

i(left)=1(60/100)²(40/100)²=0.48i(right)=1(5/10)²(5/10)²=0.50i(node)=1(100/110)²(10/110)²=0.16

但是遵循Breiman的定义(或关于CV的以下答案:使用CART时如何测量/排列“可变重要性”,但我没有获得参考书的权利),后代的杂质标准应小于父代节点:

基尼重要性
每次在变量m上分割节点时,两个后代节点的基尼杂质准则都小于父节点。将森林中所有树木上每个变量的基尼系数加起来得出的快速变量重要性通常与排列重要性度量非常一致。

因为否则会导致负基尼系数下降...

Δi(node)=i(node)(100/110)i(left)(10/110)i(right)=0.32

因此,如果有人能说出我错了,我将不胜感激,因为我好像错过了这里明显的事情……

Answers:


16

您根本根本没有使用目标类变量。基尼杂质与所有其他杂质一样起作用,在分离后测量输出的杂质。您要做的是仅使用样本量来测量某些东西。

我尝试为您的案例得出公式。

为简单起见,假设您有一个二进制分类器。用表示测试属性,用表示具有值的类属性。Ç Ç +Ç -ACc+,c

拆分之前的初始基尼系数由 ,其中是具有值的类数据点的比例变量。

I(A)=1P(A+)2P(A)2
P(A+)c+

现在,左节点的杂质为 其中是左子集的数据点在类变量中具有值比例等- [R = 1 - P

I(Al)=1P(Al+)2P(Al)2
I(Ar)=1P(Ar+)2P(Ar)2
P(Al+)Ac+

现在,GiniGain的最终公式为

GiniGain(A)=I(A)pleftI(Al)prightI(Ar)
其中是左子集或的实例比例(左子集中有多少个实例除以的实例总数。pleft#|Al|#|Al|+#|Ar|A

我觉得我的记法可以改善,我将在以后有更多时间时观看。

结论

仅使用数量的数据点是不够的,杂质意味着一个特征(测试特征)能够很好地再现另一个特征(类特征)的分布。测试特征分布会产生您使用的数字(如何左移,如何右移),但是公式中未使用类特征的分布。

以后编辑-证明为什么减少

现在我注意到我错过了一部分,它证明了为什么子节点上的gini索引总是小于父节点上的基尼索引。我没有完整的证明或经过验证的证明,但我认为这是有效的证明。对于与该主题相关的其他交互内容,您可以查看技术说明:拆分条件的一些属性-Leo Breiman。现在它将遵循我的证明。

假设我们是在二进制的情况下,并且在一个节点中的所有值可以用一对完全描述与的含义第一类的实例,和的第二类的实例。我们可以说比在父节点中有实例。(a,b)ab(a,b)

为了找到最佳分割,我们根据测试功能对实例进行排序,然后尝试所有可能的二进制分割。按给定功能排序的实际上是实例的排列,其中类以第一类或第二类的实例开始。在不失去一般性的前提下,我们将假定它以第一类的实例开始(如果不是这种情况,我们将使用相同的计算得出镜像证明)。

要尝试的第一个拆分是在左侧和右侧实例中。如何将左右子节点的那些可能候选者的基尼系数与父节点进行比较?显然在左边我们有。因此,在左侧,我们的基尼系数值较小。正确的节点怎么样?- 1 (1,0)(a1,b)h(left)=1(1/1)2(0/1)2=0

hright=1a1

h(parent)=1(aa+b)2(ba+b)2
h(right)=1(a1(a1)+b)2(b(a1)+b)2

考虑到大于或等于(否则我们如何在左节点中分离出第一类的实例?),简化后,很容易看到右节点的gini索引的值小于a的值。父节点。0a0

现在,证明的最后阶段是结点,即在考虑由我们的数据决定的所有可能的分割点的同时,我们保留一个具有最小汇总基尼系数的点,这意味着我们选择的最优值小于或等于我证明的琐碎小事。得出的结论是,最终基尼系数将下降。

作为最后的结论,我们必须注意,即使各种拆分可以提供比父节点更大的值,我们选择的拆分将是其中最小的,也要小于父基尼索引值。

希望能帮助到你。


非常感谢,您打开了我的大脑……实际上,由于我正在处理回归树,因此使用目标类变量似乎不如单纯的分类任务那么明显。但这现在完全有意义。
雷米·梅里森(RemiMélisson)

我更新了答案以包含缺少的部分。
rapaio 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.