环境:
<dependency> <groupId>org.apache.mahout</groupId> <artifactId>mahout-core</artifactId> <version>0.8</version> </dependency> <dependency> <groupId>org.apache.mahout</groupId> <artifactId>mahout-math</artifactId> <version>0.8</version> </dependency> <dependency> <groupId>org.apache.mahout</groupId> <artifactId>mahout-integration</artifactId> <version>0.8</version> </dependency>
概述:
Slope One 算法是由 Daniel Lemire 教授在 2005 年提出的一个 Item-Based 推荐算法。基于用户评分矩阵,对某用户推荐其未评分的产品,未评分的产品的评分预测依据其他用户的评分进行计算,最简单的计算方式如下:
item1 | item2 | item3 | |
user1 | 5 | 3 | 3 |
user2 | 4 | 3 | 5 |
user3 | 4 | ? | 3 |
item1对item2的平均差:((5-3)+(4-3))/2=1.5
item3对item2的平均差:((3-3)+(5-3))/2=1
那么user3对item2的得分:((4-1.5)+(3-1))/2=2.25
Mahout应用:
public static void main(String[] args) throws Exception { File dataFile=new File("d:/cf.txt"); DataModel model = new FileDataModel(dataFile); Recommender oneRecommender=new SlopeOneRecommender(model); List<RecommendedItem> list=oneRecommender.recommend(3, 10); for (RecommendedItem recommendedItem : list) { System.out.println(recommendedItem.getItemID()+"->"+recommendedItem.getValue()); } }
-
本文附件下载:
- cf.rar (120 Bytes)