MatlabCode

本站所有资源均为高质量资源,各种姿势下载。

您现在的位置是:MatlabCode > 资源下载 > 一般算法 > 基于网络推理NBI的二部图商品推荐系统

基于网络推理NBI的二部图商品推荐系统

资 源 简 介

本项目基于二部图网络结构,在MATLAB环境中完整实现了Network-based Inference (NBI) 推荐算法,该算法也被称为基于物理过程的质量扩散算法。项目旨在解决传统协同过滤算法在稀疏数据下的性能瓶颈,通过模拟资源在用户-商品二部网络上的流动过程来生成个性化推荐。具体功能涵盖:1. 数据预处理模块,负责读取标准数据集(如MovieLens)或自定义交易数据,构建用户与商品的邻接矩阵,并支持数据集的训练集与测试集划分(如Leave-One-Out或K折交叉验证)。2. 核心算法实现,通过矩阵运算模拟两步资源分配过程:第一步将初始资源从商品节点平均分配给关联的用户节点,第二步将用户节点获得的资源重新分配给关联的商品节点,从而计算目标用户对未交互商品的潜在兴趣得分(资源值)。3. 推荐生成与排序,根据最终的资源分布向量,过滤掉用户历史交互商品,对剩余商品进行降序排列,生成Top-N推荐列表。4. 性能评估模块,内置多种评价指标计算函数,包括但不限于排序分(Ranking Score)、准确率(Precision)、召回率(Recall)、海明距离(用于衡量推荐多样性)以及流行度分析(Novelty),用于全方位评估推荐系统的准确性与多样性。5. 可视化分析工具,提供脚本用于绘制二部图结构示意图、度分布曲线以及不同推荐长度N下的性能对比图表。

详 情 说 明

基于网络推理(NBI)的商品推荐算法系统

项目简介

本项目是一个基于MATLAB环境开发的推荐系统,完整实现了基于网络推理(Network-based Inference, NBI)的推荐算法,即“概率质量扩散”算法。该系统利用二部图(Bipartite Graph)结构模拟资源在用户与商品之间的流动过程,从而挖掘用户对未交互商品的潜在兴趣。本项目不仅包含核心算法的矩阵化高效实现,还集成了数据生成、训练测试集划分、Top-N推荐生成以及多维度的性能评估模块。

功能特性

  • 模拟数据生成:系统内置数据生成器,可创建指定规模(用户数、商品数)和稀疏度的二部图邻接矩阵,并具备自动修复孤立节点的功能,确保网络连通性。
  • 数据集划分:支持将原始交互数据随机划分为训练集和测试集(默认90%训练,10%测试),用于验证算法的泛化能力。
  • 矩阵化NBI算法:采用高效的矩阵运算替代传统的循环迭代,模拟资源从“商品 -> 用户 -> 商品”的两步扩散过程,计算全量预测评分。
  • Top-N个性化推荐:根据预测评分生成推荐列表,自动过滤用户历史交互商品,支持动态调整推荐列表长度(N)。
  • 多维度性能评估:通过与测试集比对,评估推荐结果的准确率(Precision)、召回率(Recall)、综合评价指标(F1 Score)、新颖性(Novelty)以及多样性(Hamming Distance)。
  • 可视化分析接口:集成了从数据结构到性能指标的可视化调用流程。

系统要求

  • MATLAB R2016a 或更高版本
  • 无需额外工具箱,基于MATLAB基础函数库实现

使用方法

直接运行主程序入口函数即可启动整个流程。程序将依次执行参数初始化、数据生成、模型计算、评估与可视化,并在控制台输出各个阶段的耗时与进度提示。

核心算法与实现逻辑

本项目的核心逻辑紧密围绕 main 函数及其子程序展开,具体流程如下:

1. 参数配置与数据准备

系统首先初始化关键参数,包括用户数量(200)、商品数量(500)、稀疏度(0.05)以及推荐列表长度序列([5, 10, 20, 50])。
  • 数据合成:调用生成函数创建二元稀疏矩阵,行代表用户,列代表商品。生成过程中通过随机补边机制,确保每个用户和商品至少有一条连边,消除孤立节点。
  • 集合划分:将生成的非零交互边打乱,按照预设比例(如0.9)拆分为训练集矩阵和测试集矩阵。

2. NBI 资源分配(核心算法)

算法核心通过两步资源分配过程计算这一评分,完全基于矩阵运算实现,避免了低效的嵌套循环:
  1. 节点度计算:计算训练集中每个用户和每个商品的度(Degree),并处理度为0的情况以防除零错误。
  2. 构建转移矩阵 W
* 第一步(Item -> User):计算资源从商品流向用户的中间状态。代码中通过归一化用户度矩阵实现。 * 第二步(User -> Item):计算资源从用户流回商品的最终状态。代码通过归一化商品度矩阵,结合转置的邻接矩阵,计算出物品间的资源转移权重矩阵 W。
  1. 预测评分计算:利用训练集矩阵与转移矩阵 W 的乘积,得到所有用户对所有商品的最终资源分配值(潜在兴趣得分)。

3. 生成推荐列表

系统对计算出的全量预测评分矩阵进行处理:
  • 历史过滤:将训练集中用户已交互过的商品得分强制置为 -1,确保这些商品不会出现在推荐列表中。
  • 排序与截断:对每个用户的未交互商品得分进行降序排列,并根据评估需求截取前 N 个商品作为 Top-N 推荐结果。

4. 性能评估

系统对不同的推荐长度 N(如5, 10, 20, 50)分别进行评估,计算以下指标:
  • Precision(准确率):推荐列表中命中测试集商品的比例。
  • Recall(召回率):推荐列表命中的商品占用户在测试集中所有交互商品的比例。
  • F1 Score:准确率与召回率的调和平均数,用于综合衡量推荐质量。
  • Novelty(新颖性):计算推荐商品的平均度(Degree)。推荐商品的度越低,代表越冷门,算法的新颖性越高。
  • Hamming(多样性):通过采样计算不同用户推荐列表之间的海明距离,衡量系统推荐结果的多样化程度。

5. 可视化

最后,系统调用可视化接口绘制网络结构图或性能曲线,并打印最终的评估报告。

关键函数说明

  • generate_synthetic_data: 负责生成满足稀疏度要求的随机二部图,包含“检查并修复孤立节点”的逻辑,保证生成的网络结构合法。
  • split_data: 基于链路(Link)进行随机划分。它提取矩阵中所有的连边索引,随机打乱后按比例分配给训练矩阵和测试矩阵。
  • run_nbi_algorithm: 实现了 NBI 的数学推导公式 $f' = W f$。其中转移矩阵 $W = frac{1}{k(o_j)} sum frac{a_{li} a_{lj}}{k(u_l)}$ 被转化为高效的稀疏矩阵乘法形式:(A' * inv_Ku * A) * inv_Ko
  • get_top_n_recommendations: 执行推荐结果的提取工作,关键在于使用掩码(Mask)技术高效屏蔽训练集数据。
  • evaluate_metrics: 具体的指标计算模块,遍历每个用户的推荐列表与测试集真值(Ground Truth)进行交集运算,并计算各项统计指标的平均值。