实验结果汇总¶
这个文件把当前已经跑出的实验报告放在一起看。它不是一个绝对排行榜,因为不同实验解决的问题不一样:
- 评分预测看
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 评估口径。
- 多跑几个随机种子,报告均值和方差。
现在这份汇总更适合当作学习路线图:看每类方法在当前代码里的表现、模型大小和指标口径,而不是把所有算法强行排成一个最终名次。