概述
前文讲了基于皮尔逊相关系数的相似度计算方法,这次介绍一个更加简单的相似度计算算法——欧几里得度量。
算法描述如下:
欧几里得度量定义欧几里得空间中,点x =(x1,...,xn)和 y =(y1,...,yn)之间的距离为
很简单吧,我也不多做描述了,直接贴代码。
package euclideanMetric;
/**
* @author shenchao
*
*
欧几里得度量算法实现
*
*/
public class EuclideanMetric {
/**
* 两个向量可以为任意维度,但必须保持维度相同,表示n维度中的两点
*
* @param vector1
* @param vector2
* @return 两点间距离
*/
public double sim_distance(double[] vector1, double[] vector2) {
double distance = 0;
if (vector1.length == vector2.length) {
for (int i = 0; i < vector1.length; i++) {
double temp = Math.pow((vector1[i] - vector2[i]), 2);
distance += temp;
}
distance = Math.sqrt(distance);
}
return distance;
}
}
最后,要说明的是,用欧几里得度量去计算相似度非常的简单,当然,这同时带来的后果是,在某种情况下会带来很大的误差。举个例子说:比如上篇博客提到的电影案例,每个人对自己看过的电影打分,这当然存在很大的主观性,因而可能会存在这样一种情况,一些人倾向于给高分,而另一些人倾向于给低分。这当然会造成两者的距离很大偏差。而使用皮尔逊相关度算法,则不会出现这种问题,因为它们变化的大小不变,所以斜率不变。所以选择哪种算法,依情况而定。
最后
以上就是朴素夏天为你收集整理的【JAVA实现】基于欧几里得度量的相似度计算的全部内容,希望文章能够帮你解决【JAVA实现】基于欧几里得度量的相似度计算所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复