Basics
距离类
欧式距离(Euclidean Distance)
- 欧式距离:欧式空间中两点间的距离公式。
- 例如平面空间内的欧式距离:
曼哈顿距离(Manhattan Distance)
1 2 3
| def Manhattan(dataA,dataB): return np.sum(np.abs(dataA - dataB)) print(Manhattan(dataA,dataB))
|
汉明距离(Hamming distance)
- 汉明距离表示的是两个字符串(相同长度)对应位不同的数量。比如有两个等长的字符串 str1 = “11111” 和 str2 = “10001” 那么它们之间的汉明距离就是3(这样说就简单多了吧。哈哈)。
- 汉明距离多用于图像像素的匹配(同图搜索)、通信领域统计错误数据位的数量等。
1 2 3
| def hammingDistance(dataA,dataB): distanceArr = dataA - dataB return dataA.shape[0] - np.sum(distanceArr == 0)
|
角度类
余弦相似度(Cosine)
- 首先,样本数据的夹角余弦并不是真正几何意义上的夹角余弦,只不过是借了它的名字,实际是借用了它的概念变成了是代数意义上的“夹角余弦”,用来衡量样本向量间的差异。
- 二维情况下,即几何意义上的夹角余弦。夹角越小,余弦值越接近于1,反之则趋于-1。
- 余弦相似度对夹角敏感,对数值的相对大小不敏感
皮尔逊相关系数(Pearson Correlation Coefficient)
- 在计算夹角余弦之前将两个向量减去各个样本的平均值,达到中心化的目的。皮尔逊相关函数是余弦相似度在维度缺失上面的一种改进方法。
角度+距离
点积相似度(Dot)
- 常见于word2vec、deepwalk等算法中,用于作为loss(最小化向量ab的模以及两者的夹角),也可以理解为decoder(两向量的点积可以理解为原空间的两点相似度)
- 当向量模长固定时,点积相似度等同于余弦相似度
Refs