# newbee_mall **Repository Path**: linx93/newbee_mall ## Basic Information - **Project Name**: newbee_mall - **Description**: 基于协同过滤算法的商品推荐 购物电商网站 - **Primary Language**: Java - **License**: GPL-3.0 - **Default Branch**: 20210512 - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 10 - **Created**: 2022-01-08 - **Last Updated**: 2022-01-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README newbee-mall 项目是一套电商系统,包括 newbee-mall 商城系统及 newbee-mall-admin 商城后台管理系统,基于 Spring Boot 2.X 及相关技术栈开发。 前台商城系统包含首页门户、商品分类、新品上线、首页轮播、商品推荐、商品搜索、商品展示、购物车、订单结算、订单流程、个人订单管理、会员中心、帮助中心等模块。 后台管理系统包含数据面板、轮播图管理、商品管理、订单管理、会员管理、分类管理、设置等模块。 一、介绍 商品推荐是针对用户面对海量的商品信息而不知从何下手的一种解决方案,它可以根据用户的喜好,年龄,点击量,购买量以及各种购买行为来为用户推荐合适的商品。在本项目中采用的是基于用户的协同过滤的推荐算法来实现商品的推荐并在前台页面进行展示,我将会使用余弦相似度的度量方法来计算用户与用户之间相似性,最终将相似度较高的用户浏览的商品推荐给用户。 协同过滤推荐算法是诞生最早,并且较为著名的推荐算法。主要的功能是预测和推荐。算法通过对用户历史行为数据的挖掘发现用户的偏好,基于不同的偏好对用户进行群组划分并推荐品味相似的商品。协同过滤推荐算法分为两类,分别是基于用户的协同过滤算法(user-based collaboratIve filtering),和基于物品的协同过滤算法(item-based collaborative filtering)。简单的说就是:人以类聚,物以群分。 皮尔森(pearson)相关系数公式 公式定义为: 两个连续变量(X,Y)的pearson相关性系数(Px,y)等于它们之间的协方差cov(X,Y)除以它们各自标准差的乘积(σX,σY)。系数的取值总是在-1.0到1.0之间,接近0的变量被成为无相关性,接近1或者-1被称为具有强相关性。 通常情况下通过以下取值范围判断变量的相关强度: 相关系数 0.8-1.0 极强相关 0.6-0.8 强相关 0.4-0.6 中等程度相关 0.2-0.4 弱相关 0.0-0.2 极弱相关或无相关 三、余弦相似度的原理 在三角形中,cos30°=二分之根三,cos60°=1/2。很明显,cos30°相比于cos60°更接近于 1,可以看出角度越接近于 0°,对应的余弦值越接近于 1,构成这个角度的两条边也就越接近于重合,也就可以认为这两条边越相似。 在二维的平面向量中,两个向量之间夹角的余弦值公式为: img 假设两个向量a,b的坐标分别为(x1,y1)、(x2,y2),所以最终可以化简为: img 注:其中的x和y是两个不同的维度,在向量直角坐标系中可以认为是距x和y轴的距离,但是在实际的应用中,可以是把它理解为一个物体的任何一个可以衡量它与其他物体不同之处的属性…咳咳,还是说人话吧,在商品推荐中可以把向量 a 和向量 b 理解为两个不同的用户,把 (x1,y1) 理解为 a 用户对 x 商品的点击次数和对 y 商品的点击次数,再把对应的值带入上述公式即可求出两个用户之间的相似性,越接近于 1 ,说明两个用户的浏览行为越相似,就可以把一个用户浏览过的商品推荐给另一个没有浏览过该商品的用户,从而完成商品推荐。 设向量 A = (A1,A2,A3,…,An), B = (B1,B2,B3,…,Bn),推广到多维,公式为: img 其中的 A1,A2,A3…就可以理解为该用户对不同的商品的点击量。 详情参考: https://blog.csdn.net/QGhurt/article/details/116348205 ##运行部署 1.IDEA导入项目,maven下载jar 将resource目录下的upload.zip解压到resource目录下 2.将resource目录下的newbee_mall_db.sql复制到navicat中执行,刷新检查数据库表是否建立成功; 3.将src\main\java\ltd\newbee\mall\common\Constants.java中的这行路径 public final static String FILE_UPLOAD_DIC = "E:\\IDEA\\newbee-mall\\src\\main\\resources\\upload\\"; 改成你项目中刚刚解压得到的upload文件夹的路径,注意斜杠\\; 4.将src\main\resources\application.properties中的 spring.datasource.username=root spring.datasource.password=1234 数据库用户名密码改成你自己的 5.运行src\main\java\ltd\newbee\mall\NewBeeMallApplication.java启动springboot项目,浏览器访问localhost:8080 ## 页面展示 以下为商城项目的部分页面,由于篇幅所限,无法一一列举,重要节点及重要功能的页面都已整理在下方。 ### 商城页面预览 - 商城首页 1 ![index](https://newbee-mall.oss-cn-beijing.aliyuncs.com/poster/product/index-01-2020.gif) - 商城首页 2 ![index](https://newbee-mall.oss-cn-beijing.aliyuncs.com/poster/product/index-02.png) - 商品搜索 ![search](https://newbee-mall.oss-cn-beijing.aliyuncs.com/poster/product/search.png) - 购物车 ![cart](https://newbee-mall.oss-cn-beijing.aliyuncs.com/poster/product/cart.png) - 订单结算 ![settle](https://newbee-mall.oss-cn-beijing.aliyuncs.com/poster/product/settle.png) - 订单列表 ![orders](https://newbee-mall.oss-cn-beijing.aliyuncs.com/poster/product/orders.png) - 支付页面 ![settle](https://newbee-mall.oss-cn-beijing.aliyuncs.com/poster/product/wx-pay.png) ### 后台管理页面 - 登录页 ![login](https://newbee-mall.oss-cn-beijing.aliyuncs.com/poster/product/manage-login.png) - 轮播图管理 ![carousel](https://newbee-mall.oss-cn-beijing.aliyuncs.com/poster/product/manage-carousel.png) - 新品上线 ![config](https://newbee-mall.oss-cn-beijing.aliyuncs.com/poster/product/manage-index-config.png) - 分类管理 ![category](https://newbee-mall.oss-cn-beijing.aliyuncs.com/poster/product/manage-category.png) - 商品管理 ![goods](https://newbee-mall.oss-cn-beijing.aliyuncs.com/poster/product/manage-goods.png) - 商品编辑 ![edit](https://newbee-mall.oss-cn-beijing.aliyuncs.com/poster/product/manage-goods-edit-new.png) - 订单管理 ![order](https://newbee-mall.oss-cn-beijing.aliyuncs.com/poster/product/manage-order.png) ![newbee-mall-info](https://newbee-mall.oss-cn-beijing.aliyuncs.com/poster/store/newbee-mall-info-3.png)