首页 文章

在sklearn集合和树中连续变量的分组

提问于
浏览
5

谁能告诉我sklearn(Python)中的合奏(如Random Forest,Gradient Boosting,Adaboost)和树(如决策树)如何处理连续变量?在建造树木时,它们是否被视为每个单独的 Value ?或者他们是否自动装箱?如果它们被装箱 - 那么遵循的逻辑是什么 . 如果他们没有装箱,我相信我错过了什么 . 应该有一些智能分箱可用(内置?),它将根据类分布将变量值分类到箱中(至少在二进制分类的情况下)

深入:当我加载我的arff(高度偏斜的数据集中的数百万行和几百个特征),在weka中,并滚动变量/目标(二进制)图,我可以看到他们中的许多都有强大的垃圾箱(目标为正的区域) . 这些箱子,即> = x <= y是否由sklearn中提到的上述型号自动拾取?参见附图(如果你能看到它在变量/目标图中有6条非常细的红线)

对此有任何见解真的很感激

问候

enter image description here

2 回答

  • 5

    使用默认设置(非随机分割),每次通过拆分数据集生成决策或回归树时,所考虑的数据集的部分将按照所考虑的每个要素的值进行排序(随机排列)林或ExtraTrees林,每次都可以随机选择功能) . 然后将每个相邻对的特征值的平均值视为候选分割,除非该对小于1e-7(当前在代码中硬连线的任意常数) . 根据基尼/熵/其他拆分标准,最佳拆分用于将数据集拆分为具有 f < (f[i] + f[j]) / 2 的那些点和具有更高值 f 的点 .

    I.o.w.,没有进行明确的分箱 .

    (我实际上并不是决策树专家,但我确实在scikit-learn实现上工作,特别是我通过为它编写更快的排序算法来优化分割代码 . )

  • 1

    我不知道scikit-learn究竟做了什么,但我怀疑没有binning,它只是使用连续值 . 在决策树的最简单形式中,您测试的规则对于每个变量和每个观察到的变量实现都只是x_j> = x_ij .

    documentation(参见1.8.7数学公式)表明他们使用这种简单的方法 . 只测试每个变量的每个(或可能是某个子集)可能的阈值 .

相关问题