我一直在使用我的java实现关注cart算法的本指南,并且想知道是否有更快的方法来选择最佳分割。
指南建议采取以下步骤:
for each feature:
for each value of the feature:
make a split
remember GINI score if a split is less than previous min GINI
是否有可能对此程序进行任何修改以增加本地准确度的速度,但这不会导致整体精度下降?虽然这可以很容易地并行化,但是循环每个属性的成本仍然很高,而且选择单个分割是值得的。
答案 0 :(得分:1)
是的,这可以加快:
For each feature
Sort data by feature
Calculate cumulative counts of different values of target
Calculate reverse cumulative counts of different values of target
At each feature value
Calculate gini value based on cumulative counts
Keep the maximum
如果要素采用一组有限的值,则可以进一步优化。您可以聚合数据并使用聚合数据进行拆分计算,而不是对数据进行排序。
如果要素是分类的,则遵循相同的过程,但按功能按二进制目标的目标密度排序。如果您有超过2个目标值,这会变得有点棘手。