一个课的大作业,要做一个推荐系统,花了两天的时间,不过组里有同学之前做的推荐系统,这个就没有用上,算自己滴一种锻炼吧,以前都没有接触过这些。
很简单,直接用mahout里的taste引擎,用了里面提供的很多种算法。
等有时间了把分析补上。
注:slopeone算法在mahout0.9已经被移除,想用的用以前版本。
效果图:
获得结果:
源代码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):
参数(450,3):
参数(1,4)
2 GenericBooleanPrefItemBasedRecommender
参数(450,3):
参数(80,2):
参数(1,4):
3 ItemAverageRecommender
参数(80,2):
参数(1200,2);
参数(1,4):
4 ItemUserAverageRecommender
参数(80,2):
参数(1,4):
5 SlopeOne
参数(1200,5):
java.lang.OutOfMemoryError:GC overhead limit exceeded
内存溢出
SlopeOne初始化时计算所有的两个物品之间的评分均值。存在内存中(map:具体是FastByIDMap),这样,当要计算某个用户对某个未评分的商品的评分时,可以直接从内存中取均值。
所有导致 堆不够用啊啊啊
气死我了,不想加大内存,我决定放弃这个算法了
二 基于用户
1 GenericBooleanPrefUserBasedRecommender
参数(5,3):
参数(18,2):
参数(1,4):
好快
2 GenericUserBasedRecommender
参数(5,3):
没有推荐的结果!!
如果没有推荐的结果,可以让用户用另一个推荐器
参数(18,2):
参数(64995,2):
参数(1,4):
三 基于Model
1 SVDRecommender
参数(80,2):
参数(1,4):