分类目录:《机器学习中的数学》总目录
相关文章:
· 距离定义:基础知识
· 距离定义(一):欧几里得距离(Euclidean Distance)
· 距离定义(二):曼哈顿距离(Manhattan Distance)
· 距离定义(三):闵可夫斯基距离(Minkowski Distance)
· 距离定义(四):切比雪夫距离(Chebyshev Distance)
· 距离定义(五):标准化的欧几里得距离(Standardized Euclidean Distance)
· 距离定义(六):马氏距离(Mahalanobis Distance)
· 距离定义(七):兰氏距离(Lance and Williams Distance)/堪培拉距离(Canberra Distance)
· 距离定义(八):余弦距离(Cosine Distance)
· 距离定义(九):测地距离(Geodesic Distance)
· 距离定义(十): 布雷柯蒂斯距离(Bray Curtis Distance)
· 距离定义(十一):汉明距离(Hamming Distance)
· 距离定义(十二):编辑距离(Edit Distance,Levenshtein Distance)
· 距离定义(十三):杰卡德距离(Jaccard Distance)和杰卡德相似系数(Jaccard Similarity Coefficient)
· 距离定义(十四):Ochiia系数(Ochiia Coefficient)
· 距离定义(十五):Dice系数(Dice Coefficient)
· 距离定义(十六):豪斯多夫距离(Hausdorff Distance)
· 距离定义(十七):皮尔逊相关系数(Pearson Correlation)
· 距离定义(十八):卡方距离(Chi-square Measure)
· 距离定义(十九):交叉熵(Cross Entropy)
· 距离定义(二十):相对熵(Relative Entropy)/KL散度(Kullback-Leibler Divergence)
· 距离定义(二十一):JS散度(Jensen–Shannon Divergence)
· 距离定义(二十二):海林格距离(Hellinger Distance)
· 距离定义(二十三):α-散度(α-Divergence)
· 距离定义(二十四):F-散度(F-Divergence)
· 距离定义(二十五):布雷格曼散度(Bregman Divergence)
· 距离定义(二十六):Wasserstein距离(Wasserstei Distance)/EM距离(Earth-Mover Distance)
· 距离定义(二十七):巴氏距离(Bhattacharyya Distance)
· 距离定义(二十八):最大均值差异(Maximum Mean Discrepancy, MMD)
· 距离定义(二十九):点间互信息(Pointwise Mutual Information, PMI)
我们在《距离定义(一):欧几里得距离(Euclidean Distance)》中介绍了欧几里得距离,而标准化的欧几里得距离是针对简单欧几里得距离的缺点而作的一种改进方案。
标准化的欧几里得距离的思路:将各个分量都“标准化”到均值、方差相等的区间,即:
X
∗
=
X
−
m
s
X^*=\frac{X-m}{s}
X∗=sX−m
其中
X
∗
X^*
X∗为标准化后的值,
X
X
X为原值,
m
m
m为分量的均值,
s
s
s为分量的标准差。所以
n
n
n维空间中标准化的欧几里得距离为:
d
(
x
,
y
)
=
∑
i
=
1
n
(
x
i
−
y
i
s
i
)
2
d(x, y)=\sqrt{\sum_{i=1}^n(\frac{x_i-y_i}{s_i})^2}
d(x,y)=i=1∑n(sixi−yi)2
如果将方差的倒数看成是一个权重,这个公式可以看成是一种加权欧氏距离(Weighted Euclidean Distance)。
下面我们来看一下标准化的欧几里得距离的Python实现:
def StandardizedEuclideanDistance(x, y):
import numpy as np
x = np.array(x)
y = np.array(y)
X = np.vstack([x,y])
sigma = np.var(X, axis=0, ddof=1)
return np.sqrt(((x - y) ** 2 /sigma).sum())
上述代码中需要避免某个分量取值一致,即该分量sigma=0
。