基于mahout的动漫推荐系统

一个课的大作业,要做一个推荐系统,花了两天的时间,不过组里有同学之前做的推荐系统,这个就没有用上,算自己滴一种锻炼吧,以前都没有接触过这些。

很简单,直接用mahout里的taste引擎,用了里面提供的很多种算法。

等有时间了把分析补上。

注:slopeone算法在mahout0.9已经被移除,想用的用以前版本。

效果图:

基于mahout的动漫推荐系统_第1张图片

获得结果:

源代码https://github.com/lanelane/Demo

数据集来源:

该数据集包含来自12,294个动漫的73,516个用户的用户偏好数据。每个用户都可以将动画添加到已完成的列表中并为其评分,该数据集把这些评级整理起来。

下载:https://www.kaggle.com/CooperUnion/anime-recommendations-database

 

 

 

 

————————————————————————————记录taste引擎做推荐系统的测试结果

只是用recommender获取推荐结果的时间,来源是csv文件

存一下某些测试结果。

一 基于内容

1 GenericItemBasedRecommender

参数(7,3):

参数(2,4):

基于mahout的动漫推荐系统_第2张图片

参数(450,3):

参数(1,4)

基于mahout的动漫推荐系统_第3张图片

2 GenericBooleanPrefItemBasedRecommender

参数(450,3):

基于mahout的动漫推荐系统_第4张图片

参数(80,2):

参数(1,4):

基于mahout的动漫推荐系统_第5张图片

3 ItemAverageRecommender

参数(80,2):

参数(1200,2);

参数(1,4):

基于mahout的动漫推荐系统_第6张图片

4 ItemUserAverageRecommender

参数(80,2):

基于mahout的动漫推荐系统_第7张图片

参数(1,4):

基于mahout的动漫推荐系统_第8张图片

5 SlopeOne

参数(1200,5):

java.lang.OutOfMemoryError:GC overhead limit exceeded

内存溢出

SlopeOne初始化时计算所有的两个物品之间的评分均值。存在内存中(map:具体是FastByIDMap),这样,当要计算某个用户对某个未评分的商品的评分时,可以直接从内存中取均值。

所有导致 堆不够用啊啊啊

气死我了,不想加大内存,我决定放弃这个算法了

 

二 基于用户

1 GenericBooleanPrefUserBasedRecommender

参数(5,3):

参数(18,2):

参数(1,4):

基于mahout的动漫推荐系统_第9张图片

好快

 

2 GenericUserBasedRecommender

参数(5,3):

没有推荐的结果!!

如果没有推荐的结果,可以让用户用另一个推荐器

参数(18,2):

参数(64995,2):

参数(1,4):

基于mahout的动漫推荐系统_第10张图片

三 基于Model

1 SVDRecommender

参数(80,2):

基于mahout的动漫推荐系统_第11张图片

参数(1,4):

基于mahout的动漫推荐系统_第12张图片

你可能感兴趣的:(mahout,java,大数据)