协同过滤推荐算法介绍(协同过滤的推荐算法)

随着电商企业的发展,为了更好的了解用户喜好以便于将更加适合的商品推荐给用户,不仅能得到用户好的评价,而且也有利于自身企业的利益,因此,随之诞生了很多推荐系统,最为常用的推荐算法就是协同过滤算法。转载请标明原文链接推荐算法的基础就是基于两个对象之间的相关性,常用的计算方法有欧几里得相似性,这是一种使用较多的相似性计算方法。除此之外还有曼哈顿相似性和余弦相似性的计算方法。协同过滤算…

大家好,又见面了,我是你们的朋友全栈君。

随着电商企业的发展,为了更好的了解用户喜好以便于将更加适合的商品推荐给用户,不仅能得到用户好的评价,而且也有利于自身企业的利益,因此,随之诞生了很多推荐系统,最为常用的推荐算法就是协同过滤算法。

转载请标明原文链接原文地址

推荐算法的基础就是基于两个对象之间的相关性,常用的计算方法有欧几里得相似性,这是一种使用较多的相似性计算方法。除此之外还有曼哈顿相似性和余弦相似性的计算方法。

协同过滤算法又称“集体计算”方法,其主要思想是利用人性的相似性进行相似性的比较。协同过滤算法主要有两种具体形式。

  • 基于用户的推荐算法
  • 基于 物品的推荐算法

基于用户的推荐算法

基于用户的推荐算法可以用一个词语来描述,就是“志趣相投”,如果两个人有着相同的兴趣和品位,那么在一般情况下,你朋友喜欢的东西你也会喜欢,因此,协同过滤算法就是基于这种特性来向用户推荐产品的。

那么在电商项目中应用该算法呢?以购物为例,你在淘宝上买完一件东西之后,就需要你对该商品进行评分,因此,基于客户对于产品的评分就可以判断两个用户之间的相似度,其实生活中有很多例子,不仅仅是商品,还有电影,音乐推荐等等,其应用广泛。

在协同过滤算法的应用中,常常会有下面两个元素:

  • Item:能够被推荐给用户的项目
  • User:用户,能够对Item进行评分

    一般情况下会建立User-Item矩阵:
    这里写图片描述

下面来看看基于用户推荐算法的步骤。
查找用户的相似度
这里写图片描述

1.如何预测用户1对于商品4的喜好程度?

2.找到和用户1相似的用户且购买过商品4(基于购买记录)即为用户n。

3.根据用户n对商品4的评价,以相似度为权重回填结果 。

4.针对所有用户组合,重复1~3,直到所有空格都被填满

从上面的步骤中可以看出,该算法的实现难度不大,其核心在于找出相似的用户,这需要选择合适的相似度计算方法进行计算。基于用户的协同过滤算法做的推荐,用特定的扫描和指定目标相同已有用户,根据给定的相似度对用户进行相似度计算,选择得分最高的用户并根据其已有的信息作为推荐结果从而反馈给用户。这种推荐算法在计算结果上较为简单易懂,具有很高的实践应用价值。

基于物品的推荐

同样的,对于基于物品的推荐算法也可以使用一个词语来进行描述,即“物以类聚”,根据物品的相似性作为用户喜好的依据推荐给用户。顾名思义,基于物品的推荐算法是以已有的物品为线索去进行相似度计算从而给特定的目标用户。

基于物品的推荐算法步骤如下:

找出相似的Item
这里写图片描述

1.如何预测用户1对于商品4的喜好程度?

2.从用户1历史记录中,计算商品n和商品4的相似度(以其他用户的历史记录)。

3.将用户1对于商品n的评价,以商品相似度为权重回填。

4.针对所有商品组合,重复1~3直到所有空格都被填满。

协同过滤算法的优缺点

基于用户的和基于物品的推荐算法均是最常用的协同过滤算法,但是需要按照场合使用,在有些场合它们也存在着不足之处。

