您根本根本没有使用目标类变量。基尼杂质与所有其他杂质一样起作用,在分离后测量输出的杂质。您要做的是仅使用样本量来测量某些东西。
我尝试为您的案例得出公式。
为简单起见,假设您有一个二进制分类器。用表示测试属性,用表示具有值的类属性。Ç Ç +,Ç -ACc+,c−
拆分之前的初始基尼系数由
,其中是具有值的类数据点的比例变量。
一世(A )= 1 - P(一+)2- P(一-)2
P(A+)c+
现在,左节点的杂质为
其中是左子集的数据点在类变量中具有值比例等我(甲- [R )= 1 - P
I(Al)=1−P(Al+)2−P(Al−)2
I(Ar)=1−P(Ar+)2−P(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)(a−1,b)h(left)=1−(1/1)2−(0/1)2=0
h(right)=1−(a−1
h(parent)=1−(aa+b)2−(ba+b)2
h(right)=1−(a−1(a−1)+b)2−(b(a−1)+b)2
考虑到大于或等于(否则我们如何在左节点中分离出第一类的实例?),简化后,很容易看到右节点的gini索引的值小于a的值。父节点。0a0
现在,证明的最后阶段是结点,即在考虑由我们的数据决定的所有可能的分割点的同时,我们保留一个具有最小汇总基尼系数的点,这意味着我们选择的最优值小于或等于我证明的琐碎小事。得出的结论是,最终基尼系数将下降。
作为最后的结论,我们必须注意,即使各种拆分可以提供比父节点更大的值,我们选择的拆分将是其中最小的,也要小于父基尼索引值。
希望能帮助到你。