推荐系统小结
2015-08-19 15:23
176 查看
推荐系统(RecSys)作为电子商务中一个很火的应用,主要是为了帮助用户发现可能感兴趣的东西,这种就叫做个性化推荐系统;而广告商还可以利用结果将内容投放给可能会对它们感兴趣的用户,这就成了个性化广告。比较著名的推荐系统有亚马逊,被RWW(读写网)称为“推荐系统之王”,你从亚马逊买了一本书以后,会发现它会经常向你的邮箱发一些相关的书籍,这个有时比较恼人,呵呵;此外还要电影和视频网站,像YouTube和Hulu等会美国比较著名的视频网站;个性化音乐网络电台,像国际的Pandora和Last.fm以及国内的豆瓣电台;社交网络,如Facebook等;个性化阅读,如GoogleReader等;个性化邮件和个性化广告等。
而动态推荐系统的架构如下:
关于推荐系统的架构,这几篇文章写得不错,这里mark一下。
推荐系统的架构,
http://www.cnblogs.com/kobedeshow/p/3569525.html?utm_source=tuicool
淘宝推荐系统,
http://www.biaodianfu.com/taobao-recommendation-system.html?utm_source=tuicool
InfoQ上关于Hulu的视频推荐系统架构经验,
Hulu推荐系统构建经验谈,
http://www.infoq.com/cn/presentations/hulu-recommendation-system-construction-experiences/
− 协同过滤:用户的行为数据,像点击、评分、购买等;
− 内容过滤:用户内容属性和物品内容属性;
− 社会化过滤:用户之间的社交网络关系,如朋友、关注关系等。
按照模型划分,主要有以下三种:
− 最近邻模型:基于用户/物品的协同过滤算法;
− Latent Factor Model:基于矩阵分解的模型;
− 图模型:二分图模型,社会网络图模型等。
除了推荐系统自身的问题,像冷启动、数据的稀疏性问题等,还有一个需要关注的问题,就是推荐系统的时间效应问题,比较常见的时间效应问题主要反映在用户兴趣的变化、物品流行度的变化以及商品的季节效应。即下面主要考虑三个问题,如何建立动态用户兴趣模型,如何建立用户长期兴趣和短期兴趣的动态用户兴趣模型,还有网站时效性对用户行为和推荐系统设计的影响。
考虑到推荐系统的时间效应问题,可以将协同过滤所使用的数据集归结为一个四元组,即{用户,物品,行为,时间},那么现在就面临一个问题,如何通过研究用户的历史行为和兴趣爱好,预测用户将来的行为和喜好。需要解决以下三个问题:动态评分预测、动态Top-N推荐、时效性的影响。
对于第一个问题,动态评分预测问题。数据集可以选用比较直观的显性反馈数据集,即(用户,物品,评分,时间),研究是这样一个问题,给定用户u,物品i,时间t,预测用户u在时间t对物品i的评分r。对于该类问题,相关的算法已经有了很多的研究,与时间无关的评分预测问题算法主要有以下几种:
− 基于用户/物品的协同过滤算法;
− 基于矩阵分解的模型LatentFactor Model;
− 受限波尔兹曼机RBM。
与时间相关的评分预测问题算法主要是基于下面两种想法:
− 用户会喜欢和他们最近喜欢的物品相似的物品;
− 用户会喜欢和他们兴趣相似的用户最近喜欢的物品。
当然上面的这些算法是提出来了,但是有些地方有待优化。
上述算法需要考虑的时间效应问题主要有以下几个方面:
用户兴趣的变化,比如说:年龄增长,从青年长成中年壮年;生活状态的变化,由以前的学生到踏上工作岗位;社会热点问题的影响,奥运会等。此外还有季节效应问题,一些在夏季很流行的,在秋冬季节未必就很流行。如何解决上述问题,提出优化还有待进一步思考。
对于动态Top-N推荐问题,数据集选用的是不太直观的隐性反馈数据集,{(用户,物品,时间)},研究的是这样的一个问题,给定用户u,时间t,预测用户u在时间t可能会喜欢的物品列表R(u)。在这方面的相关研究也很成熟,有基于邻域的协同过滤算法,主要分为两种,一种是ItemCF,推荐给用户那些跟他们之前喜欢的物品类似的物品;还有一种是UserCF,推荐给用户那些跟他们兴趣相似的用户喜欢的物品。还有基于评分数据的Top-N推荐算法,该想法的思路是推荐给用户那些他们可能评分最高的物品。该想法都是围绕用户的兴趣展开的,需要考虑到,用户兴趣分为短期兴趣和长期兴趣,短期兴趣的特点是临时、易变;长期兴趣的特点是长久、稳定;用户的短期兴趣可能会转化为长期兴趣,所以需要在推荐时综合考虑长期兴趣和短期兴趣。该问题的解决有待进一步思考。
对于时效性的影响,每个在线系统都是一个动态系统,但它们有不同的演化速率。比如说,新闻,博客演化的很快,但音乐,电影的系统演化的却比较慢。这就带来这样一个问题,不同演化速率的系统需要不同类型的推荐算法,如何解决该问题,也是应该进一步深入思考的。
架构
主流的推荐系统的架构如下图:而动态推荐系统的架构如下:
关于推荐系统的架构,这几篇文章写得不错,这里mark一下。
推荐系统的架构,
http://www.cnblogs.com/kobedeshow/p/3569525.html?utm_source=tuicool
淘宝推荐系统,
http://www.biaodianfu.com/taobao-recommendation-system.html?utm_source=tuicool
InfoQ上关于Hulu的视频推荐系统架构经验,
Hulu推荐系统构建经验谈,
http://www.infoq.com/cn/presentations/hulu-recommendation-system-construction-experiences/
算法
推荐系统的实现算法,按照使用的数据,主要分为以下三种算法:− 协同过滤:用户的行为数据,像点击、评分、购买等;
− 内容过滤:用户内容属性和物品内容属性;
− 社会化过滤:用户之间的社交网络关系,如朋友、关注关系等。
按照模型划分,主要有以下三种:
− 最近邻模型:基于用户/物品的协同过滤算法;
− Latent Factor Model:基于矩阵分解的模型;
− 图模型:二分图模型,社会网络图模型等。
除了推荐系统自身的问题,像冷启动、数据的稀疏性问题等,还有一个需要关注的问题,就是推荐系统的时间效应问题,比较常见的时间效应问题主要反映在用户兴趣的变化、物品流行度的变化以及商品的季节效应。即下面主要考虑三个问题,如何建立动态用户兴趣模型,如何建立用户长期兴趣和短期兴趣的动态用户兴趣模型,还有网站时效性对用户行为和推荐系统设计的影响。
考虑到推荐系统的时间效应问题,可以将协同过滤所使用的数据集归结为一个四元组,即{用户,物品,行为,时间},那么现在就面临一个问题,如何通过研究用户的历史行为和兴趣爱好,预测用户将来的行为和喜好。需要解决以下三个问题:动态评分预测、动态Top-N推荐、时效性的影响。
对于第一个问题,动态评分预测问题。数据集可以选用比较直观的显性反馈数据集,即(用户,物品,评分,时间),研究是这样一个问题,给定用户u,物品i,时间t,预测用户u在时间t对物品i的评分r。对于该类问题,相关的算法已经有了很多的研究,与时间无关的评分预测问题算法主要有以下几种:
− 基于用户/物品的协同过滤算法;
− 基于矩阵分解的模型LatentFactor Model;
− 受限波尔兹曼机RBM。
与时间相关的评分预测问题算法主要是基于下面两种想法:
− 用户会喜欢和他们最近喜欢的物品相似的物品;
− 用户会喜欢和他们兴趣相似的用户最近喜欢的物品。
当然上面的这些算法是提出来了,但是有些地方有待优化。
上述算法需要考虑的时间效应问题主要有以下几个方面:
用户兴趣的变化,比如说:年龄增长,从青年长成中年壮年;生活状态的变化,由以前的学生到踏上工作岗位;社会热点问题的影响,奥运会等。此外还有季节效应问题,一些在夏季很流行的,在秋冬季节未必就很流行。如何解决上述问题,提出优化还有待进一步思考。
对于动态Top-N推荐问题,数据集选用的是不太直观的隐性反馈数据集,{(用户,物品,时间)},研究的是这样的一个问题,给定用户u,时间t,预测用户u在时间t可能会喜欢的物品列表R(u)。在这方面的相关研究也很成熟,有基于邻域的协同过滤算法,主要分为两种,一种是ItemCF,推荐给用户那些跟他们之前喜欢的物品类似的物品;还有一种是UserCF,推荐给用户那些跟他们兴趣相似的用户喜欢的物品。还有基于评分数据的Top-N推荐算法,该想法的思路是推荐给用户那些他们可能评分最高的物品。该想法都是围绕用户的兴趣展开的,需要考虑到,用户兴趣分为短期兴趣和长期兴趣,短期兴趣的特点是临时、易变;长期兴趣的特点是长久、稳定;用户的短期兴趣可能会转化为长期兴趣,所以需要在推荐时综合考虑长期兴趣和短期兴趣。该问题的解决有待进一步思考。
对于时效性的影响,每个在线系统都是一个动态系统,但它们有不同的演化速率。比如说,新闻,博客演化的很快,但音乐,电影的系统演化的却比较慢。这就带来这样一个问题,不同演化速率的系统需要不同类型的推荐算法,如何解决该问题,也是应该进一步深入思考的。
相关文章推荐
- uva 111 History Grading
- Android fragment详解(一 )
- 自动生成 Lambda查询和排序,从些查询列表so easy
- Android 判断当前线程是否为主线程
- PHP生命周期
- windows内存模式
- Windows 10企业批量部署实战之WDS安装
- Extjs 4.2 实现文本框组 支付宝支付密码输入效果
- Spring事务管理
- c++ primer plus 第六章《编程题6.11.2》
- Web系统大规模并发——电商秒杀与抢购
- poj 2388 Who's in the Middle 排序,大水
- Codeforces Round #306 (Div. 2) B. Preparing Olympiad
- 使用PitStop去掉pdf的xobject类型的"水印"
- jquery 判断元素是否存在
- 单例
- 线程同步基础
- bjfu 上这道题我不知道是放在dp里还是放在dfs里。。。
- [LeetCode] Linked List Cycle
- 视图、索引、存储过程优缺点