尊敬的读者您好:笔者很高兴自己的文章能被阅读,但原创与编辑均不易,所以转载请必须注明本文出处并附上本文地址超链接以及博主博客地址:https://blog.csdn.net/vensmallzeng。若觉得本文对您有益处还请帮忙点个赞鼓励一下,笔者在此感谢每一位读者,如需联系笔者,请记下邮箱:zengzenghe@gmail.com,谢谢合作!

之前也做过一些关于推荐系统的项目,下面就来系统的总结一下。

一、 什么是推荐系统?

引用百度百科的一段解释就是:“利用电子商务网站向客户提供商品信息和建议,帮助用户决定应该购买什么产品,模拟销售人员帮助客户完成购买过程。个性化推荐是根据用户的兴趣特点和购买行为,向用户推荐用户感兴趣的信息和商品。”

在这个数据过载的时代,信息的消费者需要从海量的信息中找到自己所需要的信息,信息的生产者要让自己生产的信息在海量的信息中脱颖而出,这时推荐系统就应运而生了。对用户而言,推荐系统不需要用户提供明确的目标;对物品而言,推荐系统解决了2/8现象的问题(也叫长尾效应),让小众的物品可以展示到需要它们的用户面前。

二、推荐系统要解决的问题?

1、帮助用户找到想要的物品 如:书籍、电影等

2、可以降低信息过载

3、有利于提高站点的点击率/转化率

4、有利于对用户进行深入了解,为用户提供个性化服务

三、推荐系统的发展趋势?

推荐系统的研究大致可以分为三个阶段,第一阶段是基于传统的服务,第二阶段是基于目前的社交网络的服务,第三阶段是即将到来的物联网。这其中产生了很多基础和重要的算法,例如协同过滤(包括基于用户的和基于物品的)、基于内容的推荐算法、混合式的推荐算法、基于统计理论的推荐算法、基于社交网络信息(关注、被关注、信任、知名度、信誉度等)的过滤推荐算法、群体推荐算法、基于位置的推荐算法。其中基于邻域的协同过滤推荐算法是推荐系统中最基础、最核心、最重要的算法,该算法不仅在学术界得到较为深入的研究,而且在业界也得到非常广泛的应用,基于邻域的算法主要分为两大类,一类是基于用户的协同过滤算法,另一类是基于物品的协同过滤算法,除此之外,基于内容的推荐算法应用也非常广泛等等,因此下文将对涉及推荐系统的常用算法进行详细介绍。

1、基于流行度的推荐算法

2、基于协同过滤的推荐算法(UserCF与ItemCF)

3、基于内容的推荐算法

4、基于模型的推荐算法

5、基于混合式的推荐算法

四、基于流行度的推荐算法

基于流行度的算法非常简单粗暴,类似于各大新闻、微博热榜等,根据PV、UV、日均PV或分享率等数据来按某种热度排序来推荐给用户。

注:独立访客(UV)、访问次数(VV)两个指标有什么区别?

① 访问次数(VV):记录1天内所有访客访问了该网站多少次,相同的访客有可能多次访问该网站,且访问的次数累加。

② 独立访客(UV):记录1天内所有访客访问了该网站多少次,虽然相同访客能多次访问网站,但只计算为1个独立访客。

③ PV访问量(Page View):即页面访问量,每打开一次页面或者刷新一次页面,PV值+1。

1、优点:该算法简单,适用于刚注册的新用户

2、缺点:无法针对用户提供个性化的推荐

3、改进:基于该算法可做一些优化,例如加入用户分群的流行度进行排序,通过把热榜上的体育内容优先推荐给体育迷,把政要热文推给热爱谈论政治的用户。

五、基于用户的协同过滤推荐算法

当目标用户需要推荐时,可以先通过兴趣、爱好或行为习惯找到与他相似的其他用户,然后把那些与目标用户相似的用户喜欢的并且目标用户没有浏览过的物品推荐给目标用户。

1、基于用户的CF原理如下:

