实现并测试协同滤波算法

news2024/11/19 13:26:41

访问【WRITE-BUG数字空间】_[内附完整源码和文档]

本次实验实现了基于用户和基于项的协同滤波算法,并在 Movielens 两个较小的数据集上进行了测试,测试采用 RMSE 进行评估

一、问题简述
1.1 推荐系统问题
推荐系统问题旨在用户推荐相关项,项可以是用户未观看过的电影、书籍,未访问过的网站,可以是任何可以购买的产品,实现一种个性化的推荐。

推荐系统可以总结为以下模型: Utility Function:  u : X × S → R \text{Utility Function: } u: X \times S \to R Utility Function: u:X×SR 其中, X X X 是用户的集合, S S S 是项的集合, R R R 是用户对项评分的集合,并且是关于项的有序集。

推荐系统问题主要的问题为:如何为矩阵收集已知的评级,如何从已知的评级中推断未知的评级,如何评估推断的好坏。收集评分可以通过显式收集用户的评分,也可以通过学习用户的行为预测评分;推断未知评分可以使用基于内容、协同相关、基于隐因子(矩阵分解)、基于深度模型的模型甚至混合模型等;评估推断的好坏时可以选择在评分表中划分一块区域用于测试,计算平方根误差(RMSE),Top K 的精确度等。

1.2 协同滤波算法
基于用户的协同滤波算法
第一步:读取用户-项的评分矩阵 R R R
第二步:跟据评分矩阵计算用户相似度矩阵 S U S_U SU,在计算相似度时我们选择皮尔森相关系数。我们可以将计算出的评分矩阵保存在文件中,以免下次重复计算。
第三步:假定我们要预测用户 u u u 给项 i i i 的评分。首先找到于目标用户最相似的 K 个用户 U s i m U_{sim} Usim,并且这些用户对项 i i i 有评分记录,根据以下公式计算预测评分: r u , i = ∑ v ∈ U s i m s u , v r v , i ∑ v ∈ U s i m s u , v r_{u,i} = \frac{\sum_{v \in U_{sim}} s_{u,v}r_{v,i}}{\sum_{v \in U_{sim}} s_{u,v}} ru,i=vUsimsu,vvUsimsu,vrv,i 其中, r u , i r_{u,i} ru,i 指用户 u u u 对项 i i i 的预测评分, s u , v s_{u,v} su,v 指用户 u u u 和用户 v v v 的相似度。

基于项的协同滤波算法
第一步:读取用户-项的评分矩阵 R R R
第二步:跟据评分矩阵计算用户相似度矩阵 S I S_I SI,在计算相似度时我们选择皮尔森相关系数。我们可以将计算出的评分矩阵保存在文件中,以免下次重复计算。
第三步:假定我们要预测用户 u u u 给项 i i i 的评分。首先找到于目标项最相似的 K 个项 I s i m I_{sim} Isim,并且用户 u u u 对这些项有评分记录,根据以下公式计算预测评分: r u , i = ∑ j ∈ I s i m s i , j r v , i ∑ j ∈ I s i m s i , j r_{u,i} = \frac{\sum_{j \in I_{sim}} s_{i,j}r_{v,i}}{\sum_{j \in I_{sim}} s_{i,j}} ru,i=jIsimsi,jjIsimsi,jrv,i 其中, r u , i r_{u,i} ru,i 指用户 u u u 对项 i i i 的预测评分, s i , j s_{i,j} si,j 指项 i i i 和项 j j j 的相似度。

协同滤波算法的评价
适用场景:
基于用户的协同滤波算法:具备更强的社交特性,适用于用户少物品多,时效性较强的场景。比如新闻、博客、微内容推荐场景。此外基于用户的协同滤波算法能够为用户发现新的兴趣爱好。
基于项的协同滤波算法:更适用于兴趣变化较为稳定的应用,更接近于个性化的推荐,适合物品少用户多,用户兴趣固定持久,物品更新速度不是太快的场合,比如电影推荐。

