当前位置: 首页 > 推荐系统 > 正文

Mahout中相似度计算类介绍(二)

1 星2 星3 星4 星5 星 (1 次投票, 评分: 5.00, 总分: 5)
Loading ... Loading ...
baidu_share

接着上一篇文章Mahout中相似度计算类介绍(一)

类名:EuclideanDistanceSimilarity

名称:欧几里德距离(Euclidean Distance)
最初用于计算欧几里德空间中两个点的距离,假设 x,y 是 n 维空间的两个点,它们之间的欧几里德距离是:
xy
原理:利用欧式距离d定义的相似度s,s=1 / (1+d)。

范围:[0,1],值越大,说明d越小,也就是距离越近,则相似度越大。 说明:同皮尔森相似度一样,该相似度也没有考虑重叠数对结果的影响,同样地,Mahout通过增加一个枚举类型(Weighting)的参数来使得重叠数也成为计算相似度的影响因子。

Java例子

final DataModel dm = new FileDataModel(new File("e:\\recommend\\item.txt"));//文件名一定要是绝对路径  
 
final ItemSimilarity similarity = new EuclideanDistanceSimilarity(dm);
GenericItemBasedRecommender recommender = new GenericItemBasedRecommender(dm,similarity);
	        List<RecommendedItem> recommendations=recommender.mostSimilarItems(329387l, 3);
//329387 为itemID
	        for (RecommendedItem recommendation : recommendations) {
				System.out.println(recommendation.getItemID());
				System.out.println(recommendation.getValue());
		}

参考文章:http://en.wikipedia.org/wiki/Euclidean_distance
欧几里得度量

本文固定链接: http://www.chepoo.com/mahout-class-similarity-calculation-described-2.html | IT技术精华网

Mahout中相似度计算类介绍(二):等您坐沙发呢!

发表评论