① 分析各个用户对物品的评价,通过浏览记录、购买记录等得到用户的隐性评分;

② 根据用户对物品的隐性评分计算得到所有用户之间的相似度;

③ 选出与目标用户最相似的K个用户;

④ 将这K个用户隐性评分最高并且目标用户又没有浏览过的物品推荐给目标用户。

2、优点:

① 基于用户的协同过滤推荐算法是给目标用户推荐那些和他有共同兴趣的用户喜欢的物品,所以该算法推荐较为社会化,即推荐的物品是与用户兴趣一致的那个群体中的热门物品;

② 适于物品比用户多、物品时效性较强的情形,否则计算慢;

③ 能实现跨领域、惊喜度高的结果。

3、缺点:

① 在很多时候,很多用户两两之间的共同评分仅有几个,也即用户之间的重合度并不高,同时仅有的共同打了分的物品,往往是一些很常见的物品,如票房大片、生活必需品;

② 用户之间的距离可能变得很快,这种离线算法难以瞬间更新推荐结果;

③ 推荐结果的个性化较弱、较宽泛。

4、改进:

① 两个用户对流行物品的有相似兴趣,丝毫不能说明他们有相似的兴趣,此时要增加惩罚力度;

② 如果两个用户同时喜欢了相同的物品,那么可以给这两个用户更高的相似度;

③ 在描述邻居用户的偏好时,给其最近喜欢的物品较高权重;

④ 把类似地域用户的行为作为推荐的主要依据。

六、基于物品的协同过滤推荐算法

当一个用户需要个性化推荐时,举个例子由于我之前购买过许嵩的《梦游计》这张专辑,所以会给我推荐《青年晚报》,因为很多其他用户都同时购买了许嵩的这两张专辑。

1、基于物品的CF原理如下:

① 分析各个用户对物品的浏览记录;

② 依据浏览记录分析得出所有物品之间的相似度;

③ 对于目标用户评价高的物品,找出与之相似度最高的K个物品;

④ 将这K个物品中目标用户没有浏览过的物品推荐给目标用户

2、优点:

① 基于物品的协同过滤推荐算法则是为目标用户推荐那些和他之前喜欢的物品类似的物品,所以基于物品的协同过滤推荐算法的推荐较为个性,因为推荐的物品一般都满足目标用户的独特兴趣。

② 物品之间的距离可能是根据成百上千万的用户的隐性评分计算得出,往往能在一段时间内保持稳定。因此,这种算法可以预先计算距离,其在线部分能更快地生产推荐列表。

③ 应用最广泛,尤其以电商行业为典型。

④ 适于用户多、物品少的情形,否则计算慢

⑤ 推荐精度高,更具个性化

⑥ 倾向于推荐同类商品

3、缺点:

① 不同领域的最热门物品之间经常具有较高的相似度。比如,基于本算法,我们可能会给喜欢听许嵩歌曲的同学推荐汪峰的歌曲,也就是推荐不同领域的畅销作品,这样的推荐结果可能并不是我们想要的。

② 在物品冷启动、数据稀疏时效果不佳

③ 推荐的多样性不足,形成信息闭环

4、改进:

① 如果是热门物品,很多人都喜欢,就会接近1,就会造成很多物品都和热门物品相似,此时要增加惩罚力度;

② 活跃用户对物品相似度的贡献小于不活跃的用户;

③ 同一个用户在间隔很短的时间内喜欢的两件商品之间,可以给予更高的相似度;

④ 在描述目标用户偏好时,给其最近喜欢的商品较高权重;

⑤ 同一个用户在同一个地域内喜欢的两件商品之间,可以给予更高的相似度。

七、基于内容的推荐算法

协同过滤算法仅仅通过了解用户与物品之间的关系进行推荐,而根本不会考虑到物品本身的属性,而基于内容的算法会考虑到物品本身的属性。

根据用户之前对物品的历史行为,如用户购买过什么物品、对什么物品收藏过、评分过等等,然后再根据计算与这些物品相似的物品,并把它们推荐给用户。例如某用户之前购买过许嵩的《寻宝游戏》,这可以说明该用户可能是一个嵩鼠,这时就可以给该用户推荐一些许嵩的其他专辑或著作。

