ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

基于Java实现的商品推荐系统

2021-03-05 19:59:53  阅读:188  来源: 互联网

标签:基于 Java 推荐 用户 商品 相似 类目 向量


源码及论文下载:
http://www.byamd.xyz/tag/java/

一、介绍

商品推荐是针对用户面对海量的商品信息而不知从何下手的一种解决方案,它可以根据用户的喜好,年龄,点击量,购买量以及各种购买行为来为用户推荐合适的商品。在本项目中采用的是基于用户的协同过滤的推荐算法来实现商品的推荐并在前台页面进行展示,我将会使用余弦相似度的度量方法来计算用户与用户之间相似性,最终将相似度较高的用户浏览的商品推荐给用户。

二、目标

  • 商品推荐:根据不同用户之间的相似性来推荐给用户合适的商品
  • 一级类目管理:管理一级类目的相关功能
  • 二级类目管理:管理二级类目的相关功能
  • 商品管理:对商品进行上架,下架,修改信息
  • 管理员管理:管理管理员,用于商城后台的管理平台页面
  • 商城会员管理:管理商城会员,对商城页面的会员进行管理
  • 商城会员登录及注册:实现商城用户的登录功能以及注册功能

三、采用的技术

3.1 开发环境

  • 操作系统:Windows8.1
  • IDE:eclipse
  • Java版本:1.8
  • 数据库:mysql5.6.36
  • 服务器:tomcat8
  • 项目的构建工具:Maven

3.2 后台框架

  • spring-4.2.1

    :轻量级的IOC和AOP的容器框架

    • springMVC-4.2.1表示层框架,负责匹配请求,处理请求,返回视图
    • mybatis-3.3.1建立与数据库的会话
    • druid-1.1.16为监控而生的数据库连接池

四、推荐流程

img

五、界面

img

六、阶段性成果

6.1 用户相似度计算功能

以下为通过余弦相似度公式计算得出的用户与用户之间的相似度:

具体的代码实现见 shopping/recommendate/util/RecommendUtils.java。

1    2    0.9994891442833921    3    0.9510094685910491    4    0.61016991946945632    3    0.95149554552980992    4    0.61048178758052683    4    0.6408097907695536

6.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…就可以理解为该用户对不同的商品的点击量。

6.3 计算出要推荐给用户的二级类目

通过上一阶段对用户相似度之间的求解,可以获得与某个用户最相似的前N个用户,(假设需要被推荐商品的用户为X)然后在这N个用户的浏览记录中查找X没有浏览的类目,但是这N个用户浏览的二级类目的类目的id,作为推荐给用户的二级类目id。

具体的代码实现见 shopping/recommendate/util/RecommendUtils.java。

img

对用户的商品推荐

在上一个阶段确定了要推荐给用户的二级类目之后,找出每个类目下点击量最高的商品推荐给用户。

直观感受一下:

img

标签:基于,Java,推荐,用户,商品,相似,类目,向量
来源: https://blog.csdn.net/huaying0/article/details/114410876

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有