Mac*_*ner 5 machine-learning collaborative-filtering matrix-factorization apache-spark
我想尝试Spark使用MLlib进行协同过滤,如本教程中所述:https://databricks-training.s3.amazonaws.com/movie-recommendation-with-mllib.html 该算法基于"协作过滤"一文对于隐式反馈数据集",进行矩阵分解.
使用1000万个Movielens数据集,一切都正常运行.数据集分为80%培训10%测试和10%验证.
虽然具有不同的训练参数,但这些值与教程类似.
我尝试了几次运行算法,总是得到对我没有任何意义的建议.即使只评价儿童电影,我也会得到以下结果:
对于评级:
结果:
推荐给你的电影:
除了昨天以外似乎没有任何意义.
如果有人知道如何解释这些结果或获得更好的结果,我将非常感谢您分享您的知识.
最好的祝福
编辑:
如我所建议的那样,我训练了另
不同的个人评分:
推荐的电影是:
推荐给你的电影:
没有一个有用的结果.
EDIT2:使用隐式反馈方法,我得到了更好的结果!使用与上述相同的动作片,建议如下:
推荐给你的电影:
这更符合我的预期!问题是为什么显式版本是如此糟糕
请注意,您正在运行的代码不使用隐式反馈,并且不完全是您引用的算法。只要确保您没有使用ALS.trainImplicit. 您可能需要不同的 lambda 和秩。对于该数据集,RMSE 为 0.88 是“OK”;我不清楚该示例的值是最优的还是只是玩具测试产生的值。您仍然在这里使用不同的值。也许它还不是最佳的。
它甚至可能是自此以来修复的 ALS 实现中的错误之类的东西。如果可以的话,尝试与 ALS 的另一个实现进行比较。
我总是试图抵制合理化建议,因为即使是随机建议,我们的大脑也不可避免地会找到一些解释。但是,嘿,我可以说你在这里看不到动作片、恐怖片、犯罪剧、惊悚片。我发现儿童电影与艺术电影的品味密切相关,因为早在 MovieLens 上填写自己的品味并给儿童电影评分的人实际上并不是孩子,而是父母,也许还有足够老的软件工程师类型有孩子的人确实倾向于看这类外国电影。
| 归档时间: |
|
| 查看次数: |
5000 次 |
| 最近记录: |