推荐系统常用的推荐算法

转载自  推荐系统常用的推荐算法

一、推荐系统概述和常用评价指标

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的操作步骤包括:

(1)计算商品之间的相似度。

物品相似度可以表示为(其实跟前面的支持度比较像)

第二个式子比第一个式子好在可以惩罚过热产品j。

(2)根据商品的相似度和用户的历史行为,给用户生成推荐列表。

4.3 基于模型的协同过滤算法

User-CF和Item-CF合称为memory-based CF,而model-based CF使用一般机器学习的方式,其基于样本的用户喜好信息,训练出一个推荐模型,然后根据实时的用户喜好的信息进行预测和计算推荐。

常用的模型包括LSI、贝叶斯网络等。

4.4 UserCF和ItemCF之间的比较

在现实的情况中,往往物品的个数是远远小于用户的数量的,而且物品的个数和相似度相对比较稳定,可以离线完成工作量最大的相似性计算步骤,从而大大降低了在线计算量,基于用户的实时性更好一些。但是具体使用的场景,还需要根据具体的业务类型来区分,User-CF偏重于反应用户小群体热点,更具社会化,而Item-CF在于维持用户的历史兴趣,比如:

对于新闻、阅读类的推荐,新闻阅读类的信息是实时更新的,所以ItemCF在这种情况下需要不断更新,而用户对新闻的个性化推荐不是特别的强烈情况,用户有新行为不会导致相似用户的剧烈运动。

对于电子商务类别的,由于用户消费代价比较高,所以对个性化的精确程度要求也比较高,而一段用户有新的行为,也会导致推荐内容的实时变化

协同过滤的算法缺点也很明显,除了上面的冷启动之外,往往商家的用户数量和产品数量都很多,所以矩阵的计算量会非常的大,但某个具体的用户往往买的东西又有限,所以数据同时也是高度稀疏的。

五、基于标签的推荐方法

基于标签的推荐算法也是十分常见的,比如豆瓣网、京东的商品评论等。标签信息一般分为专家、学者类打的标签;一类为普通用户给商品打的标签(UGC, User Generated Content)。而标签的内容一般要么描述商品本身的,比如名字、类别、产地等,也或者用户对商品的观点评价,比如便宜、好用、性能强等,三元组(用户、物品、标签)通过标签将用户和物品进行联系。

基于标签推荐最简单的例子比如:统计一个用户最常用的标签,统计每个物品最常被打的标签,然后两者通过一定的关系推荐起来;当然也可以展现标签云,让用户点击自己感兴趣的标签,然后依此个性化推荐。

国内的京东、淘宝、豆瓣都大量使用标签信息。

由于标签的评价用户主观性比较强,所以一方面同样意思用户的用语差异性比较大,规范化可以考虑:用户评价的时候提供常用标签,让用户点击可以减少输入差异,而推荐的标签包括该物品描述性较好的标签,以及用户自己常用的标签(用户一致性);人为或者通过自然语言处理技术对标签进行整理,对于用户积极和消极的评价进行区分;标签也有长尾分布效应,所以除了热门标签外怎么提取那些差异化的有用标签进行更精确的推荐也是应当研究的课题(卡方分布/SVD)。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/328839.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

拥抱.NET Core,学习.NET Core的基础知识补遗

前言 .NET Core的新特性之一就是跨平台,但由于对之前框架的兼容导致编写一个.NET Core类库变得相当复杂,主要体现为相当多的框架目标和支持平台,今天我们就对.NET Core的跨平台特性进行一次梳理。 在.NET Core之前 其实早在.NET Core之前微软…

sql server模糊查询、分组

一、系统函数1。convert(类型[length] ,表达式[,样式])2.isnull(表达式,默认值)字符函数:len() 长度ltrim()|rtrim()去除左右空格righ…

拥抱.NET Core,如何开发一个跨平台类库

在此前的文章中详细介绍了使用.NET Core的基本知识,如果还没有看,可以先去了解“拥抱.NET Core,学习.NET Core的基础知识补遗”,以便接下来的阅读。 在本文将介绍如何配置类库项目支持不同的平台,并为不同的平台进行兼…

常用的推荐算法小结

转载自 常用的推荐算法小结推荐系统的必然 互联网发展到现阶段,信息已经不是匮乏,而是爆炸。所以良好的用户体验就是把用户喜欢的,感兴趣的从大量的数据中筛选出来,再呈现给用户,实现千人千面的效果。 所以推荐系统的…

.NET 4.6.2正式发布带来众多特性

虽然大多数人的注意力都集中在.NET Core上,但与原来的.NET Framework相关的工作还在继续。.NET Framework 4.6.2正式版已于近日发布,其重点是安全和WinForms/WPF/ASP.NET/WCF相关的特性,英文博客文章https://blogs.msdn.microsoft.com/dotnet/2016/08/02…

推荐算法-关联分析(关联规则)

