推荐算法---矩阵分解

news/2024/5/20 0:27:10 标签: 推荐算法, 矩阵, 算法, 矩阵分解

矩阵分解报告

1. 试验介绍

矩阵分解就是把原来的大矩阵,近似的分解成小矩阵的乘积,在实际推荐计算时不再使用大矩阵,而是使用分解得到的两个小矩阵。具体来说就是,假设用户物品的评分矩阵Rmn维,即一共有m个用户,n个物品。通过一套算法转化为两个矩阵PQ,矩阵P的维度是mk矩阵Q的维度是nk。上述内容即: 

如下表所示,本试验采用5*4数据表格,每一行代表用户,每一列代表用户对该商品的评分(满分10分),其中“-”表示该用户没有对该商品进行评分。

Commodity-1

Commodity-2

Commodity-3

Commodity-4

User-1

-

10

5

7

User-2

6

2

6

4

User-3

-

7

9

10

User-4

4

5

-

8

User-5

9

-

5

4

再次使用大型电影评分矩阵数据集进行验证。

2. 算法介绍

2.1损失函数

损失函数使用原始评分矩阵R和重构评分矩阵R之间的误差的平方作为损失函数为了能够有较好的泛化能力,会在损失函数中加入正则项,以对参数进行约束,即:

eij2=Rij-Rij2+β2k=1K(P2+Q2)

最终,需要求解所有的非“-”项的损失之和的最小值:

minloss=Rij≠-eij2

对应关键代码:

2.2使用梯度下降法获得修正的pq分量

求解损失函数的负梯度:

 根据负梯度的方向更新变量:

对应关键代码:

3. 实验结果

如图1所示,经过5000步的训练loss呈现下降趋势,在500步左右已经开始收敛。如图2所示,R矩阵通过矩阵分解生成P矩阵Q矩阵,根据生成的P矩阵Q矩阵重新生成评价矩阵R_MF

1 损失曲线

2 运行结果

电影评分数据集:

具体资料请前往百度网盘自取:

链接:https://pan.baidu.com/s/1coFpKs_fJVUbrTQUQpq1cg 
提取码:bjx2 
--来自百度网盘超级会员V5的分享


http://www.niftyadmin.cn/n/1365674.html

相关文章

最近使用LINQ遇到的故障

1.成员“YouXieKu.Models.Product.Published”不支持转换为 SQL public partial class Product{.......public bool Published { get { return (this.ReleaseDate < DateTime.Now && (this.ExpireDate > DateTime.N…

论文阅读-Federated Social Recommendation with Graph NeuralNetwork

论文地址&#xff1a;Federated Social Recommendation with Graph Neural Network (arxiv.org) 代码地址&#xff1a;GitHub - YangLiangwei/FeSoG: Code for Federated Social Recommendation with Graph Neural Network 该代码工程没有明确软件版本以及环境配置&#xff0…

数据结构之表(6)栈的链接实现

代码如下&#xff1a;# include <stdio.h> # include <stdlib.h>/*存储结构的定义*/ struct ds_node {int data ;struct ds_node * next ; };/*入栈*/ void ds_push(struct ds_node **top,int item) {struct ds_node * temp ;temp (struct ds_node *)malloc(sizeo…

论文阅读-Dr.Deep_基于医疗特征上下文学习的患者健康状态可解释评估

论文地址&#xff1a;Dr.Deep&#xff1a;基于医疗特征上下文学习的患者健康状态可解释评估 (ict.ac.cn) 代码地址&#xff1a;GitHub - Accountable-Machine-Intelligence/Dr.Deep 简介&#xff1a; 深度学习是当前医疗多变量时序数据分析的主流方法。临床辅助决策关乎病人生…

MySQL 和 PostgreSQL 对比

最近打算研究下几个开源的数据库&#xff0c;但是主要精力还是研究Oracle RDBMS。 MySQL 和PostgreSQL 是开源中用的最多的2个。 从网上搜了点资料。 整理如下。 这些资料也是以前的资料&#xff0c; 现在肯定是有变动。 所以这些内容&#xff0c;仅供参考。 一、两者的共同优…

论文阅读-基于低秩分解的网络异常检测综述

论文地址&#xff1a;基于低秩分解的网络异常检测综述 摘要&#xff1a; 异常检测对于网络管理与安全至关重要&#xff0e;国内外大量研究提出了一系列网络异常检测方法,其 中大多数方法更关注数据包及其独立时序数据流的分析、检测与告警,这类方法仅仅利用了网络数据之 间的…

Log扩张对性能的影响

新建一个数据库&#xff0c;将数据文件变为1000mb&#xff08;以保证在实验中数据文件不会变化&#xff09;,日志文件大小设置为1mb&#xff0c;每次增长200k. 不断的向数据库中插入数据&#xff0c;观察分配页和日志增长的关系。 Log Growths代表日志文件的增长&#xff0c;可…

Qt非常Q系列-HelloWorld

由于工作上需要使用C编写程序&#xff0c;所以有幸接触到Qt&#xff0c;我有一个习惯&#xff0c;开学学习一个新东西的时候&#xff0c;总喜欢在网上查找相关的资料&#xff0c;将它从全局上弄懂、比较后&#xff0c;才选择IDE、类库等工具。可选的IDE有很多&#xff08;Eclip…