基于聚类分析和协同过滤算法的营养膳食分析系统的设计与实现

2023-11-14

1 简介

今天向大家介绍一个帮助往届学生完成的毕业设计项目,基于聚类分析和协同过滤算法的营养膳食分析系统的设计与实现

1. 协同过滤的算法思想

1.1. 基于内容的推荐中不足之处

基于内容的推荐方法用户易于理解,简单有效,但是它的缺点也十分明显。

  • 它要求内容必须能够抽取出有意义的特征,且要求这些特征内容有良好的结构性
  • 推荐精度较低,相同内容特征的物品差异性不大。因为以上这些原因,在推荐系统中基于内容的推荐往往会和其他方法混合使用。

1.2. 协同过滤算法思想推导

比如你想看一个电影,但是不知道具体看哪一部,你会怎么做?

  • 问问周围兴趣相似的朋友,看看他们最近有什么好的电影推荐。(基于用户)
  • 看看电影的相似程度,比如都喜欢看僵尸片,那就会找电影名带有僵尸、丧尸之类的电影。(基于物品)

比如到玩具店去给小男孩选玩具,应该怎么选?

  • 我看到大部分小男孩都在玩变形金刚,给他买个变形金刚怎么样?(基于用户)
  • 我知道这个小男孩有很多乐高模型,给他买一个最新版的乐高模型怎么样?(基于物品)

由此可以推导出协同过滤算法思想,如下所示:

  • 协同过滤算法就是基于上面的思想,主要包含基于用户的协同过滤推荐算法以及基于物品的协同过滤推荐算法。
  • 基于物品的协同过滤算法的核心思想:给用户推荐那些和他们之前喜欢的物品相似的物品,用户U 购买了A 物品,推荐给用户U 和A 相似的物品B /C /D
  • 基于用户的协同过滤算法的核心思想:是先计算用户U 与其他的用户的相似度,然后取和U 最相似的几个用户,把他们购买过的物品推荐给用户U

1.3. 使用协同过滤算法的步骤

  1. 收集用户偏好。
  2. 找到相似的用户或者物品。
  3. 计算推荐。
  4. 评估

1.4. 使用协同过滤算法中需要注意的点

这里的基于物品的协同过滤和之前的基于内容的推荐算法不一样,基于内容的推荐算法仅仅考虑物品的内容特征,而协同过滤包括物品+用户

这里的基于用户的协同过滤和之前的基于人口统计学推荐算法不一样,基于人口统计学推荐算法考虑的是用户的基本属性(用户画像),基于用户的协同过滤考虑的是用户的对于物品的评价(喜好)

协同:用户与用户之间、用户和网站之间等进行不断的互动,慢慢过滤掉自己不感兴趣的物品,从而满足自己的需求。

2. 协同过滤的推荐方法

协同过滤和基于内容这2种方法对比:

  • 基于内容(Content based,CB)主要利用的是用户评价过的物品的内容特征,而基于协同过滤(Collaboraitive Filtering,CF)方法还可以利用其他用户评分过的物品内容

  • CF可以解决CB的一些局限

    • 物品内容不完全或者难以获得时,依然可以通过其他用户的反馈给出推荐
    • CF基于用户之间对物品的评价质量,避免了CB仅依赖内容可能造成的对物品质量判断的干扰
    • CF推荐不受内容限制,只要其他类似用户给出了对不同物品的兴趣,CF就可以给用户推荐出内容差异很大的物品(但有某种内在联系)

协同过滤的方法分类:

  • 基于近邻的协同过滤:

    • 基于用户(User-CF)
    • 基于物品(Item-CF)
  • 基于模型的协同过滤:

    • 奇异值分解(SVD)
    • 潜在语义分析(LSA)
    • 支持向量机(SVM)

3. 基于近邻的协同过滤

3.1. 什么是基于近邻的协同过滤

  • 基于用户的协同过滤(UserCF):给用户推荐和用户相似的其他用户喜欢的东西。
  • 基于物品的协同过滤(ItemCF):给用户推荐和用户喜欢的东西相似的其他东西。
  • 基于近邻的推荐系统根据的是相同 “口碑” 准则,如下所示,是否应该给Cary推荐《泰坦尼克号》?答案是肯定的

3.2. 基于用户的CF

用户A喜欢的物品用户C都喜欢,我们认为用户A与用户C相似,

那么用户C喜欢的东西可能用户A也喜欢,因此将用户C喜欢的物品推荐给用户A。

