欧氏距离

欧式距离是表征两点之间的直线距离,其在k维空间的计算公式为:

spark使用欧式距离计算相似度矩阵 欧式距离 相似度_相似性度量

曼哈顿距离

曼哈顿距离表示的是两点之间连线对各个坐标轴投影的长度总和,其示意图和计算公式如下:

spark使用欧式距离计算相似度矩阵 欧式距离 相似度_欧氏距离_02


spark使用欧式距离计算相似度矩阵 欧式距离 相似度_欧氏距离_03

余弦相似性度量

在高中的时候我们就会计算两向量之间的夹角余弦,扩展到高维空间计算方式也是一样的。两向量之间的余弦夹角越小,我们便可认为两向量之间的相似性越强,因为其指向的方向是相似的;相反,如果余弦夹角越大,例如反向180°,那我们可认为两向量之间相似性很小。

总结

它们都可以表征样本之间的相似性度量。欧氏距离为浮点数运算,运算代价较高。曼哈顿距离示意图在早期的计算机图形学中,屏幕是由像素构成,是整数,点的坐标也一般是整数,原因是浮点运算很昂贵,很慢而且有误差。而曼哈顿距离则只要计算加减法即可,这就大大提高了运算速度,而且不管累计运算多少次,都不会有误差。
当需要从数值上判断样本间的相似性时可以采用欧式距离和曼哈顿距离,而从方向上(也可以说趋势上)判断时,则可以采用余弦相似性度量。例如,2019年小李和小张的体重分别为40KG,60KG,因为2020疫情原因闭门不出,运动量减少,体重分别增至80KG和120KG。可以看到他们两个体重分别增加了40KG和60KG(类似于欧氏距离从数值上判断),但是都增重了两倍(类似于余弦相似性度量从方向和趋势上判断)。