分类和回归树 – 使用GINI计算最优分割

我在我的Java实现中遵循了这个关于cart算法的指南,并想知道是否有更快的方法来选择最优分割。

指南建议以下步骤:

       对于每个特征:          对于该特征的每个值:             进行分割             如果分割的GINI得分小于之前的最小GINI,则记住该GINI得分

是否可以对这个过程进行修改,以牺牲局部精度来提高速度,但不会导致整体精度下降?虽然这可以很容易地并行化,但遍历每个属性及其值以选择单一分割仍然是成本高昂的。


回答:

是的,可以加速这个过程:

对于每个特征    按特征排序数据    计算目标不同值的累积计数    计算目标不同值的反向累积计数    在每个特征值处         根据累积计数计算gini值         保留最大值

如果特征取值有限,可以进一步优化。如果不排序数据,你可以聚合数据并使用聚合后的数据进行分割计算。

如果特征是分类变量,你可以遵循相同的过程,但按二元目标的目标密度对特征进行排序。如果你有超过两个目标值,这会变得稍微复杂一些。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注