思想总结如下:

  • 基于用户的协同过滤推荐的基本原理是,根据所有用户对物品的偏好,发现与当前用户口味和偏好相似的“邻居”用户群,并推荐近邻所偏好的物品

  • 在一般的应用中是采用计算“K-近邻”的算法;基于这 K 个邻居的历史偏好信息,为当前用户进行推荐

  • User-CF和基于人口统计学的推荐机制

    • 两者都是计算用户的相似度,并基于相似的“邻居”用户群计算推荐
    • 它们所不同的是如何计算用户的相似度:基于人口统计学的机制只考虑用户本身的特征,而基于用户的协同过滤机制可是在用户的历史偏好的数据上计算用户的相似度,它的基本假设是,喜欢类似物品的用户可能有相同或者相似的口味和偏好

模型核心算法伪代码表示如下:

基于该核心算法,完成用户商品矩阵:

预测用户对于未评分的物品的分值,然后按照降序排序,进行推荐。

3.3. 基于物品的CF

喜欢物品A的用户都喜欢物品C,那么我们认为物品A与物品C相似,

那么喜欢物品A的用户也可能会喜欢物品C,因此,将物品C推荐给喜欢物品A的用户。

思想总结如下:

  • 基于项目的协同过滤推荐的基本原理与基于用户的类似,只是使用所有用户对物品的偏好,发现物品和物品之间的相似度,然后根据用户的历史偏好信息,将类似的物品推荐给用户

  • Item-CF和基于内容(CB)的推荐

    • 其实都是基于物品相似度预测推荐,只是相似度计算的方法不一样,前者是从用户历史的偏好推断,而后者是基于物品本身的属性特征信息
  • 同样是协同过滤,在基于用户和基于项目两个策略中应该如何选择呢?

    • 电商、电影、音乐网站,用户数t远大于物品数量
    • 新闻网沾,物品(新闻文本)数员可能大于用户数量

2 设计概要

4.2系统整体模块
系统功能
1、 为商家提供可运营的平台;
2、 在系统中可以为商家添加的菜品进行营养成分分析;
3、 用户需要登陆注册自己的个人账号;
4、 为用户提供点餐系统;
5、 用户可在营养查询界面进行食物的营养成分查询
6、 用户可以查询自己的历史饮食记录
7、 用户可以自行输入每餐获得相应的营养卡和标准营养卡的对比。
餐饮系统模块功能:
用户注册:主要是实现用户的注册功能。
用户登录:监测对象输入相关的个人信息登录系统,登录成功后,会进入系统主界面。
搜索:可查询各种食材的营养含量。
后台管理部分
系统的后台主要负责对系统数据库的定期维护和营养医师对食物和菜肴的添加
和修改,以下是其主要功能的简单描述:
食物信息管理:对食物种类、食物信息的添加、删除和查询。
菜肴信息管理:对菜肴种类、菜肴信息的添加、删除和查询。
早餐信息管理:对早餐种类、菜肴信息的添加、删除和查询。
营养分析系统功能:
膳食分析:监测对象可以通过主界面进入膳食分析界面,膳食分析主要根据用户录入的膳食信息,实现对监测对象进行膳食分析,并显示膳食分析的结果。
自动配餐:根据用户当前的状态和用户主食、水果等的选择,自动选择菜肴,并给出自动配餐的结果和菜肴的营养素含量。
用户偏好:显示、修改监测对象的饮食偏好,包括偏好和忌口。
用户建议:显示监测对象提出的建议,提供用户提出建议的方式。

4.2系统整体模块图
在这里插入图片描述

4.2.1注册登录模块
用户进行系统使用前需要先进行登录,登录时会对用户输入的账号和密码进行检测,如果存在则验证正确性,如果不存在则会提示注册。用户注册时,会对用户输入的账号进行检测,如果数据库中存在相同账号则不能进行注册,在注册完毕之后,会提示注册成功,并询问是否返回登录。详细的登录注册流程图如下:
在这里插入图片描述
在这里插入图片描述

4.3注册登录模块流程图
4.2.2点菜模块
点菜模块中有膳食营养分析系统的参与,帮助用户更好的从源头抓起在一定程度上改善饮食健康。用户在开始点菜之前需要提前选择这次餐的类型,系统会根据用户选择在已有菜品中进行挑选,但是由于单一类型的过量食用依旧会对健康造成影响,所以在提交菜单之后系统会自动对菜品进行评估并给出建议。点餐流程图如下:

