首页 > 代码库 > 推荐系统小结
推荐系统小结
推荐系统(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推荐算法,该想法的思路是推荐给用户那些他们可能评分最高的物品。
该想法都是环绕用户的兴趣展开的,须要考虑到,用户兴趣分为短期兴趣和长期兴趣,短期兴趣的特点是暂时、易变。长期兴趣的特点是长久、稳定。用户的短期兴趣可能会转化为长期兴趣,所以须要在推荐时综合考虑长期兴趣和短期兴趣。该问题的解决有待进一步思考。
对于时效性的影响,每一个在线系统都是一个动态系统,但它们有不同的演化速率。
比方说,新闻。博客演化的非常快,但音乐,电影的系统演化的却比較慢。这就带来这样一个问题,不同演化速率的系统须要不同类型的推荐算法,怎样解决该问题。也是应该进一步深入思考的。
推荐系统小结