将分类特征映射到二元指标特征

数据挖掘 机器学习 分类数据 初学者 编码 k-nn
2021-10-07 21:06:12

我目前正在阅读 Daumé 的机器学习入门书籍(第 3 章,第 30 页),在讨论将具有“n”个可能值的分类特征映射到“n”个二元指标特征时,提出了以下问题:

将具有 n 值的分类特征映射到 log2(n) 二进制特征是一个好主意吗?

为什么不这样呢,看看使用更少的功能可以节省多少资源?这种方法是否取决于正在使用的模型?

1个回答

像这样压缩数据可以节省内存空间,但它会增加 one-hot 编码没有的错误关系。

让我们考虑一个具有 A、B、C、D 级别的分类特征,您决定将其分别编码为 00、01、10、11。

在线性模型中,您只能获得三个参数(一个常数,每个新特征一个);您可以拟合“正确的”参数来命中 A、B 和 C,但随后修复这些参数决定了在 D 上发生的情况,并且在那里可能非常不合适。(您现在基本上假设 (BA)+(CA)=DA。)

在 k-NN 中,one-hot 编码中任意两层之间的距离都相同,为 1。在这种编码中,A 和 B 之间的距离为 1,但 A 和 D 之间的距离为2.

在 SVM 中,集合 {A,D} 与 {B,C} 不可分离。使用 one-hot 编码,一切都是可分离的。

在树模型中,使用原始分类允许树将级别的任何子集与其他子集分开;使用这种二进制编码会强制树分裂 (AB|CD) 或 (AC|BD) [缺少 (AD|BC)];使用 one-hot 编码强制树分裂 (A|BCD) 或 (B|ACD) 或 (C|ABD) 或 (D|ABC)。树可以随后进行不同的拆分,并最终恢复任意拆分,但贪婪构建的树可能永远无法做到这一点。

请特别注意,在最后三个模型中,我们使 A 和 D 彼此“更加不同”,超出了我们可能有理由相信的程度。在这个小例子中,渔获量相当小/很少,但随着尺寸的增加,这些往往会变得更加夸张。

现在,它可能仍然值得做,但这些都是需要考虑的事情。