One-Hot 向量表示与分类变量的标签编码

数据挖掘 分类数据
2021-10-14 23:16:04

我的数据集中有一个字符串类型的分类变量。我需要将其转换为数值以进行进一步处理。我知道表示分类数据的标准方法是使用 one-hot 编码。但这会将变量的每个条目转换为向量。

sklearn 的 LabelEncoder 将每个条目转换为标量值。我意识到这是一个非常幼稚且可能愚蠢的问题,但哪种表示更常用,是否有偏见的原因?

2个回答

我能想到的主要区别是,使用 one-hot 编码将意味着所有字符串彼此之间的距离相同(汉明),而使用标量值意味着结果特征之间的距离将毫无意义(它可能将“红色”编码为 1,“蓝色”编码为 2,“绿色”编码为 3,但没有理由说明红色与蓝色相比与绿色更相似)。

何时使用标签编码与 one-hot 编码。

基于树的方法:

当分类特征是序数标签编码时,如果它保持正确的值顺序,可以带来更好的质量。在这种情况下,由树进行的拆分会将特征划分为“低于”和“高于”为此拆分选择的值的值。

非基于树的方法:

应使用 One-hot 编码或嵌入。除非标签编码和因变量之间存在线性关系,否则基于非树的方法将很难使用标签编码。

One-hot 编码具有大量值的分类特征会导致高内存消耗。您可以使用稀疏矩阵来处理这个问题。您还可以忽略很少见的类别子集,以减少新功能的数量。