我想尝试使用 MLlib 进行协同过滤的 Spark,如本教程中所述: https ://databricks-training.s3.amazonaws.com/movie-recommendation-with-mllib.html 该算法基于论文“Collaborative Filtering”对于隐式反馈数据集”,进行矩阵分解。
使用 1000 万个 Movielens 数据集,一切都已启动并运行。数据集分为 80% 训练 10% 测试和 10% 验证。
- RMSE 基线:1.060505464225402
- RMSE(火车)= 0.7697248827452756
- RMSE(验证)= 0.8057135933012889,用于以 rank = 24、lambda = 0.1 和 Iterations = 10 训练的模型。
- 最佳模型将基线提高了 23.94%。
这些值与教程相似,但训练参数不同。
我多次尝试运行该算法,但总是得到对我没有任何意义的建议。即使只评价儿童电影,我也会得到以下结果:
对于评级:
- 个人评分:玩具总动员 (1995) 评分:4.0
- 个人评分:丛林之书,(1994)评分:5.0
- 个人评分:狮子王,(1994)评分:5.0
- 个人评分:Mary Poppins (1964) 评分:4.0
- 个人评分:爱丽丝梦游仙境(1951)评分:5.0
结果:
为您推荐的电影:
- 小春的一生,The (Saikaku ichidai onna) (1952)
- 更多 (1998)
- 谁在那边唱歌?(又名谁在那边唱歌)(Ko to tamo peva)(1980)
- 星期日和赛贝勒 (Dimanches de Ville d'Avray, Les) (1962)
- 蓝光,(Das Blaue Licht)(1932)
- 哈维牛奶时代 (1984)
- 请为我投票 (2007)
- 种树的人,(Homme qui plantait des arbres,L')(1987)
- 肖申克的救赎 (1994)
- 只有昨天 (Omohide poro poro) (1991)
除了只有昨天之外,这似乎没有任何意义。
如果有人知道如何解释这些结果或获得更好的结果,我将非常感谢您分享您的知识。
此致
编辑:
正如建议的那样,我训练了另一个具有更多因素的模型:
- 基线错误:1.0587417035872992
- RMSE(火车)= 0.7679883378412548
- 对于使用 rank = 100、lambda = 0.1 和 numIter = 10 训练的模型,RMSE(验证)= 0.8070339258049574。
以及不同的个人评分:
- 个人评分:星球大战:第六集 - 绝地归来(1983)评分:5.0
- 个人评分:使命:不可能(1996)评分:4.0
- 个人评分:虎胆龙威:复仇(1995)评分:4.0
- 个人评分:永远的蝙蝠侠(1995)评分:5.0
- 个人评分:黑衣人(1997)评分:4.0
- 个人评分:终结者2:审判日(1991)评分:4.0
- 个人评分:壮志凌云(1986)评分:4.0
- 个人评分:星球大战:第五集 - 帝国反击战(1980)评分:3.0
- 个人评分:外星人(1979)评分:4.0
推荐的电影有:
为您推荐的电影:
- 卡门 (1983)
- 寂静之光 (Stellet licht) (2007)
- 耶稣 (1979)
- 小春的一生,The (Saikaku ichidai onna) (1952)
- 美国之心 (2003)
- 因为圣经告诉我(2007)
- 更多 (1998)
- Leigh Bowery 传奇 (2002)
- 葬礼 (Ososhiki) (1984)
- 远射 (2008)
没有一个有用的结果。
EDIT2:使用隐式反馈方法,我得到了更好的结果!对于与上述相同的动作电影,建议是:
为您推荐的电影:
- 星球大战:第四集 - 新希望(又名星球大战)(1977)
- 终结者 (1984)
- 夺宝奇兵(印第安纳琼斯和夺宝奇兵)(1981)
- 虎胆龙威 (1988)
- 教父 (1972)
- 外星人 (1986)
- 摇滚 (1996)
- 独立日(又名 ID4)(1996 年)
- 星际迷航 II:可汗之怒 (1982)
- 金眼 (1995)
这更符合我的预期!问题是为什么显式版本如此糟糕