一、基本介绍
1. 推荐系统任务:
推荐系统的任务就是联系用户和信息一方面帮助用户发现对自己有价值的信息,而另一方面让信息能够展现在对它感兴趣的用户面前从而实现信息消费者和信息生产者的双赢。
2. 与搜索引擎比较:
相同点:帮助用户快速发现有用信息的工具
不同点:和搜索引擎不同的是推荐系统不需要用户提供明确的需求而是通过分析用户的历史行为来给用户的兴趣建模从而主动给用户推荐出能够满足他们兴趣和需求的信息。
3. 长尾理论:
长尾讲述的是这样一个故事:以前被认为是边缘化的、地下的、独立(艺人?)的产品现在共同占据了一块市场份额,足以可与最畅销的热卖品匹敌。
wiki链接:https://wiki.mbalib.com/wiki/%E9%95%BF%E5%B0%BE%E7%90%86%E8%AE%BA
长尾头部的商品往往代表了绝大多数用户的需求而长尾中的商品往往代表了一小部分用户的个性化需求。因此如果要通过发掘长尾来提高销售额就必须充分研究用户的个性化兴趣。而这正是个性化推荐系统主要解决的问题。
推荐系统通过发掘用户的行为找到用户的个性化需求从而将长尾中的商品准确地推荐给需要它们的用户帮助用户发现那些他们感兴趣但很难发现的商品。
4. 推荐系统应用
· 电子商务
· 电影和视频网站
· 个性化音乐网络电台
· 社交网站
· 个性化阅读
· 个性化邮件
· 个性化广告
5. 推荐系统架构
二、推荐系统评测
推荐系统评测即评测一个推荐系统是否好用。好的推荐系统不仅仅能够准确预测用户的行为,而且能够扩展用户的视野,帮助用户发现他们可能会感兴趣,但却不那么容易发现的东西,从而通过推荐系统增加了收入效益。例如你预测一个用户将来会买牙刷,预测显然是准确的,但是由于用户暂时不需要或者在需要的时候并没有选择你的商品,这样的话就没有为你增加收入,因此这就不能算得上一次好的推荐。
一个完整的推荐系统一般存在3个参与方:用户、内容提供者、业务前端(Android、ios、web)
1. 推荐系统实验方法
a、离线实验
离线实验利用离线数据训练并测试推荐模型效果,好处是不需要用户真实参与,可以快速地测试大量算法,但同时也会忽略在线系统带来的因素。
b、用户调查
对一些真实用户做一些有关推荐系统的测试调查,根据用户的反映获取推荐系统的性能指标。它是推荐系统评测的一个重要工具,可以获取离线实验不能得到的用户真实体验,但是其成本较高,需要较多的人力时间来完成。
c、在线实验
在推荐系统正式上线前,可以对系统做典型的AB测试,它通过一定的规则将用户随机分成几组,并对不同组用户采用不同算法,然后统计不同组用户的评测指标,进而分析推荐系统的性能。其优点是可以公平获取不同算法的在线性能指标,缺点是周期较长,需要长时间的实验才能得到可靠的结构。
2. 评测指标——用户满意度
用户满意度是评测推荐系统最重要的指标,只能通过在线实验获得。一般通过对用户行为的统计获得,比如用户点击率、推荐购买率、停留时间等;也可以通过收集用户反馈获得,如让用户评价推荐的物品是否令人满意。
3. 评测指标——预测准确度
预测准确度是推荐系统最重要的离线评测指标。通过离线训练数据训练出用户的行为和兴趣模型,并预测用户的行为,计算预测行为与测试集上的实际行为的重合度作为预测准确度。
a) 评分预测
很多提供推荐服务的网站有一个让用户给物品打分的功能,当知道了用户对物品的评分,就可以从中习得用户的兴趣模型,并预测该用户在将来看到一个他没有评分过的物品时,会给物品评多少分。
评分预测的准确度一般通过均方根误差(RMSE)和平均绝对误差(MAE)计算。
b) TopN 推荐
TopN推荐的准确率一般通过: 准确率(precision)/召回率(recall)度量
令R(u)是根据用户在训练集上的行为给用户做出的推荐列表,T(u)是用户在测试集上的行为列表,那么推荐结果的召回率定为:
准确率为:
这里用更加形象的方法表示,将数据分成四个部分 A,B,C,D
R(u) = A + B; T(u) = A + C;
Recall = A / (A + C)
Precession = A / (A + B)
4.评测指标——覆盖率
覆盖率描述了推荐系统对物品长尾的发掘能力,高的覆盖率表示推荐系统可以推荐一些长尾部分的物品,这是物品提供商比较关心的。对覆盖率一个简单定义为推荐系统能够推荐出来的物品占总物品I的比例,假设系统用户集合为U,为每个用户u推荐物品为R(u),那么推荐系统覆盖率可以表示为:
5.评测指标——多样性
用户的兴趣是广泛的,因此推荐系统推荐给用户的物品也应该是多样的。比如,用户爱看的书不仅有历史文学书,也可能有心理专业书,且看的比例约为7:3,所以在推荐的时候,也应该考虑为用户推荐这两类书籍,且比例也约为7:3。
6.评测指标——新颖性
新颖性即推荐给用户他们之前不知道的物品,将用户有过行为的物品从推荐表中剔除掉。评测新颖性的最简单方法是利用推荐结果的平均流行度,即推荐的物品的平均热门程度越低,其新颖性越高。
7.其他
三、协同过滤
协同过滤就是指用户可以齐心协力,通过不断地和网站互动,使自己的推荐列表能够不断过滤掉自己不感兴趣的物品,从而越来越满足自己的需求。
显性反馈:用户明确表示对物品喜好的行为。这要方式是评分和喜欢/不喜欢。
隐形反馈:不能明确反应用户喜好的行为。(购买日志、阅读日志、浏览日志)
1. 基于用户的协同过滤算法(UserCF)
当一个用户A需要个性化推荐时,可以先找到他有相似兴趣的其他用户,然后把那些用户喜欢的、而用户A没听过的物品推荐给A。
a) 找到和目标用户兴趣相似的用户集合
b) 找到这个集合中的用户喜欢的,且目标用户没有听说过的物品推荐给目标用户。
步骤(a)的关键就是计算两个用户的兴趣相似度。这里,协同过滤算法主要利用行为的相似度计算兴趣的相似度。给定用户u和用户v,令N(u)表示用户u曾经有过正反馈的物品集合,令N(v)为用户v曾经有过正反馈的物品集合。那么,我们可以通过如下的Jaccard公式简单地计算u和v的兴趣相似度或者通过余弦公式:
jaccard 余项公式:
这个一个行为记录 我们可以根据余弦公式计算如下
上述算法很简单但是计算量较大,因为需要所有用户之前的复杂度 n(n-1)/2。 下面这种计算用户相似度算法通过空间换时间。
首先建立物品到用户的倒排表,然后统计每两个用户的公共物品数量(如下图所示)。
计算u对物品i的感兴趣程序:
得到用户之间的兴趣相似度后,UserCF算法会给用户推荐和他兴趣最相似的K个用户喜欢的物品。上面右边公式度量了UserCF算法中用户u对物品i的感兴趣程度:其中,S(u, K)包含和用户u兴趣最接近的K个用户,N(i)是对物品i有过行为的用户集合,Wuv是用户u和用户v的兴趣相似度,Rvi代表用户v对物品i的兴趣,因为使用的是单一行为的隐反馈数据,所以所有的Rvi=1。
改进算法
2. 基于物品的协同过滤算法(ItemCF)
https://www.cnblogs.com/qwj-sysu/p/4368874.html