常见的id类特征有用户特征user_id,物品特征item_id等,通常来说这类特征都是人为按顺序编码的特征,并不能反映用户或者物品的自然属性特征。但是在很多推荐相关的文章,都有提到使用这类特征,而且似乎还非常重要,并且除了推荐系统,在计算广告、反欺诈风控模型里都有成功的案例。这是为什么呢?
一、ID类特征为什么会有用?
加入id类特征,比如用户的id,相当于特征里多了一个独有的用户id,那么这里的其它特征也就是代表的是这个用户的独有特征。如果这个人对100个电影评价过,那么就会有该用户的100条样本,根据这100条样本模型就能大概学出该用户的匹配模式,在预测的时候如果发现还是该用户,模型就知道他喜欢什么了。
1)可以极大提高模型的个性化能力和实际效果,甚至可以对抗热度穿透现象。
2)可以使得在学习过程中,每个人的信号更合理地影响整体模型,使得模型泛化能力更好
3)可以使得模型能够对每个id有更细粒度的排序能力,使得模型的个性化效果更好
4)某些人就是喜欢做某些事情,并且没有什么可解释性,通过id可以绑定这些特殊情况。
二、怎么用?
通常是把id类特征作为类别特征,然后one-hot展开,接着再与其它特征进行交叉使用,只有交叉使用才能发挥id类特征的重要作用。下图是电影数据movielens中id的one-hot展开:
在FM中将用户id和物品id采用one-hot展开作为特征列,还能分别生成用户的embedding向量和物品的embedding向量。
关于FM实现movielens的简单样例请参考github: https://github.com/gczr/FM
参考连接:https://www.zhihu.com/question/34819617