具有一个热编码变量的拆分机制(基于树/增强)

数据挖掘 决策树 xgboost 分类数据 助推 一热编码
2022-02-18 23:51:35

我正在使用 xgboost 并具有 25 个级别的分类无序特征。因此,当我应用一种热编码时,我有 25 列。这引入了很多稀疏性。更不寻常的是,我的特征重要性报告显示前 10 名中有 5 个热门编码列,其中一个出现在顶部。

我试图查看我的二进制类 (1, 0) 之间这些类别的百分比是否存在差异,但没有,所以我有点困惑为什么它为它们分配如此高的特征重要性。

我在网上读到,如果我们有一个具有 q 级别的分类变量,则树必须从 ((2^q/2)-1) 拆分中进行选择。对于虚拟变量,只有一个可能的拆分,这会导致稀疏性

我不确定我是否理解这一点,假设我有一个名为 color: red, green, blue,yellow 的列,并且我实现了一个热编码,所以发生的分割数是 2^4/2 -1 = 3?如果这增加了,例如 2^25/2 -1,更多的分割意味着树更有可能为手头的数据找到一个“好的分割”并导致过度拟合?但我不明白的是,这种分裂是如何与虚拟变量进行的。这个等式是否适用于一个热内含变量。

我是否正确解释了这一点?

统计学习的来源元素:在此处输入图像描述

https://towardsdatascience.com/one-hot-encoding-is-making-your-tree-based-ensembles-worse-heres-why-d64b282b5769#:~:text=For%20every%20tree%2Dbased%20algorithm,a %20feature%20and%20a%20value.&text=%20trees%20generally%20tend%20to,values%20(0%20or%201)

1个回答

我在网上读到,如果我们有一个具有 q 级别的分类变量,则树必须从 ((2^q/2)-1) 拆分中进行选择。对于虚拟变量,只有一个可能的拆分,这会导致稀疏性

我不确定我是否理解这一点,假设我有一个名为 color: red, green, blue,yellow 的列,并且我实现了一个热编码,所以发生的分割数是 2^4/2 -1 = 3?。 ..

您的操作顺序错误(可能是因为您在上面引用的“((2^q/2)-1)”具有误导性,但与您图片中的 ESL 引用相比):它是 种可能的分割,即:( 红绿蓝)vs(黄) (红绿黄)vs(蓝) (红蓝黄)vs(绿) (绿蓝黄) vs (红) (红绿) vs (蓝黄) (红蓝) vs (绿黄) (红黄) vs (绿蓝)

2421=2411=7







如果这增加了,例如 2^25/2 -1,更多的分割意味着树更有可能为手头的数据找到一个“好的分割”并导致过度拟合?...

确实存在更多可能的拆分,这增加了模型的容量,因此可能会增加过度拟合。如果某些级别非常罕见,则尤其令人担忧,如果您有大量数据,则更少。

但我不明白的是,这种分裂是如何与虚拟变量进行的。这个等式是否适用于一个热内含变量。

不,当您对此类特征进行一次性编码时,树现在必须(一次)仅在其中一个虚拟变量上进行拆分。因此,考虑到所有个级别的新指标变量,您正好个拆分。在您的示例中,它们是上面给出的前四个拆分:vs vs vs vsqq
is_yellow=0is_yellow=1
is_blue=0is_blue=1
is_green=0is_green=1
is_red=0is_red=1