基于协同过滤算法的校园二手商城平台

2024-03-17 13:10

本文主要是介绍基于协同过滤算法的校园二手商城平台,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

👏作者简介:大家好,我是Rockey,不知名企业的不知名Java开发工程师
🔥如果感觉博主的文章还不错的话,请👍三连支持👍一下博主哦
📝联系方式:he18339193956,加我进群,大家一起学习,一起读书,一起对抗互联网寒冬👀

视频讲解

     最近给之前做的校园二手商城平台加了一个推荐算法,大家可以参考下面的视频以及下面的文字讲解。

基于协同过滤算法的校园二手商城

     经过调查,目前存在的推荐算法 目前,协同过滤、基于内容推荐和混合推荐三种算法在电商领域被广泛应用。本系统采用的是协同过滤算法,协同过滤算法分为基于用户的协同过滤算法以及基于物品的协同过滤算法,这两种的发展是根据实际情况不同逐渐演变的。

协同算法的历史

     协同算法是推荐系统中的一种常见算法,最早应该可以追溯到二十世纪六十年代。在那个时候,社会科学家和心理学家开始研究人们在不同情境下的行为,他们发现人们的决策往往受到周围人的影响。这种现象促使计算机科学家开始思考如何利用用户相似性来进行推荐。
     在1990年代末至2000年代初期,随着互联网的发展,电子商务网站迅速兴起,推荐系统的需求也越来越大,此时协同过滤算法逐渐成为一个研究热点。最具代表性的就是Netflix为了提高自己的推荐效果,发起的"百万美元推荐挑战赛",促进了推荐系统领域的技术突破和发展。之后,深度学习等人工智能技术的崛起,为推荐系统带来了新的可能性,例如使用基于神经网络的推荐算法,其中最具代表性的是Google推出的Wide&Deep模型和YouTube推出的DNN模型。尽管已经有了很多种推荐算法,但协同算法仍然是一个非常好的选择,并且在实践中被广泛应用。

协同过滤算法有那些分类

     协同过滤(Collaborative Filtering)是一种推荐算法,它基于用户行为数据(或收集的其它反馈信息),利用用户之间的相似性或物品之间的相似性来进行推荐。该算法分为两类:基于用户的协同过滤和基于物品的协同过滤。
     基于用户的协同过滤:首先计算用户之间的相似度,然后根据相似用户对物品的评分数据,对指定用户未评分的物品进行预测和排序,最后将预测得分高的物品推荐给该用户。这种方法的缺点是当用户数增加时,计算量会不断增加,而且存在“稀疏”问题,即用户对物品的评分数据往往是稀疏的。
     基于物品的协同过滤:首先计算物品之间的相似度,然后根据用户历史行为数据(如点击、购买、评分等)中涉及到的物品相似性,对用户没行为过的物品进行预测和排序,最后将预测得分高的物品推荐给该用户。这种方法相对于基于用户的协同过滤算法具有更好的稳定性和扩展性,但是需要预先计算物品相似度矩阵,而这个计算过程可能会比较耗时。
     除了以上两种常见的协同过滤算法,还有基于模型的协同过滤算法和混合方法等。基于模型的协同过滤算法通过建立模型来预测用户对物品的评分或行为,例如Matrix Factorization(矩阵分解)等;混合方法则将不同的算法和数据源结合起来进行推荐。

基于用户的协同过滤算法

关键点在于找到相似的用户 ,核心思想是人以群分,来给相似的用户推荐相同的商品,举例如下:
在这里插入图片描述
     从这个图中我们可以看出,用户A喜欢的物品有物品A,物品C;用户B喜欢的物品只有物品B;用户C喜欢的物品有物品A,物品C,物品D。我们可以看出用户A 和用户C的喜好很相似,因为其都购买了物品A以及物品C,这时候我们就可以把物品D推荐给用户A。
站在系统的层面考虑,主要是计算用户之间的相似度,就是如何计算和目标用户相似的人,
这个在下文有方法。

基于物品的协同过滤算法

     关键在于物品的相似,例如你购买了一件科比的篮球鞋科1,那么会为你推荐科比的科比4,根据物品的相似来进行一个推荐,下面是一个例子
![在这里插入图=blog.csdnimg.cn/39336a87972946f0b764d7b2d13f8fb0.png)
     用户A喜欢的有物品A,物品C;用户B喜欢的有物品A,物品B,物品C;用户C喜欢的有物品A;物品A和物品C相似,我们就可以给用户C推荐物品C。

校园二手商城平台采用的是基于用户的协同过滤算法,下面讲解具体过程,基于用户的协同过滤关键点在于找到与你相似的人,下面讲解几种常用的计算相似度的方法

皮尔逊相关系数

计算X与Y的线性相关性:
在这里插入图片描述
     皮尔逊相关系数的取值范围,为[-1,1],其绝对值越接近1相关性越强,绝对值越接近于0,相关性越弱,相关系数小0时说明两个变量之间呈现负相关,大于0,则为正相关,对于相关性强度可以参考下表:
在这里插入图片描述
计算过程:

Cov(X,Y)为协方差,D(X),D(Y)为方差
g.cn/de43d98d078b4e41a31003124b8737fb.png)
有下面四个公式可以进行计算:
在这里插入图片描述
关于公式四,我进行简单的推导,过程如下:
在这里插入图片描述

欧式距离

     欧式距离(Euclidean Distance)是指在数学上欧几里得空间中两点间的距离,也称为欧几里得度量。它是指在多维空间中,两个向量之间的物理距离,是最常见的距离度量方法之一。欧氏距离定义为两个向量之间的欧几里得范数,即两点之间的直线距离。在二维或三维空间中,欧式距离可以直观的理解为两点之间的直线距离。
