min_impurity_decrease在sklearn中的定义是
如果这种拆分导致大于或等于此值的杂质减少,则节点将被拆分。
使用Iris数据集,并将min_impurity_decrease = 0.0
如果使用min_impurity_decrease = 0.1,我们将获得以下结果:
看看吉尼指数(杂质)= 0.2041的绿色方,为什么当我们把min_impurity_decrease =0.1时,基尼指数(杂质)左= 0.0,吉尼指数(杂质)右= 0.375,却没有分裂。
这是否意味着修剪所有的子节点,当修剪时,其父节点的gini指数将小于0.1?因为,如果是这样的话,为什么我们不修剪具有gini =0.487(大于0.1 )的第二级节点呢?
发布于 2020-01-12 08:58:03
史蒂夫,这个答复已经迟了,但在这里张贴,以防其他人遇到这个问题,并想知道更多关于最小杂质减少的信息。
得到了这里的最小杂质减少函数公式。公式的定义如下:
N_t / N * (impurity - N_t_R / N_t * right_impurity
- N_t_L / N_t * left_impurity)
其中N是样本的总数,N_t是当前节点的样本数,N_t_L是左子节点的样本数,N_t_R是右子节点的样本数。
N,N_t,N_t_R和N_t_L都是指加权和,如果sample_weight被传递的话。
因此,在您的示例中:
N_t = 26
N = 90
N_t_R = 4
N_t_L = 22
impurity = 0.2041
right impurity = 0.375
left impurity = 0
我计算出杂质减少为0.04,这不符合你指定的0.1的阈值。因此,在本质上,这个公式考虑了父节点在总树(N_t / N)中所占的比例,以及子节点的加权杂质减少。如果最终杂质减少小于最小杂质减少参数,则不进行拆分。
https://stackoverflow.com/questions/54812230
复制相似问题