数据编码方式

one-hot

one-hot编码是将类别型特征转换成向量的一种编码方式。由于类别型特征不具备数值化意义,如果不进行one-hot编码,无法将其直接作为特征向量的一个维度使用。举例来说,某样本有三个特征,分别是星期、性别和城市,用[Weekday=Tuesday,Gender=Male,City=London]表示。由于模型的输入特征向量仅可以是数值型特征向量,无法把“Tuesday”这个字符串直接输入模型,需要将其数值化,最常用的方法就是将特征做one-hot 编码.
Weekday=Tuesday:[0,1,0,0,0,0,0]
Gender=Male:[0,1]
City=London:[0,0,1,0,…,0,0]
Weekday这个特征域有7个维度,Tuesday对应第2个维度,所以把对应维度置为1。Gender分为Male和Female,one-hot编码就有两个维度,City特征域同理。

虽然one-hot 编码方式可以将类别型特征转变成数值型特征向量,但是会不可避免地造成特征向量中存在大量数值为0的特征维度。这在互联网这种海量用户场景下尤为明显。假设某应用有1亿用户,那么将用户id进行one-hot编码后,将造成1亿维特征向量中仅有1维是非零的。这是造成互联网模型的输入特征向量稀疏的主要原因

multi-hot

对历史行为序列类、标签特征等数据来说,用户往往会与多个物品产生交互行为,或者被打上多个同类别标签,这时最常用的特征向量生成方式就是把其转换成multi-hot编码。举例来说,某电商网站共有10000 种商品,用户购买过其中的10 种,那么用户的历史行为数据就可以转换成一个10000 维的数值向量,其中仅有10个已购买商品对应的维度是1,其余维度均为0,这就是multi-hot编码。

reference

  1. 《深度学习推荐系统》——王喆