1、基于内容的推荐算法的原理如下:

① 选取一些具有代表性的特征来表示每个物品

② 使用用户的历史行为数据分析物品的这些特征,从而学习出用户的喜好特征或兴趣,也即构建用户画像

③ 通过比较上一步得到的用户画像和待推荐物品的画像(由待推荐物品的特征构成),将具有相关性最大的前K个物品中目标用户没有浏览过的物品推荐给目标用户

2、优点:
          ① 是最直观的算法

② 常借助文本相似度计算

③ 很好地解决冷启动问题,并且也不会囿于热度的限制

3、缺点:

① 容易受限于对文本、图像、音视频的内容进行描述的详细程度

② 过度专业化(over-specialisation),导致一直推荐给用户内容密切关联的item,而失去了推荐内容的多样性。

③ 主题过于集中,惊喜度不足

八、基于模型的推荐算法

基于模型的推荐算法会涉及到一些机器学习的方法,如逻辑回归、朴素贝叶斯分类器等。基于模型的算法由于快速、准确,适用于实时性比较高的业务如新闻、广告等,而若是需要这种算法达到更好的效果,则需要人工干预反复的进行属性的组合和筛选,也就是常说的Feature Engineering。而由于新闻的时效性,系统也需要反复更新线上的数学模型,以适应变化。

九、基于混合式的推荐算法

现实应用中,其实很少有直接用某种算法来做推荐的系统。在一些大的网站如Netflix,就是融合了数十种算法的推荐系统。我们可以通过给不同算法的结果加权重来综合结果,或者是在不同的计算环节中运用不同的算法来混合,达到更贴合自己业务的目的。

十、推荐结果列表处理

1、当推荐算法计算得出推荐结果列表之后,我们往往还需要对结果进行处理。比如当推荐的内容里包含敏感词汇、涉及用户隐私的内容等等,就需要系统将其筛除;

2、若多次推荐后用户依然对某个物品毫无兴趣,就需要将这个物品降低权重,调整排序;

3、有时系统还要考虑话题多样性的问题,同样要在不同话题中筛选内容。

十一、推荐结果评估

当一个推荐算法设计完成后,一般需要用查准率(precision),查全率(recall),点击率(CTR)、转化率(CVR)、停留时间等指标进行评价。

查准率(precision):推荐给用户且用户喜欢的物品在推荐列表中的比重

查全率(recall):推荐给用户且用户喜欢的物品在用户列表中的比重

点击率(CTR):实际点击了的物品/推荐列表中所有的物品

转化率(CVR):购买了的物品/实际点击了的物品

日积月累,与君共进,增增小结,未完待续。

