多选分类特征:one-hot 编码的替代方案?

数据挖掘 编码 分类编码
2022-03-07 06:15:47

我正在构建一个模型来根据我们拥有的关系数据来预测客户的生命周期价值。用户表有一堆可能具有预测性的一对多子表。大体简化后,子功能可归结为:

  • 他们过去购买的物品类别列表
  • 他们点击的广告中的主要颜色列表
  • 等等等等

在每种情况下,明显的特征都包含来自分类变量的约 0-10 个选项的列表。我有几个这样的特性,其中一些有多达 10k 的离散值,所以 one-hot 编码会变得非常广泛、非常快。

顺便说一句:如果这种“标签列表功能”有一个艺术术语,我指的是“选择许多分类”,请告诉我。

问题:是否有适用于多选分类特征的密集编码方案?

2个回答

如果您的算法基于梯度下降优化,您可以使用嵌入,这是离散元素的密集表示空间。

大多数深度学习框架都支持嵌入,例如 pytorch 或 tensorflow。

更新:您想要多个离散值这一事实并不能阻止使用嵌入的可能性:您可以将所有向量加在一起形成一个值。最直接的方法是使列表具有恒定长度(等于所有列表中元素的最大数量,或合理的最大值),用“填充”项填充不需要的位置。如果您想考虑元素的顺序外观,而不是将向量添加在一起,您可以在嵌入向量上应用卷积层或 LSTM。

在类别编码器库中有很多方法可以对分类特征进行编码,您可以找到其中的许多方法。

考虑到您的数据,似乎更有希望的是目标编码