推荐系统常用的推荐算法_光环大数据培训
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
推荐系统常用的推荐算法_光环大数据培训
一、推荐系统概述和常用评价指标
1.1 推荐系统的特点
在知乎搜了一下推荐系统,果真结果比较少,显得小众一些,然后大家对推荐系统普遍的观点是:
(1)重要性UI>数据>算法,就是推荐系统中一味追求先进的算法算是个误区,通常论文研究类的推荐方法有的带有很多的假设限制,有的考虑工程实现问题较少,推荐系统需要大量的数据整理和转化,同时更需要考虑公司业务特性以及与现有系统的集成,方能形成推荐系统和业务之间的良性循环;
(2)推荐系统离线测试很好,上线后要么没有严格的测试结果而只能凭感觉,要么实际效果差强人意,我想主要缘于离线测试比较理想,而在线AB冠军测试无论对于前端还是后台要求都很高,没有雄厚的研发实力难以实现;
(3)推荐系统受到的外部干扰因素特别多(季节、流行因素等),整个系统需要不断的迭代更新,没有一劳永逸的事情。
1.2 推荐系统的评价指标
由于推荐系统比较复杂,所以涉及到的评价指标也很多。当然,用户满意度最为的有效,因为这本来就是推荐系统的最终目标,但是奈何资源有限成本太高,推荐系统还依赖于其它客观评价指标。
(1)推荐准确度:这个参数可以离线计算所得,而且较为的客观,所以是各大研究论文算法最重要的参考指标。
总体来说,推荐系统有两大任务:“预测”和“推荐”,所以推荐系统准确度的评分包括:
评分预测:学习用户的评价模型,用于预测用户对于未接触事物的评分,其实可以看作是一个回归模型,一般用均方根误差或者绝对误差来衡量;
TopN推荐:给用户一个个性化的推荐列表,其一般通过准确度、召回率等指标评估。其中N也是一个可变参数,可以根据不同的N描绘出对应算法的ROC曲线来进一步评价推荐效果;
(2)覆盖率:体现了挖掘算法对发掘长尾商品的能力。最简单的定义是,对所有用户推荐出的产品做并集,然后看这个出现的并集产品与总产品数中所占的比例,这种方式比较的粗线条,因为推荐系统中马太效应频繁,所以好的推荐算法应当是所有商品被推荐的几率差不多,都可以找到各自合适的用户,所以实际中会考虑信息熵、基尼系数等指标。
(3)多样性:其原理可以表述为不在一棵树上吊死。因整个推荐系统涉及到的因素太多,如果只推荐用户一个类别的相似物品,失败风险比较的大,而且也难以实现整个推荐效益的最大化。
(4)新颖性:原理就是那些用户没有接触过、没有操作过的商品,或者是流行度比较低的商品,对用户来说是比较新鲜的物品,往往会有意外的效果。个人觉得这个指标有点扯~~
(5)信任度:这个指标比较的主观,就是让用户信任推荐系统做出的推荐是有根据有理由的,以及推荐系统内部是如何运作的。例如亚马逊的商品推荐会给出推荐理由,作为用户的我会觉得很贴心,否则用户会觉得商家的利益驱动而带有抵触心理。
(6)健壮性:比如针对关联推荐算法,商户恶意下单提高产品的推荐频率,水军恶意评论等。
二、静态数据推荐
基本上绝大多数算法都会利用用户-产品的交互数据动态生成个性化的推荐。而静态数据指还没生成用户交互数据的时候,这种情况在系统冷启动的时候尤为的常见,常常使用的静态数据包括:
(1)用户注册时候的性别、年龄、地域、学历、兴趣等人口统计学信息;
(2)授权的社交网络账号的好友信息;
这类基于推荐方法简单,可以根据每类用户预先设置好推送内容,也可以根据同类用户相互之间进行推送,但是这种方法面临着推荐颗粒度较大,对于涉及个人品味爱好的个性化强的商品,参考价值有限,同时在大家隐私意识加强的情况下,这类数据不见得能够轻易得到;第二类社交网络好友信息效果会比较好,但也需要相应的平台授权接入才可以。
然后这里引申出对于新加入的用户和新加入的商品的冷启动问题:
新加入用户:推送热门商品;选择用上面人口统计信息进行粗粒度的推送;如果可以得到合作商数据,获取其好友信息,选择接近的好友进行UserCF推荐;向用户展示一些商品(热们常见、具有代表性和区分性、物品要多样性),得到用
户的反馈,然后进行学习(Nadav Golbandi算法);
新加入商品:UserCF对新加入的物品冷启动不是很敏感,因为只要有用户发现这个新商品,这个新商品就会慢慢扩散开来。对于ItemCF就比较严重,比如可以考虑开始使用基于内容的推荐,等积累数据一定程度后切换成协同过滤推荐。
三、基于内容的推荐
其主要根据用户之前的喜好,推荐相似的物品。该系统包括用户属性和产品属性两方面构成,前者包括用户的固有属性(比如人口统计信息)以及用户的历史商品交互信息(比如对看过电影的评分,然后得到该用户对于喜欢电影的属性描述),后者是对商品的本身属性描述,这样通过简单的余弦相似度就可以实现推荐了。同时也能感觉到,对于同类型的物品描述维度相似,这种算法会工作的比较好,对于电商千奇百怪的商品,可能工作效果一般。
这个方法核心要解决的问题是推荐是否具有扩张性,如果根据用户之前的爱好只不断推荐同类的产品,显然整个推荐系统的价值就十分有限,但是如果能准确推荐其他不同类别的商品就会很好了。
Pandora的音乐推荐就是个典型的基于内容的推荐系统,他们把音乐使用各种维度的属性进行描述,然后根据用户之前的兴趣爱好推荐相似属性风格的音乐。
四、协同过滤算法
协同过滤算法算是推荐系统中最经典的算法了,也称为基于领域的算法。协同过滤牵涉到用户和商品的交互信息,也就是用户行为,而一般用户对于商品的行为反馈有:
显性反馈行为——用户明确表现出对某项产品和的喜好,比如用户对商品的
打分、评论等信息。
隐性反馈行为——不能明确代表用户对产品喜好的行为,比如页面浏览行为等,这类数据量的比较多,常常伴有大量的噪音,需要经过处理和转化才可能有实际的用途。
4.1 基于用户的协同过滤算法(UserCF)
其基于的假设是——喜欢类似物品的用户可能有相同或者相似的口味和偏好。UserCF实现的步骤包括:
(1)找到与目标用户兴趣相似的用户群;
假设用户u和v的正反馈的商品集合为N(u),N(v),那么两者兴趣相似度可以记为
(2)找到这个集合中用户喜欢的,而目标用户没有听说过得商品推荐之;UserCF提供的一个参数K表示要考虑目标用户兴趣最相似的人的个数,在保证精度的同时,K不宜过大,否则推荐结果会趋向于热门商品,流行度指标和覆盖度指标都会降低。
4.2 基于内容的协同过滤算法(ItemCF)
目前用的最广泛的推荐算法,不是通过商品本身,而是通过用户对商品的行为来计算商品之间的相似度,其假设能够引起用户兴趣的商品,必定与其之前评分高的商品相似。ItemCF的操作步骤包括: