这周看了推荐系统实战这本书,其中基本上介绍的比较全面,但是每一部分并没有十分深入,深入的精华全部都在下方的备注当中,备注中有很多的论文,可以进行进一步的学习。
首先回顾一下一些框架信息,在专门思考其中几个重要的部分:
1 根据用户的历史行为,表达过反馈的item进行item的预测,传统的itemCF
2 根据用户的历史行为,找到相似用户,进行预测, userCF
3 根据用户的喜好和个人信息,提取用户的特征,喜欢的物品的特征,进行预测。基本上就是建立模型的思路
用户自身的特征,1 比如年龄,性别,2 用户历史行为,时间和地理位置同样重要 3根据历史行为找到话题模型,喜欢的物品种类(可能涉及topic model)的部分,同时也需要提取物品的特征,比如物品的种类,属性。。。书中介绍到物品冷启动的时候也需要提取物品的特征,比如关键词向量,d={(e1,w1),(e2,w2)…}表示关键词和权重,权重信息可以利用TF-IDF进行计算。
在提取了特征信息之后如果是要计算两个物品的相似性,那么表达为特征向量,两个特征向量直接相乘,如果是想直接直接得到预估结果,比如直接根据ctr排序等,那么利用机器学习的模型,进行训练。
一般系统的特征是十分多的,最近做的一个实例大概涉及2000万+的特征信息,如果一个系统把所有特征都考虑不现实,通过配置文件进行配置很麻烦,一般是多个推荐引擎一起工作,在按照一定的权重和优先级进行组合。
一般分为用户的行为特征,从用户日志中进行行为提取,再进行行为特征转换,而对于属性特征,就可以直接根据信息转化为特征向量
B 生成初始化推荐列表
根据用户的特征,和线下计算完成的 特征-物品 的相关矩阵,进行转化得到相关推荐。 这里一个重点:这里一般会引入一个候选物品集合,也就是需要推荐的物品需要在候选集合当中。
如果用户对物品a产生了行为,候选列表中b希望被推荐,a比较流行,b不流行,那么,b在a中的相关性计算的分肯定不会靠前(一般也会有抑制流行度的方法),那么topN推荐的时候可能不会有b,推荐的都是不在推荐列表中的物品,那么如果在最后进行简单过滤,可能导致推荐商品会很少,所以在这里,就应该适当根据推荐列表,增加列表中物品的权重信息。
C 过滤模块
过滤到不满意的物品,比如,用户操作过的,质量很差的。。。
D 排名模块
1 新颖性 在推荐过程中,对热门的物品进行降权
2 多样性 对展现过的商品权重衰弱,通过根据用户的历史行为多挖掘主题,进行推荐
3 时间多样性 系统实时性 商品根据时间因子衰减
1 在CF的推荐过程中,一定要注意抑制物品,用户的活跃性因子。同时在计算相关性的时候,注意进行归一化操作 物品总是属于很多的类别,每个类别内部的物品的相似性也是不同的,所以最好类别进行归一化
2 隐语义模型 根据隐含特征联系用户的兴趣和物品,根据用户行为自动聚类 用户u与第k个隐含类的关系*第k个隐含类和物品i的关系 ,计算量比较大,如果不能先生成候选列表,不适合在实时应用,同时不好对结果进行解释
3 为模型抽样或者生成负样本的时候,尽量保持正负均衡,同时负样本尽量选择热门但是用户没有行为的
4 如何处理实时推荐系统的实时性问题
5 冷启动问题
用户冷启动问题,用户在注册的时候有基本信息,可以根据基本信息对用户分类,同时找到和用户特征f和物品i被具有特征f的用户喜欢的程度进行推荐,也可以在注册的时候先让用户显性地完成一些反馈操作,我记得像微博,lofter等都有这个过程
物品冷启动问题,简单的方法是将物品随机进行展示,那么会收集到一定的信息可以进行处理。最常用的方法是根据物品的内容生成关键词向量,根据关键词向量找到相似的物品,可以类似于CF的方法进行推荐,一般涉及到词语,那么就需要思考到同义词,LDA模型就可能需要
LDA包括3个个元素 文档,话题,词语通过收敛使词语组合为不同的话题,根据物品在话题上的分布,计算物品的相似性。计算分布相似性KL
6 通过给物品打标签,计算物品的标签分布,计算相似性,这里标签类似关键词,在计算权重的时候也可以引入ID-TFD进行优化
7 在做推荐的过程中,注意时间和地理位置的因素,注意一个物体的生命周期,系统的生命周期。在计算系统的时效性的时候,先计算物品的流行度,用物品的平均在线天数进行评估。再计算相邻T天时间,物品的流行度的相似性,获得系统的时效性
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/xietingcandice/article/details/46766383