1. 欧几里德距离的相似度计算
欧几里德距离计算相似度是所有相似度计算里面最简单、最易理解的方法。它以经过人们一致评价的物品为坐标轴,然后将参与评价的人绘制到坐标系上,并计算他们彼此之间的直线距离。
图中用户A和用户B分别对项目X、Y进行了评分。用户A对项目X的评分为2,对项目Y的评分为4,表示到坐标系中为坐标点A(1.8, 4);同样用户B对项目X、Y的评分表示为坐标点B(4.5, 2.5),因此他们之间的欧几里德距离(直线距离)为:sqrt((B.x - A.x)^2 + (A.y - B.y)^2)
计算出来的欧几里德距离是一个大于0的数,为了使其更能体现用户之间的相似度,可以把它规约到(0, 1]之间,具体做法为:1 / (1 + d)。参见Table2
2. 欧几里德距离表示相似度规约转换
当用欧几里德距离表示相似度,一般采用以下公式进行转换规约到(0, 1]之间:距离越小,相似度越大
注意:只要至少有一个共同评分项,就能用欧几里德距离计算相似度;如果没有共同评分项,那么欧几里德距离也就失去了作用。其实照常理理解,如果没有共同评分项,那么意味着这两个用户或物品根本不相似。
二维的公式
d = sqrt((x1-x2)^2+(y1-y2)^2)
代码表示:
def OsDistance(vector1, vector2):
sqDiffVector=(vector1-vector2)**2
sqDistances = sqDiffVector.sum()
distance = sqDistances**0.5
return distance
三维的公式
d=sqrt(x1-x2)^2+(y1-y2)^2+(z1-z2)^2)
推广到n维空间,
欧氏距离的公式
d=sqrt( ∑(xi1-xi2)^2 ) 这里i=1,2..n
xi1表示第一个点的第i维坐标,xi2表示第二个点的第i维坐标
n维欧氏空间是一个点集,它的每个点可以表示为(x(1),x(2),...x(n)),其中x(i)(i=1,2...n)是实数,称为x的第i个坐标,两个点x和y=(y(1),y(2)...y(n))之间的距离d(x,y)定义为上面的公式.