监督学习中连续变量的分箱处理:sklearn中的集成方法和树模型

请问在sklearn(Python)中,集成方法(如随机森林、梯度提升、Adaboost)和树模型(如决策树)是如何处理连续变量的?它们在构建树时是否将每个连续值视为独立的值?还是会自动进行分箱处理?如果进行了分箱,那么遵循的是什么逻辑?如果没有分箱,我肯定是错过了什么。应该有一些智能的分箱方法(内置的?)可以根据类别分布对变量值进行分箱(至少在二元分类的情况下)。

深入探讨:当我在weka中加载我的arff文件(数百万行和数百个特征的严重偏斜数据集)并浏览变量/目标(二元)图时,我可以看到其中许多变量有明显的分箱区域(目标为正的区域)。这些分箱,即 >=x <=y,是否会被sklearn中提到的模型自动识别?请看附件图片(如果您能看到的话,变量/目标图中有六个条形的非常细的红色线条)

对于任何见解,我将非常感激

此致

enter image description here


回答:

在默认设置(非随机分割)下,每次构建决策树或回归树时,通过分割数据集来生长树,考虑中的数据集部分会按每个待考虑特征的值进行排序(在随机森林或ExtraTrees森林中,每次可能随机选择特征)。然后,每对相邻特征值f[i], f[j]的平均值被视为候选分割点,除非这对值之间的差距小于1e-7(这是代码中当前硬编码的一个任意常数)。根据Gini/熵/其他分割标准,最佳分割点被用来将数据集分割成f < (f[i] + f[j]) / 2的点和f值更高的点。

换句话说,没有进行显式的分箱处理。

(我实际上不是决策树专家,但我确实参与了scikit-learn的实现,特别是我通过编写更快的排序算法优化了分割代码。)

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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