推荐系统的几种常用算法总结相关推荐

  1. 用java语言求前50个素数_Java求质数的几种常用算法总结

    Java求质数的几种常用算法分析 本文实例讲述了Java求质数的几种常用算法.分享给大家供大家参考,具体如下: 1.根据质数的定义求 质数定义:只能被1或者自身整除的自然数(不包括1),称为质数. 利 ...

  2. JAVA工程师常用算法_算法工程师必须要知道的8种常用算法思想

    算法思想有很多,业界公认的常用算法思想有8种,分别是枚举.递推.递归.分治.贪心.试探法.动态迭代和模拟.当然8种只是一个大概的划分,是一个"仁者见仁.智者见智"的问题. 1.1 ...

  3. java开发过程中几种常用算法

    排序算法 排序算法中包括:简单排序.高级排序 简单排序 简单排序常用的有:冒泡排序.选择排序.插入排序 冒泡排序代码如下: 1 private static void bubbleSrot(int[] ...

  4. 数学建模-32种常用算法汇总

    全国大学生数学建模竞赛(以下简称"数学建模竞赛")是由中国高等教育学会主办,旨在促进大学生对数学和相关学科的学习和研究,培养创新精神和综合素质的全国性大学生学科竞赛活动.该竞赛一般 ...

  5. 算法工程师必须要知道的8种常用算法思想

    https://www.toutiao.com/a6653981171921191432/ 算法思想有很多,业界公认的常用算法思想有8种,分别是枚举.递推.递归.分治.贪心.试探法.动态迭代和模拟.当 ...

  6. 数学建模--30+种常用算法模型

    全国大学生数学建模竞赛中,常见的算法模型有以下30种: 1.线性规划模型:用于寻找最优解的数学模型. 线性规划(Linear Programming,简称 LP)是一种运筹学方法,用于在一定的约束条件 ...

  7. Sql分页两种常用算法

    今天花了两个小时,写了两种分页的算法. --not in删选法,这种方法查询某个表中前面的数据效率高 create procedure Page_proc ( @pageSize int, --页数, ...

  8. 计算几何与图形学有关的几种常用算法(二)

    原文地址:http://blog.csdn.net/orbit/article/details/7101869 3.6 用矢量的叉积判断直线段是否有交 矢量叉积计算的另一个常用用途是直线段求交.求交算 ...

  9. 算法系列之九:计算几何与图形学有关的几种常用算法(二)

    3.6 用矢量的叉积判断直线段是否有交 矢量叉积计算的另一个常用用途是直线段求交.求交算法是计算机图形学的核心算法,也是体现速度和稳定性的重要标志,高效并且稳定的求交算法是任何一个CAD软件都必需要重 ...

  10. 计算几何与图形学有关的几种常用算法

    我的专业是计算机辅助设计(CAD),算是一半机械一半软件,<计算机图形学>是必修课,也是我最喜欢的课程.热衷于用代码摆平一切的我几乎将这本教科书上的每种算法都实现了一遍,这种重复劳动虽然意 ...

最新文章

  1. 安全漏洞“心脏出血”继续 原因是“丘比特”
  2. 2.2.2 物理层设备(中继器、集线器)
  3. zigbee 协议栈原语及zstack实现
  4. 代码命名,代码里的命名规则:错误的和正确的对比 命名方法总结 “自我描述的源代码”用代码表达出你的思想,让其他人通过代码能明白你的意图。...
  5. LeetCode 03. 无重复字符的最长子串
  6. android webview url scheme,Android Webview ERR_UNKNOWN_URL_SCHEME错误
  7. java tcp实现_JAVA 通过 Socket 实现 TCP 编程
  8. 【python零基础入门学习】Python入门,带你快速学习为什么那么多人想学 Python?
  9. java 存储变量_如何在Java 8中将方法存储在变量中?
  10. js原生继承几种方式
  11. TS封装格式介绍及解析
  12. 虚拟麦克风音频输入_Audio Precision 全新声学/音频分析软件可减少测试时间
  13. 计算机识别人脸原理,人脸识别:原理、方法与技术
  14. mybatis 中文官网
  15. 【全开源+免费更新】doodoo.js快速入门教程 1
  16. vue 使用video加载视频进行展示,视频循环自动播放
  17. 成功解决:fatal: detected dubious ownership in repository at ‘E:/workspace/CSMarket‘。如何使用git工具通过命令行的形式
  18. hive编程指南笔记
  19. 如何制作注册登录网址
  20. 思科FTP服务器基本配置

热门文章

  1. 计算机专业数字逻辑,大学计算机专业数字逻辑课程试卷及答案(4份)
  2. echarts 广州地图入门案例
  3. 第四轮学科评估计算机专业排名,第四轮学科评估
  4. 应用时间序列分析(王燕)学习笔记1
  5. Javascript闭包 ,JS中没有public,private等修饰词,里面的变量就分为globle和局部变量
  6. maxwell生成动态磁力线/磁密云图一些报错警告解决办法
  7. 华为的服务器虚拟化软件,华为FusionSphere虚拟化软件各版本之间的功能和区别
  8. 华为USG6000V双机热备HRRP
  9. App测试工具列表整理
  10. 一个无穷积分方程的求解