码迷,mamicode.com
首页 > 其他好文 > 详细

推荐系统-实战总结

时间:2015-07-06 00:02:43      阅读:567      评论:0      收藏:0      [点我收藏+]

标签:推荐系统   引擎结构   算法总结   

推荐系统实战


这周看了推荐系统实战这本书,其中基本上介绍的比较全面,但是每一部分并没有十分深入,深入的精华全部都在下方的备注当中,备注中有很多的论文,可以进行进一步的学习。


首先回顾一下一些框架信息,在专门思考其中几个重要的部分:

3种联系用户和item的推荐方式:

1 根据用户的历史行为,表达过反馈的item进行item的预测,传统的itemCF

2 根据用户的历史行为,找到相似用户,进行预测, userCF

3 根据用户的喜好和个人信息,提取用户的特征,喜欢的物品的特征,进行预测。基本上就是建立模型的思路

    用户自身的特征,1 比如年龄,性别,2 用户历史行为,时间和地理位置同样重要 3根据历史行为找到话题模型,喜欢的物品种类(可能涉及topic model)的部分,同时也需要提取物品的特征,比如物品的种类,属性。。。书中介绍到物品冷启动的时候也需要提取物品的特征,比如关键词向量,d={(e1,w1),(e2,w2)…}表示关键词和权重,权重信息可以利用TF-IDF进行计算。

    在提取了特征信息之后如果是要计算两个物品的相似性,那么表达为特征向量,两个特征向量直接相乘,如果是想直接直接得到预估结果,比如直接根据ctr排序等,那么利用机器学习的模型,进行训练。


一般系统的特征是十分多的,最近做的一个实例大概涉及2000万+的特征信息,如果一个系统把所有特征都考虑不现实,通过配置文件进行配置很麻烦,一般是多个推荐引擎一起工作,在按照一定的权重和优先级进行组合。


推荐系统的结构:

A  用户特征

    一般分为用户的行为特征,从用户日志中进行行为提取,再进行行为特征转换,而对于属性特征,就可以直接根据信息转化为特征向量


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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!