协同滤波算法的优点:适用于任何类型的项,不需要特征选择
协同滤波算法的缺点:
冷启动问题:对于基于用户的协同滤波算法,需要积累足够多的用户,并且用户有一定评分时才能找到一个用户的相似用户,而基于项的协同滤波算法没有此问题。
稀疏性问题:项的数目一般很多,一个用户对项的评分往往不会很多,评分矩阵是稀疏的,难以找到对相同的项评分过的用户。
新的项、评分较少的项因为评分较少,难以被推荐。在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/562768.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何利用CiteSpace快速锁定领域内最新研究热点并制作精美的可视化专题图

在科研工作中,我们常常需要面对海量的文献进行阅读和分析,如何在这些文献当中找出值得精读、细读的关键文献,挖掘学科前沿,找到研究热点就成为了开展研究之前首先需要解决的问题。CiteSpace作为一款优秀的文献计量学软件&#xff…

六、数据仓库详细介绍(ETL)经验篇

0x00 前言 日常工作中大多数时候都是在做数据开发,ETL 无处不在。虽然最近两年主要做的大数据开发,但感觉日常干的这些还是 ETL 那点事儿,区别只是技术组件全换了、数据量大了很多。 前几年数仓势微,是因为传统的那些工具数据库等…

每个程序员必备的基础设施--Codeium

自从 chartGPT3 横空出世以后,AI 技术越来越深入到每个人的生活中,这里不谈 AI 到底是不是真的存在着类人的思想和智慧,也不谈是否取代人类的问题。本着实用主义的原则,先让它能为我所用。 我在工作中已经深入使用了 chartGPT 和…

【详解栈Stack与队列Queue】

🌠作者:TheMythWS. 🎆专栏:《集合与数据结构》 🎇座右铭:不走心的努力都是在敷衍自己,让自己所做的选择,熠熠发光。 目录 栈 ( Stack ) 栈的概念 栈的使用 栈的模拟实现 栈…

idea的这款代码提示插件爱了

前言 Idea 是一款功能强大的集成开发环境(IDE),它可以帮助开发人员更加高效地编写、调试和部署软件应用程序,Idea 还具有许多插件和扩展,可以根据开发人员的需要进行定制和扩展,从而提高开发效率,今天我们就来介绍一款…

Fourier分析入门——第7章——采样理论

目录 第 7 章 采样定理 7.1 引言 7.2 采样定理 7.3 错误识别(aliasing) 7.4 Parseval定理(Parseval[pzeifa:l]) 7.5 截断Fourier级数和回归理论(Truncated Fourier Series & Regression Theory) 第 7 章 采样定理 7.1 引言 在第 6 章中,我们发现有限区…

测试还是测开为你做个分析,让你少走弯路

软件测试和测试开发都是软件开发声明周期中非常重要的环节,缺一不可。当然了这两者还有区别的,比如果薪资待遇,开发要比测试待遇好,但测试里面功能测试和性能测试待遇又不同,掌握的技术不同、工龄都会有影响。 平均工…

一般小型企业,一个CRM系统要多少钱?都有哪些功能?

客户关系管理crm多少钱一套? 不同CRM要价不同,甚至同一款CRM产品在不同客户方部署下来的价格也是有差别的。 这篇给大家分享几款可实操的CRM管理软件的价位,有需要的可以做以参考! 一、简道云CRM管理系统 模版地址:…

中国智造数据分析,预计2025年中国智能制造市场规模将达5.3万亿元

中国智造是制造强国建设主攻方向,也是中国制造公司可以提升核心竞争力的主要研究路径。智能制造成熟度水平能很好的衡量一个地区智能制造的发展水平。 分析全国成熟度二级及以上的企业数量分布,从图分析可以很直观的看出成熟度二级以上的企业数量主要分…

每日一题——三数之和(双指针)

