跳转至

实验结果汇总

这个文件把当前已经跑出的实验报告放在一起看。它不是一个绝对排行榜,因为不同实验解决的问题不一样:

  • 评分预测看 RMSE / MAE,越低越好。
  • 二分类精排看 AUC / logloss / accuracy,AUC 越高越好,logloss 越低越好。
  • 召回、序列、图推荐看 Recall@10 / NDCG@10,越高越好。
  • best.pt 大小只说明保存下来的模型参数规模,不等于模型好坏。

SASRec 当前是唯一使用 2,000,000 条评分抽样的实验;其他已生成报告基本是全量 MovieLens 32M。因此 SASRec 的效果指标先只作为“这次小规模主线跑通了”的参考,不和全量实验硬比。checkpoint 大小仍然列出实际文件大小;它主要由模型结构和 item 词表大小决定,不由训练样本条数直接决定。

总览

组别 方法 数据规模 主要指标 checkpoint
01 传统统计 Item-CF 全量 precision@10 0.0000, recall@10 0.0000
01 传统统计 User-CF 全量 precision@10 0.1000, recall@10 0.0019
01 传统统计 Matrix Factorization 全量 RMSE 0.8743, MAE 0.6647 65.26 MB
02 召回 Two Tower 全量 precision@10 0.0210, recall@10 0.0254, NDCG@10 0.0257 58.95 MB
03 特征交叉 FM 全量 logloss 0.6081, AUC 0.7810 36.33 MB
03 特征交叉 DeepFM 全量 logloss 0.6096, AUC 0.7784 71.79 MB
03 特征交叉 xDeepFM 全量 logloss 0.5483, AUC 0.7956 36.59 MB
04 深度精排 NCF 全量 logloss 0.5308, AUC 0.8091, accuracy 0.7302 66.59 MB
04 深度精排 Wide & Deep 全量 logloss 0.5374, AUC 0.8049, accuracy 0.7268 67.70 MB
04 深度精排 DCN 全量 logloss 0.5325, AUC 0.8083, accuracy 0.7293 66.66 MB
05 序列推荐 GRU4Rec 全量 test recall@10 0.1441, test NDCG@10 0.0769 27.25 MB
05 序列推荐 SASRec 2,000,000 评分 test recall@10 0.0260, test NDCG@10 0.0121 10.98 MB
06 图推荐 LightGCN 全量 test recall@10 0.0560, test NDCG@10 0.0287 58.05 MB
06 图推荐 NGCF 全量 test recall@10 0.0420, test NDCG@10 0.0233 58.11 MB

怎么读这些结果

传统协同过滤的指标偏弱并不奇怪。Item-CF 和 User-CF 没有学习参数,也没有复杂负采样,只是在稀疏交互里找相似邻居。它们更适合理解“相似用户”和“相似物品”的直觉,不适合拿来和深度模型硬拼最终效果。

矩阵分解回答的是评分预测问题,所以它的 RMSE / MAE 不应该直接和 Recall@10 比。它的意义在于:用户 ID 和电影 ID 可以被压成向量,后面的双塔、NCF、图模型,本质上都继承了这个向量化思想。

特征交叉和深度精排的指标放在一起看更合理。当前结果里,04 组整体 AUC 高于 03 组;NCF、DCN、Wide & Deep 都在 0.80 左右。这里要注意,AUC 高说明正负样本排序能力更好,但它不等于“推荐列表一定更好”,因为精排模型通常服务于候选集之后的排序阶段。

序列推荐里,GRU4Rec 的全量结果明显高于 SASRec 的 2M 抽样结果,但这不是公平对比。SASRec 这次主要是验证 MPS、mask、full softmax 和报告生成链路都正常。后续如果要认真比较,需要让 SASRec 也跑全量,或者让 GRU4Rec 也跑同样的 2M 抽样。

图推荐的 LightGCN 当前优于 NGCF。这个现象符合很多推荐系统实践经验:更复杂的图网络不一定更好,LightGCN 去掉了多余的特征变换和非线性,反而更贴近协同过滤图传播的核心。

当前谁最好

如果只看当前已经跑出来的结果,不能简单说“一个模型全场最好”,因为它们评估的是不同任务。更合理的读法是按任务分开看:

问题 当前最好 依据
评分预测 Matrix Factorization 它是当前唯一做显式评分预测的实验,RMSE 0.8743,MAE 0.6647
二分类精排 NCF AUC 0.8091,logloss 0.5308,accuracy 0.7302,在 04 组里略高。
Top-K 推荐列表 GRU4Rec test recall@10 0.1441,test NDCG@10 0.0769,当前明显高于其他 Top-K 实验。
图推荐 baseline LightGCN test recall@10 0.0560,test NDCG@10 0.0287,高于 NGCF。

所以,如果只问“当前实验里推荐列表效果最强的是谁”,答案是 GRU4Rec。如果问“精排二分类谁最好”,答案是 NCF。如果问“最适合先理解推荐系统向量化思想的是谁”,答案仍然是 Matrix Factorization

这里还有一个重要限制:SASRec 当前只跑了 2,000,000 条评分抽样,GRU4Rec 跑的是全量 MovieLens 32M。因此不能据此断言“SASRec 这个算法不如 GRU4Rec”。这份结果只能说明:在当前代码和当前运行规模下,GRU4Rec 的全量 Top-K 表现最好,SASRec 的小规模链路已经跑通。

当前比较里最值得记住的点

观察 解释
NCF / DCN / Wide & Deep 的 AUC 接近 这些模型都在做二分类精排,输入和训练目标相近,所以差距不会特别夸张。
xDeepFM 明显好于 FM / DeepFM 当前配置下,显式高阶交叉对 MovieLens 的类型和 ID 特征更有帮助。
GRU4Rec 的 Recall@10 很高 全量序列训练让它能学到强烈的短期兴趣和热门电影转移模式。
LightGCN 高于 NGCF 图推荐里,简化传播有时比堆复杂层更稳。
checkpoint 大小差异不等于效果差异 DeepFM 比 xDeepFM 大很多,但当前 AUC 反而更低;模型大不代表更会推荐。

后续如果要更公平

真正严谨的横向比较,需要统一几件事:

  • 同一份 train / valid / test 切分。
  • 同一套正负样本构造方式。
  • 同样的数据规模,比如全部全量,或者全部 2M 抽样。
  • 同样的候选集规模和 top-k 评估口径。
  • 多跑几个随机种子,报告均值和方差。

现在这份汇总更适合当作学习路线图:看每类方法在当前代码里的表现、模型大小和指标口径,而不是把所有算法强行排成一个最终名次。