我必须向用户推荐视频。我有csv文件,包含userId,videoId,productId。在产品id下有许多类似的视频。类似:
userId videoId productId
1 2 1
1 3 1
1 5 2
2 7 2
2 8 1
2 2 1
为了更清楚起见,我将其分解为:
用户和视频关系:
userId videoId
12
1 3
1 5
2 7
2 8
2 2
考虑用户和视频:正如我们所看到的,用户1在videoid 2的基础上与用户2相似,因此,我建议用户1观看7和8视频。简单:)
但问题是实际产品和视频数据如下:
videoId productId
2 1
3 1
5 2
7 2
8 1
2 1
4 1
6 1
视频4和6也正在制作中。想想看,如果用户1来看videoid 2,我将不得不推荐7,8(基于类似用户)和4,6(基于相同产品下的类似视频,但不存在于实际csv中)。
我的问题是:
-
我需要分解csv吗。
-
什么是最好的算法。
3.获得结果视频后,如何对其进行排名
您想推荐什么,产品还是视频?选一个扔掉另一个,我看不出它有什么用。推荐会按顺序返回,并带有估计的偏好权重。
使用哪个版本的Mahout推荐程序取决于你有多少数据,有多少用户和项目。以及获取新偏好数据的频率。所有Mahout 0.9推荐器只能向表达了偏好的用户推荐,并且只能使用用于计算模型的偏好。
Mahout 1.0有一个完全不同的机制,只要你有一些偏好数据,就可以向匿名或新用户推荐。这些数据不需要在Mahout构建的模型中。这种方法需要使用像Solr或Elasticsearch这样的搜索引擎。
Mahout文档:http://mahout.apache.org/users/recommender/intro-cooccurrence-spark.html
我把一个preso放在一起:http://www.slideshare.net/pferrel/unified-recommender-39986309