Page 279 - 《软件学报》2026年第6期
P. 279
2598 软件学报 2026 年第 37 卷第 6 期
表 1 实验数据集
数据集 MovieLens 100K MovieLens 1M
用户数量 943 6 040
电影数量 1 682 3 900
评分数量 100 000 1 000 209
用户平均评分数 106.04 165.57
电影平均被评分数 59.45 256.47
评分矩阵密度 (%) 6.30 4.25
MovieLens 100K 数据集包含 943 名用户对 1 682 部电影的 100 000 条评分记录, 评分范围为 1–5 的整数值, 评
分矩阵的稀疏度为 6.30%. 此外, 数据集还包括用户的基本属性 (如性别、年龄、职业和邮编) 以及电影的分类标
签 (如流派). 该数据集的特点是规模较小, 稀疏性较高, 适合快速验证算法在稀疏数据场景中的表现及其在小规模
场景中的收敛性.
MovieLens 1M 数据集包含 6 040 名用户对 3 900 部电影的 1 000 209 条评分记录, 评分矩阵的稀疏度为 4.25%,
相较于 MovieLens 100K 显著降低. 用户属性更为详细, 除性别、年龄、职业外, 还涵盖了更多样化的电影标签信
息. 该数据集的规模更大、评分密度更高, 能够更有效地评估算法在复杂和高维场景中的扩展能力和鲁棒性.
在实验中, 两个数据集按照用户进行划分, 每个用户的数据被视为一个独立的客户端. 客户端仅保留本地评分
记录及相关属性数据, 并按照 8:2 的比例将数据分为训练集和测试集, 以模拟分布式环境下的数据训练与测试过程.
6.2 评价指标及基准模型
在本文中, 我们采用 HR@10 和 NDCG@10 作为衡量推荐算法可用性的核心评价指标, 并引入传输总参数量
作为评估通信开销的重要指标, 从推荐性能与通信效率两个维度对算法进行全面评估.
HR@10 (hit ratio at 10) 是用来衡量推荐算法覆盖用户实际兴趣的能力的重要指标, 其定义为推荐列表中是否
包含用户真实喜好的条目. 该指标能够直观反映推荐算法的实用性和有效性, 值越高说明推荐结果越符合用户需
求. NDCG@10 (normalized discounted cumulative gain at 10) 则进一步考虑了推荐条目的排名位置对用户体验的影
响, 其值越高表明推荐算法对用户兴趣的排序更精准, 从而提升了推荐结果的用户满意度. 传输总参数量反映了联
邦学习过程中客户端与服务器之间交换的参数数据总量, 参数量越小表明通信效率越高, 有助于减少带宽占用和
降低通信成本.
实验针对所提出的两种方法, 分别选取了目前具有代表性的基线方法进行对比. 在矩阵分解推荐方法中, 基线
方法包括: (1) FedMF [23] : 一种传统的联邦矩阵分解推荐算法, 所有客户端按照传统联邦学习的方式协同训练全局模
型; (2) DP-FedMF [17] : 一种具有本地差分隐私保护的联邦矩阵分解推荐算法, 客户端在本地上传梯度时加入满足差
分隐私的噪声. 在深度学习推荐方法中, 基线方法包括: (1) FedNCF [23] : 一种传统的联邦深度学习推荐算法, 所有客
户端按照传统联邦学习的方式协同训练全局模型; (2) DP-FedNCF [55] : 一种具有本地差分隐私保护的联邦深度学习
[38]
推荐算法, 客户端在本地上传梯度时加入满足差分隐私的高斯噪声; (3) DP-FedNCF-DGC : 在 DP-FedNCF 的基
础上采用深度梯度压缩策略, 以显著降低通信成本并保持模型性能. 上述基线方法覆盖了联邦矩阵分解和深度学习
推荐场景下的主流方法, 为实验提供了多角度的对比参考, 验证了所提方法在隐私保护和通信效率方面的综合优势.
6.3 实现细节
实验环境基于 Ubuntu 20.04.6 LTS 操作系统, 硬件配置包括 2 块 32 GB V100 GPU, Intel(R) Xeon(R) Gold 5118
CPU@2.30 GHz 处理器, 内存容量为 256 GB. 实验中, 潜在特征向量维度均设置为 32, 批量大小分别为 256 (MovieLens
100K) 和 512 (MovieLens 1M), 负样本比例为 1:4. 每轮通信时, 分别从 MovieLens 100K 和 MovieLens 1M 中采样
100 和 200 个客户端参与本地训练, 每个客户端进行 5 轮本地迭代后进行全局模型更新, 通信总轮数为 400. 优化
器方面, 矩阵分解算法采用 SGD 优化器, 学习率设置为 0.001, 深度学习算法采用 Adam 优化器, 学习率设置为 0.000 5.
梯度裁剪阈值统一设置为 C=1.0, 客户端隐私预算设置为 2. 本实验所有程序代码使用 Python 语言编写 (相关的实
验代码公开发布于 https://github.com/Drxdx/FL_recommend).

