您的位置:首页 > 其它

基于用户的协同过滤推荐模型

2017-06-12 09:52 357 查看
协同过滤推荐是推荐系统广泛使用的一种技术。它的主要思想是建立用户与用户、物品与物品之间的相似性联系。并将这些转化为有意义的数据。常用语电商网站中,以为客户推荐其喜好产品为目的。主要的系统过滤推荐方式主要有以下四种:

- 基于用户的协同过滤推荐

- 基于物品的协同过滤推荐

- 基于模型的协同过滤推荐

- 混合协同过滤推荐

基于用户的相似性计算

基于用户的相似性计算非常简单。在一个系统中,我们假设具有相同爱好的客户的喜欢相同的物品。对用户的相似性计算可以用过Mahout机器学习实现,代码如下

final DataModel model = new FileDataModel(new File("src/main/resources/u.data"));
UserSimilarity similarity = new PearsonCorrelationSimilarity(model);
int n = 20;
UserNeighborhood neighborhood = new NearestNUserNeighborhood(n, similarity, model);

final UserBasedRecommender recommender = new GenericUserBasedRecommender(model, neighborhood, similarity);
long userID = 200;
int topN = 10;
List<RecommendedItem> recommendations = recommender.recommend(userID, topN);
for (RecommendedItem recommendation : recommendations) {
System.out.println(recommendation.getItemID() + ": " + recommendation.getValue());
}


对于编号为200的用户,使用皮尔逊相关系数(PearsonCorrelationSimilarity)和(NearestNUserNeighborhood)计算用户相似度,得到Top10及其评分表如下:

316: 5.0
895: 4.6441307
100: 4.6418004
315: 4.564026
896: 4.5467043
285: 4.5023627
344: 4.475635
346: 4.4689593
272: 4.4235177
750: 4.297509


注:对于两个数据集X,Y,他们的相关性可以使用皮尔逊相关系数表达(PearsonCorrelationSimilarity):

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: