问题:
要做一个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