转载自 推荐算法-关联分析(关联规则)关联分析又称关联挖掘,就是在交易数据、关系数据或其他信息载体中,查找存在于项目集合或对象集合之间的频繁模式、关联、相关性或因果结构。或者说,关联分析是发现交易数据库中不…

动态网页开发基础【笔记】

一、C/S结构和B/S结构1.C/S(Client/Server):客户端服务程序,控制台程序,window应用2.B/S(Browser/Server):浏览器服务程序[java:jsp应用;C#:asp.net],web应用程序区别:C/S:客户端和服务器端都需要开发&…

ASP.NET Core 中文文档 第三章 原理(2)中间件

原文:Middleware作者:Steve Smith and Rick Anderson翻译:刘怡(AlexLEWIS)校对:许登洋(Seay) 章节: 什么是中间件用 IApplicationBuilder 创建中间件管道内置中间件编写中间件扩展资源 查看或下载样例代码 什么是中间件…

关联分析:FP-Growth算法

转载自 关联分析:FP-Growth算法关联分析又称关联挖掘,就是在交易数据、关系数据或其他信息载体中,查找存在于项目集合或对象集合之间的频繁模式、关联、相关性或因果结构。关联分析的一个典型例子是购物篮分析。通过发现顾客放入购物篮中不同…

sql server链接查询

一、连接结果集中有多个表的信息时用连接查询1.内连接:多个表根据公共列连接,符合条件的显示,不符合条件的不显示 2.外连接:多个表根据公共列连接,显示一个表中的所有信息,另个表中中符合条件的信息,不符合条件的用nul…

ASP.NET Core 中文文档 第三章 原理(1)应用程序启动

原文:Application Startup作者:Steve Smith翻译:刘怡(AlexLEWIS)校对:谢炀(kiler398)、许登洋(Seay) ASP.NET Core 为你的应用程序提供了处理每个请求的完整控制。Startup 类是应用程序的入口(entry point)…

基于内容的推荐(Content-based Recommendations)

转载自 基于内容的推荐(Content-based Recommendations)Collaborative Filtering Recommendations (协同过滤,简称CF) 是目前最流行的推荐方法,在研究界和工业界得到大量使用。但是,工业界真正使用的系统一般都不会只…

[置顶]动态网页开发基础【笔记】

一、C/S结构和B/S结构1.C/S(Client/Server):客户端服务程序,控制台程序,window应用2.B/S(Browser/Server):浏览器服务程序[java:jsp应用;C#:asp.net],web应用程序区别:C/S:客户端和服务器端都需要开发&…

ASP.NET Core 中文文档 第三章 原理(3)静态文件处理

原文:Working with Static Files作者:Rick Anderson翻译:刘怡(AlexLEWIS)校对:谢炀(kiler398)、许登洋(Seay)、孟帅洋(书缘) 静态文件(static files),诸如 HTML、CSS、图片和 JavaScript 之类的…

使用IDEA Maven搭建Mybatis环境

本文是使用IDEA Maven搭建Mybatis环境 涉及到的搭配环境 JDK1.8 Maven3.6.3 IDEA2019 MySQL数据库 一、Maven介绍 Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理,是一个自动化构建工具。 自动化构建工具:将原材料&…

常用推荐算法

转载自 常用推荐算法在推荐系统简介中,我们给出了推荐系统的一般框架。很明显,推荐方法是整个推荐系统中最核心、最关键的部分,很大程度上决定了推荐系统性能的优劣。目前,主要的推荐方法包括:基于内容推荐、协同过滤…

不该活着的SqlHelper和DBHelper

前言: 还记得刚学ADO.NET的情景么? 还记得当年是怎么从ADO.NET被忽悠到用SqlHelper的么? 话说从入门到走上工作岗位那些年,我们就一直被纯纯地教导或引导,ADO.NET太原始,得封装成SqlHelper或DBHelper......…

使用IDEA配置Mybatis-Plus框架

使用IDEA配置Mybatis-Plus框架 本文是以使用IDEA配置Mybatis-Plus框架作为简单的讲解。 所涉及到的应用: IDEA2019Mybatis-Plus框架Mysql数据库Maven3.6.3jdk1.8 一、什么是Mybatis-Plus框架? MyBatis-Plus(简称MP)是一个MyBatis的增强工具&#xff…

css实现一级下拉菜单

涉及到的图片请到这里下载 涉及到的图片请到这里下载 涉及到的图片请到这里下载 html代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns"…

UserCF,基于用户的协同过滤算法

转载自 UserCF,基于用户的协同过滤算法UserCF&#xff1a;User Collaboration Filter&#xff0c;基于用户的协同过滤 算法核心思想&#xff1a;在一个在线推荐系统中&#xff0c;当用户A需要个性化推荐时&#xff0c;可以先找到和他有相似兴趣的其它用户&#xff0c;然后…