首先,基于用户的推荐算法,这种方式往往会将一些热度的物品排在推荐的首位,因此对用户的喜好预测不是很准确,并且这种推荐没有任何意义,更有热度的物品并不需要推荐,用户自己喜欢的话自己会去买,而根据二八定律,在现代互联网的销售中,有80%的销售额来自于20%的热门名牌,众所周知,互联网销售物品繁多,用户也许进入购物网站对于如此海量的商品在没有目的的购物时往往会比较头疼,但是如果我们能主动推荐一款产品,就可以解决用户的烦扰,也促进了商品的销售。而在这些繁多的商品中,“冷门”商品占绝大多数,我们称这些物品为“长尾商品”(出自美国《连线》杂志在2004年发表的“The Long Tail”一文,并且出版了《长尾理论》一书),我们要对这些长尾商品进行数据挖掘,提高其销售额,因此必须充分研究用户的兴趣,从而将长尾商品准确的推荐给需要它的用户,而不是对一些“热度”物品做反复的推荐。而且基于用户的推荐算法数据量较为庞大,计算费事。

基于物品的推荐算法,其数据量不大,可以较为容易的生成推荐值,但是它也存在着一个问题,同类物品的问题,例如,在你购买了一个商品之后,如果还推荐相同类型的商品,用户也许想下次购买时试试别的类型的商品,此时的推荐就不算成功,因此其准确率也不高。

因此,可以总结出基于用户的推荐算法推荐效果好,不过数据量较大,计算费事;基于物品的推荐算法推荐效果不是很显著,但是数据量不大,计算效率高。

参考资料:
《Spark MLlib机器学习实践》 王晓华 著 清华大学出版社

《Mahout数据挖掘介绍》

《推荐系统实践》

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/127747.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 创建Java中的线程池

    创建Java中的线程池

    2021年5月6日
    107
  • jvm调优基本思路(jmp如何分析两组数据的关系)

    堆大小设置JVM中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。我在WindowsServer2003系统,3.5G物理内存,JDK5.0下测试,最大可设置为1478m。典型设置:java -Xmx3550m-Xms355

    2022年4月16日
    38
  • Windows上安装MySQL

    Windows上安装MySQLMySQL针对不同的用户提供了2中不同的版本:MySQLCommunityServer:社区版。由MySQL开源社区开发者和爱好者提供技术支持,对开发者开放源代码并提供免费下载。MySQLEnterpriseServer:企业版。包括最全面的高级功能和管理工具,不过对用户收费。下面讲到的MySQL安装都是以免费开源的社区版为基础。打开MySQL数据库官网的下载地址http:/

    2022年5月29日
    34
  • list转json字符串再转回list

    list转json字符串再转回listList<String>words=newArrayList<>();words.add(“好汉”);words.add(“壮士”);StringwordsJson=JsonUtil.javaBeanToJson(words);List<String>list=JsonUtil.jsonArrayToList(wordsJson,Stri…

    2022年10月17日
    0
  • Oracle触发器trigger详解

    Oracle触发器trigger详解触发器相关概念及语法概述本篇博文中主要探讨以下内容:什么是触发器触发器的应用场景触发器的语法触发器的类型案例数据:触发器的概念和第一个触发器数据库触发器是一个与表相关联的,存储的PL/SQL语句。每当一个特定的数据操作语句(insertupdatedelete)在指定的表上发出时,Oracle自动执行触发器中定义的语句序列。举个简单的例子:当员…

    2022年7月11日
    18
  • Python源代码_源代码版权和软件著作权

    Python源代码_源代码版权和软件著作权一个小需求:在申请软件著作权的时候,需要提交一页50行,总共60页的源代码。但是设计的项目保存在多级的目录下,不想一个一个复制,遂通过python,os模块获得全部目录的文件,re正则化过滤无效源代码,然后基于docx模块写入到word中。涉及的模块有os,docx,re同学们要自行下载上述的模块,使用pipinstallXXX就可以的。。python大法好呀那我们就分为2个大的…

    2022年9月22日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号