one-hot 编码与虚拟编码的问题

机器算法验证 回归 多重回归 分类数据 多类
2022-01-18 23:00:50

我知道具有 k 个级别的分类变量应该在虚拟编码中使用 k-1 个变量进行编码(对于多值分类变量也是如此)。我想知道对于不同的回归方法,主要是线性回归、惩罚线性回归(Lasso、Ridge、ElasticNet)、基于树的(随机森林),单热编码(即使用 k 变量)比虚拟编码有多少问题,梯度提升机)。

我知道在线性回归中会出现多重共线性问题(即使在实践中我已经使用 OHE 拟合线性回归而没有任何问题)。

但是,是否需要在所有这些中使用虚拟编码?如果使用 one-hot 编码,结果会有多错误?

我的重点是在具有多个(高基数)分类变量的回归模型中进行预测,因此我对置信区间不感兴趣。

3个回答

表示具有的分类变量的问题k水平与k回归中的变量是,如果模型也有一个常数项,那么这些项将是线性相关的,因此模型将无法识别。例如,如果模型是,则参数向量的任何选择 . 因此,尽管软件可能愿意为您提供这些参数的估计值,但它们并不是唯一确定的,因此可能不会很有用。μ=a0+a1X1+a2X2X2=1X1(β0,β1,β2)(β0+β2,β1β2,0)

惩罚将使模型可识别,但鉴于上述情况,冗余编码仍会以奇怪的方式影响参数值。

冗余编码对决策树(或树的集合)的影响可能是相对于其他特征而言过重,因为它用一个额外的冗余变量表示,因此将比其他情况更频繁地选择它分裂。

我觉得这个问题的最佳答案隐藏在@MatthewDrury 的评论中,其中指出存在差异,您应该在任何正则化方法中使用看似多余的列。@MatthewDrury 的理由是

[在正则化回归中],截距没有受到惩罚,因此如果您将某个级别的效果推断为不属于截距的一部分,那么很难说您对所有级别都进行了同等的惩罚。相反,始终包括所有级别,因此每个级别都关于惩罚是对称的。

我认为他说得有道理。

Kodiologist 有一个很好的答案(+1)。One-hot encoding 与 dummy encoding 编码方法相同,在设计矩阵方面是在相同的空间中,具有不同的基础。(虽然 one-hot 编码有更多的列)

因此,如果您关注的是准确性而不是可解释性。两种编码方法没有区别。