CTR预估:(标签-权重)列表类特征怎么输入到模型?

问题:

要做一个CTR预估模型;

通过之前的数据挖掘,我得到了用户对标签的偏好数据:

[('标签1', 0.8), ('标签2', 0.65), ('标签3', 0.32), ('标签4', 0.05)]

列表的每一个元素包含两个分量,分别是标签、偏好权重;

问题是,这样的一个特征,怎样输入到模型?

我只知道,对于标签1、标签2、标签3这样是分类特征,可以用one hot编码;

然而我不知道这里的权重怎么使用呢?,我想到2种方法:1、先给标签1、标签2、标签3做one-hot编码,然后自己找到每个数字为1的位置,把数字1替换成权重;2、对所有标签映射到一个大数组,找到标签在数组的下标,设置为权重,其他的都是0;

这两种方法哪种更好,或者有其他方法吗?

这个问题也有其他场景:用户的历史行为比如播放的ID列表,统计会得到:

[播放itemid,频次]的列表,怎么作为特征输入到模型?

方法:

1、可以直接把权重作为那一维度的特征吧,就是比如favori_entity_延禧攻略,这个特征,特征值就是weight

2、可以看成特殊的one-hot, 把one-hot里面的1用weight代替,作为一个连续值特征

一种做法,打平成单独维度特征

如果是tensorflow,问题的答案在这个文章:
https://zhuanlan.zhihu.com/p/41663141
超级的详细,1、单个特征有有多分类怎么处理,比如[('cat_a','cat_b), (cat_b, cat_c)];2、如果是加权cat列表怎么办,比如用户的tag偏好列表:[('IT', 0,8), ('音乐',0.6)];

对于第一个问题,用cat_vocu_list加上Indicator_column,第二个,用weighted_categorical_column

相关推荐

Leave a Comment