每日一题 三数之和 题目链接 思路 解析函数原型 首先我们来看一下题目给的函数原型: int** threeSum(int* nums, int numsSize, int* returnSize, int**returnColumnSizes)题目要求我们返回一个二维数组,数组的行数代表着存在多少个满足条件的三元组&…

“向上管理”的7个最佳实践:如何管理你的老板?

向上管理是一种管理技巧,它指的是如何有效地管理你的老板。这种技巧可以帮助你更好地与老板沟通,提高工作效率,增加工作成就感。本文将介绍七个最佳实践,帮助你学会如何向上管理。 1. 了解老板的需求和期望 了解老板的需求和期望…

R语言结构方程模型(SEM)在生态学领域中的实践应用

结构方程模型(Sructural Equation Model)是一种建立、估计和检验研究系统中多变量间因果关系的模型方法,它可以替代多元回归、因子分析、协方差分析等方法,利用图形化模型方式清晰展示研究系统中变量间的因果网络关系,…

Velocity不用愁!Velocity系统的前端工程化之路 | 京东云技术团队

Velocity是一个基于Java的Web页面模版引擎。十多年前,Velocity将Java代码从Web页面中分离出来,使得开发者能够并行网页开发和Java开发。随着十年前后端分离的浪潮涌动,回首再面对这些基于Velocity的旧系统,无论是后端还是前端人员…

了解信号的传输方式、编码与调制、信道的极限容量

1.了解信号的传输方式、编码与调制、信道的极限容量 笔记来源: 湖科大教书匠:传输方式 声明:该学习笔记来自湖科大教书匠,笔记仅做学习参考 1.1 了解信号的传输方式 串行传输与并行传输 同步传输与异步传输 为什么需要收发双发…

NetApp 数据存储系统 AFF A 系列的优势及应用行业

AFF A 系列阵列:云集成、性能极强、蓄势待发 需要小幅(或大幅)提升您的关键业务应用程序的性能吗?我们的 AFF A 系列阵列具备屡获殊荣的速度和响应能力,能满足性能敏感型工作负载的需求 为什么选择 NetApp AFF A 系列…

相关、匹配滤波、脉冲压缩以及模糊函数

文章目录 【 1.相关 】自相关互相关 【 2.匹配滤波 】滤波器模型有色噪声 时滤波器的特性白噪声 时滤波器的特性 【 3.脉冲压缩】时域脉冲压缩频域脉冲压缩 【 4.模糊函数 】【 5.四者之间的关系 】相关和卷积之间的关系 【 6.参考文献 】 【 1.相关 】 相关性表示一个信号平移…

【Docker系列】Dockerfile 中指令作用介绍

前言 当今容器技术已经成为了现代应用程序开发和部署的重要工具,Docker 作为当前最受欢迎的容器平台之一,提供了高效、轻量级的容器解决方案。而 Dockerfile,则是定义 Docker 容器镜像构建过程的文件,它包含了所有构建该镜像所需…

python大作业——学生管理系统制作,另赠福利:GUI学生管理系统源码

目录 前言环境使用:代码展示尾语 💝 前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~! 环境使用: Python 3.8 解释器 Pycharm 编辑器 可领取福利: GUI学生管理系统源码 python资料、源码、教程\福利皆: 点击此处跳转文末名片获取 代码展示 从学生信息数据库…

python+django植物园性毒源成分管理系统

在Internet高速发展的今天,我们生活的各个领域都涉及到计算机的应用,其中包括植物性毒源成分管理系统的网络应用,在外国植物性毒源成分管理系统已经是很普遍的方式,不过国内的植物性毒源成分管理可能还处于起步阶段。植物性毒源成…

实验4—OpenGL的鼠标交互绘制

一、实验目的 1.掌握OpenGL的鼠标按钮响应函数。 2.掌握OpenGL的鼠标移动响应函数。 3.进一步巩固OpenGL的基本图元绘制基础 二、实验内容 1.鼠标画草图——实现鼠标点到哪,线就画到哪。 思路: 1 )在主程序注册鼠标响应和鼠标移动子函数: glutMouseF…