4.4点菜模块流程图
4.2.3用户模块
用户在个人信息中填写个人健康状况,系统根据用户健康推荐相应的饮食类型;用户可在历史记录中查询近期的饮食情况;膳食营养分析系统会在每次用户用餐完成之后给出营养表单,此表单也位于历史记录之中可供查看;用户可在查询单元中搜索食材的营养含量便于在系统不便于计算时自行调整,系统也将提供营养计算器,供用户自行使用。

4.5用户模块用例图
4.3系统算法模块
膳食营养分析系统主要运用聚类算法和网络爬虫两大算法,其中聚类算法主要解决系统推荐菜谱问题,通过聚类算法将相近的数据进行拉拢达到简化的目的,而爬虫则是解决营养数据来源问题,通过网络爬虫技术将网络上开源的权威营养成分信息进行抓取,再通过数据处理手段进行数据再整合以符合系统所需。本次将采用主题网络爬虫的技术来进行。相比于通用网络爬虫,主题网络爬虫的目标是抓取特定主题页面,过滤无关页面,其特点是专而精。主题网络爬虫能够减轻系统消耗,节约宽带资源[9]。

4.6爬虫算法模块流程图
在这里插入图片描述
在这里插入图片描述

3 系统关键技术

使用springboot,vue,mysql, mybaties, typescript, html ,css, js 等进行开发

4 开发工具

开发工具主要有:idea、jdk1.8、maven、mysql5.7、Navicat等。

5 代码展示

@RequestMapping("/strategy")
@RestController
@Scope("prototype")
public class StrategyController {
    @Autowired
    private StrategyService strategyService;
    @Value("${web.upload-path}")
    private String path;

    @RequestMapping("/findPage")
    public ObjDat<Strategy> findPage(Strategy strategy, @RequestParam(value="page", defaultValue="1") int page, @RequestParam(value="limit", defaultValue="10") int limit){
        return strategyService.findPage(strategy,page-1,limit);
    }

    @RequestMapping("/edit")
    public JsonResult edit(HttpServletRequest request, Strategy strategy) throws IOException {
        User user=(User)request.getSession().getAttribute("user");
        if(user==null){
            return JsonResult.error("请登录");
        }
        String str=strategyService.edit(request,strategy);
        if(str.equals("成功")){
            return JsonResult.success("操作成功");
        }else{
            return JsonResult.error("操作失败");
        }
    }

6 系统功能描述

项目功能演示
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于聚类分析和协同过滤算法的营养膳食分析系统的设计与实现 的相关文章

随机推荐

  • Linux查看用户登陆历史记录(last命令的使用)

    查看某用户的操作历史 cat home username bash history 使用root登陆使用last x可查看用户登陆历史 last 命令 功能说明 列出目前与过去登入系统的用户相关信息 语 法 last adRx f n 帐号
  • python基础知识—集合

    集合 集合与列表 元组类似 可以存储多个数据 但是这些数据是不重复的 具有自动去重功能 集合的格式 变量名 元素1 元素2 元素3 变量 set 可迭代的内容 可迭代内容 gt list str 元组 字典 一 创建集合 1 set1 Tr
  • Win10和Jetson Nano环境下安装Mediapipe-python

    最近因学习需要用到google的mediapipe包进行手部识别 效果不错便想将其移植到jetson nano的ubuntu系统上 坑不少 在这里记录一下过程 步骤 一 Windows10的安装方法 二 Jetson Nano下的安装方法
  • Tomcat无法自动解压缩webapps下的war包

    Tomcat无法自动解压缩webapps下的war包 1 正常描述 把打好的war包放入tomcat gt webapps中 启动tomcat即可自动解压缩war包 然后即可访问 2 问题描述 启动tomcat 可以访问localhost
  • JavaScript引用数据类型之基本包装类型Boolean、Number、String

    JavaScript引用数据类型之基本包装类型 1 Boolean var falseObj new Boolean false 创建Boolean对象 var falseValue false console log typeof fal
  • 【MySQL】sql_mode 模式

    目录 前言 查看 sql mode 方式 查看当前会话的 sql mode 查看全局的 sql mode sql mode 配置属性 ONLY FULL GROUP BY STRICT TRANS TABLES STRICT ALL TAB
  • 一个中年程序员的10年测试人生,进阶测试专家必备5项技能!