在这里插入图片描述
欧式距离公式为:
在这里插入图片描述

校园二手商城平台中用户之间相似度的计算是通过皮尔逊相关系数来计算的

系统实现

     上面说了相似度,那么用户的相似度,反应在代码层面就是两个用户都对物品的喜爱,这个喜爱,我们可以通过用户点击商品的详情,收藏商品以及购买商品反应出来。
这里我们建一个recommend表,表中记录用户的userid,商品的commid,以及score,得分就是用户对商品的喜爱度,
在这里插入图片描述
代码中浏览商品详情一次,我会把得分加一,这个也可自己设置
在这里插入图片描述
收藏商品一次,分值会加3
在这里插入图片描述
购买一次会加5分
在这里插入图片描述

这样通过记录用户的历史操作,在表中记录其对物品的喜爱,然后用根据表中其他的用品给其做推荐,推荐其还没购买的商品

用户刚登录或者没有登录的情况下,是猜您喜欢页面中是没有数据的,
在这里插入图片描述
具体的流程如如下所示;
在这里插入图片描述

结语

🔥一个人可以掌握知识,但只有与他人交流才能形成智慧。
🔥One person can acquire knowledge, but wisdom is formed only in the exchange with others.
📝 欢迎大家关注博主公众号 Rockey小何同学 添加博主微信:he18339193956进群,一起学习,一起成长,一起提高认知。
🏆 我坚信人与人之间的差距是表面上是财富的差距,本质上是大脑中认知的差距,

我们下期再见。

这篇关于基于协同过滤算法的校园二手商城平台的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/819047

相关文章

Linux之platform平台设备驱动详解

《Linux之platform平台设备驱动详解》Linux设备驱动模型中,Platform总线作为虚拟总线统一管理无物理总线依赖的嵌入式设备,通过platform_driver和platform_de... 目录platform驱动注册platform设备注册设备树Platform驱动和设备的关系总结在 l

Java中的雪花算法Snowflake解析与实践技巧

《Java中的雪花算法Snowflake解析与实践技巧》本文解析了雪花算法的原理、Java实现及生产实践,涵盖ID结构、位运算技巧、时钟回拨处理、WorkerId分配等关键点,并探讨了百度UidGen... 目录一、雪花算法核心原理1.1 算法起源1.2 ID结构详解1.3 核心特性二、Java实现解析2.

使用雪花算法产生id导致前端精度缺失问题解决方案

《使用雪花算法产生id导致前端精度缺失问题解决方案》雪花算法由Twitter提出,设计目的是生成唯一的、递增的ID,下面:本文主要介绍使用雪花算法产生id导致前端精度缺失问题的解决方案,文中通过代... 目录一、问题根源二、解决方案1. 全局配置Jackson序列化规则2. 实体类必须使用Long封装类3.

Springboot实现推荐系统的协同过滤算法

《Springboot实现推荐系统的协同过滤算法》协同过滤算法是一种在推荐系统中广泛使用的算法,用于预测用户对物品(如商品、电影、音乐等)的偏好,从而实现个性化推荐,下面给大家介绍Springboot... 目录前言基本原理 算法分类 计算方法应用场景 代码实现 前言协同过滤算法(Collaborativ

在.NET平台使用C#为PDF添加各种类型的表单域的方法

《在.NET平台使用C#为PDF添加各种类型的表单域的方法》在日常办公系统开发中,涉及PDF处理相关的开发时,生成可填写的PDF表单是一种常见需求,与静态PDF不同,带有**表单域的文档支持用户直接在... 目录引言使用 PdfTextBoxField 添加文本输入域使用 PdfComboBoxField

深入理解Apache Kafka(分布式流处理平台)

《深入理解ApacheKafka(分布式流处理平台)》ApacheKafka作为现代分布式系统中的核心中间件,为构建高吞吐量、低延迟的数据管道提供了强大支持,本文将深入探讨Kafka的核心概念、架构... 目录引言一、Apache Kafka概述1.1 什么是Kafka?1.2 Kafka的核心概念二、Ka

openCV中KNN算法的实现

《openCV中KNN算法的实现》KNN算法是一种简单且常用的分类算法,本文主要介绍了openCV中KNN算法的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录KNN算法流程使用OpenCV实现KNNOpenCV 是一个开源的跨平台计算机视觉库,它提供了各

在Android平台上实现消息推送功能

《在Android平台上实现消息推送功能》随着移动互联网应用的飞速发展,消息推送已成为移动应用中不可或缺的功能,在Android平台上,实现消息推送涉及到服务端的消息发送、客户端的消息接收、通知渠道(... 目录一、项目概述二、相关知识介绍2.1 消息推送的基本原理2.2 Firebase Cloud Me

springboot+dubbo实现时间轮算法

《springboot+dubbo实现时间轮算法》时间轮是一种高效利用线程资源进行批量化调度的算法,本文主要介绍了springboot+dubbo实现时间轮算法,文中通过示例代码介绍的非常详细,对大家... 目录前言一、参数说明二、具体实现1、HashedwheelTimer2、createWheel3、n

SpringIntegration消息路由之Router的条件路由与过滤功能

《SpringIntegration消息路由之Router的条件路由与过滤功能》本文详细介绍了Router的基础概念、条件路由实现、基于消息头的路由、动态路由与路由表、消息过滤与选择性路由以及错误处理... 目录引言一、Router基础概念二、条件路由实现三、基于消息头的路由四、动态路由与路由表五、消息过滤