目录:
- 欧氏距离
- 余弦相似度
- 标准化欧氏距离
- 汉明距离
- 字符串相似度
在机器学习中通常用向量来表示每个样本,而计算向量的相似度可以衡量样本向量之间的差异。
计算向量的相似度主要有欧氏距离、余弦距离和汉明距离三种方法。
1、欧氏距离
在二维、三维或多维空间中的欧氏距离就是两点之间的直线距离,在n维空间中是两个点之间的实际距离:
利用欧式距离计算向量的相似度,欧式距离越小相似度越大。
用python代码表示如下:
euclidean_dist = np.sqrt(np.square(vector_1 - vector_2).sum())
2、余弦相似度
把两个向量看成空间中的两条线段,都是从原点([0, 0, ...])出发,指向不同的方向。余弦相似度是利用两个向量之间的夹角的余弦值来衡量两个向量之间的余弦相似度。
在n维空间中,对于向量
,其余弦值为:
夹角余弦取值范围为[-1,1]。余弦值越大表示两个向量的夹角越小,则两个向量越相似;夹角余弦越小表示两向量的夹角越大,则两个向量差异越大。当两个向量的方向重合时夹角余弦取最大值1,当两个向量的方向完全相反夹角余弦取最小值-1。
两个向量夹角的余弦值为预先相似度,如果想得到余弦距离,则将1减去余弦相似度即为余弦距离。
用python代码表示如下:
cosine = (float(np.dot(vector_1, vector_2)) /
(np.linal