关注推荐系统有好一阵了,居然没有任何的产出,惭愧、惭愧。
这几天学习了一下开源的java推荐系统Taste,有一些心得,慢慢的贴出来。
如果产生Item-based推荐:
假设有4个用户 u1、u2、u3、u4
产品有n个 c1、c2、c3
步骤:
1.找出用户对产品的打分。
2.找出产品之间的相似度。
3.可以对特定用户给予推荐。
其中需要人工做的就是对产品之间的相似度,给出评分,这个是个比较麻烦的事情,如果有n个产品,就需要N!个评分。
如果用Taste实现,需要的代码如下:
1。建立数据集,主要数据内容是用户对产品的打分:
DataModel model = new FileDataModel(new File("data.txt"));
2。建立item相似度,集合
例如:先建物(这里有三个物品)
final Item item1 = new GenericItem("0");
final Item item2 = new GenericItem("1");
final Item item3 = new GenericItem("2“);
再记录item的相似度
final Collection correlations =
new ArrayList(2);
correlations.add(new GenericItemCorrelation.ItemItemCorrelation(item1, item2, 1.0));
correlations.add(new GenericItemCorrelation.ItemItemCorrelation(item1, item3, 0.5));
3.生成推荐
final ItemCorrelation correlation = new GenericItemCorrelation(correlations);
final Recommender recommender = GenericItemBasedRecommender(dataModel, correlation);
4.最终生成推荐
final List recommended = recommender.recommend("test1", 1);
final RecommendedItem firstRecommended = recommended.get(0);