一种用于大量值的热编码

数据挖掘 机器学习 数据挖掘 分类 数据集 分类数据
2021-10-07 10:43:16

如果分类变量可以取的值的数量很大,我们如何使用一种热编码?

就我而言,它是 56 个值。因此,按照通常的方法,我必须在训练数据集中添加 56 列(56 个二进制特征),这将极大地增加复杂性,从而增加训练时间。

那么我们如何处理这种情况呢?

4个回答

如果你真的很在意维度的数量,你仍然可以在你的一次热编码之后尝试应用降维算法,例如 PCA(主成分分析)或 LDA(线性判别分析)。

但是要知道,“56 个特征”并不是很大,拥有数千、数百万甚至数十亿个特征在行业中非常普遍。

如果您有一些类别与大多数类别相比所占比例较小,则可以尝试通过将它们标记为相同来减少 56 个虚拟结果特征的维度。

这取决于您正在处理的问题。如果分类变量的数量很大,最好使用标签编码。但是标签编码应该是有意义的,即彼此接近的类别应该得到相似的标签。假设您正在创建一个具有 feature 的模型Month但是您的目标变量有一个周期性,即每 x 个月,比如 3 个月,趋势是相似的。现在使用标签 1, 2, ... 12 几个月没有意义,相反,最好使用 0, 1, 2, 0, 1, 2.... 这样的标签。所以Jan是0,Feb是1,Mar是2,又Apr是0,依此类推。

您可以使用LabelEncoderofsklearn.preprocessing来解决这个问题。但它并没有像我提到的那样处理语义。为此,您可以进行一些手动标签编码。

当有大量分类变量时,建议做一个与休息。