    测试架构师成长线路图 第一步 成为互联网时代合格的测试工程师 如果你是入行不满3年的测试工程师 一定对此有迫切需求 此时 你必须迅速掌握被测软件的业务功能与内部架构 并在此基础上运用各种测试方法 尽可能多地发现潜在缺陷 并能够在已知缺陷的基
  • 无符号数 有符号数 与 补码

    无符号数 有符号数 与 补码 本文是深入理解计算机系统这本书里面关于补码有符号数无符号数章节的一个摘要和读书报告 我个人认为这本书关于这一段的表述 要比绝大多数网上的博客甚至是国内教材要深入浅出的多 同时由于markdown的文档表示公式很
  • vue中的动态路由怎么配置

    如何定义动态路由 如何获取传过来的动态参数 一 param方式 配置路由格式 router id 传递的方式 在path后面跟上对应的值 传递后形成的路径 router 123 1 定义路由 在APp vue中
  • 2.2.1 数据结构——矩阵结构、数组结构与数据框

    创建矩阵的函数名为 matrix 其基本语法格式为 matrix data NA nrow 1 ncol 1 byrow TRUE 其中data表示矩阵的元素 nrow和ncol分别表示了矩阵的行数和列数 byrow TRUE表示按行填充
  • Java:Spring、Java、MyBatis常用注解

    Spring 给容器IOC中注入组件 控制层 Controller 业务层 Service 数据访问层 Repository 通用 Component 泛指各种组件 Controller Service Repository都可以称为 Co
  • 第2章 核心技术概览

    运用之妙夺造化 存乎一心胜天工 有人可能会遇到这样的问题 跨境商贸合作中签订的合同 怎么确保对方能严格遵守和及时执行 酒店宣称刚打捞上来的三文鱼 怎么追踪捕捞和运输过程中的时间和卫生 现代数字世界里 怎么证明你是谁 怎么证明某个资产属于你
  • 基于直方图优化的图像增强技术(MATLAB实现)

    前言 直方图均衡是一种图像增强的常用手段 但全局直方均衡经常会给图像带来失真等问题 为了处理相关问题 本文采取了全局直方均衡 局部直方均衡和Retinex算法来对图像进行处理 主函数 img imread img tif In1 Remov
  • 大数加法(C++实现)

    最常规的大数加法 两个数都是非负的整数 思路 用字符串的方式去存储我们需要计算的数 但是要注意的一点就是我们是倒过来存储这个大数的 比如 123456789 我们存储的时候是存成 987654321 为什么要这么干 我觉得是为了便于后面我们
  • C++ :websocket 通讯下的五种 I/O 模型

    目录 I O 多路复用 一种同步 I O 模型 非阻塞与阻塞 select poll epoll 起因 改善 select 与 poll 的差别 I O 模型 阻塞 I O 模型 非阻塞 I O 模型 I O 多路复用模型 信号驱动 I O
  • php curl 返回文件头,php curl请求信息和返回信息设置代码实例,特别是在请求过程中存在重定向的时候获取请求返回头信息...

    在用curl抓取网页内容的时候 经常要知道 网页返回的请求头信息 和请求的相关信息 特别是在请求过程中存在重定向的时候获取请求返回头信息对分析请求内容很有帮助 下面就是一个请求中存在重定向的例子 我们的目的是要获取最终实际请求的url地址
  • linux服务器做游戏服务器配置,详解Linux中搭建常用服务器

    1 搭建telnet服务器 2 搭建DHCP服务器 3 搭建 服务器 4 搭建sendmail服务器 5 搭建FTP服务器 6 搭建web服务器 安装 apache tomcat 7 搭建samba服务器 一 搭建telnet服务器 1 查
  • Sorry, The number you dialed is power off.

    对不起 您所拨打的电话正在通话中 请稍后再拨 Sorry The subscriber you dialed is busy now please redial later 您好 您所拨打的号码是空号 请核对后再拨 Sorry The nu
  • RestTemplate使用HttpClient连接池

    文章目录 RestTemplate使用HttpClient连接池 ClientHttpRequestFactory SimpleClientHttpRequestFactory SimpleClientHttpRequestFactory
  • 基于聚类分析和协同过滤算法的营养膳食分析系统的设计与实现

    1 简介 今天向大家介绍一个帮助往届学生完成的毕业设计项目 基于聚类分析和协同过滤算法的营养膳食分析系统的设计与实现 1 协同过滤的算法思想 1 1 基于内容的推荐中不足之处 基于内容的推荐方法用户易于理解 简单有效 但是它的缺点也十分明显