机器学习中的数学——距离定义(五):标准化的欧几里得距离(Standardized Euclidean Distance)

分类目录:《机器学习中的数学》总目录
相关文章:
· 距离定义:基础知识
· 距离定义(一):欧几里得距离(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=sXm

其中 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=1n(sixiyi)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

### 回答1: K-Means模型需要对数据进行标准化,因为K-Means算法是基于欧几里得距离的,如果数据的特征之间的尺度不同,那么欧几里得距离的计算就会被特征值较大的特征主导,从而对聚类结果产生不良影响。因此,在使用K-Means模型之前,最好对数据进行标准化处理,使得所有特征的尺度都相同。标准化方法可以是将每个特征值减去均值,再除以标准差,也可以将每个特征值除以该特征的最大值与最小值之差。 ### 回答2: K-Means模型需要对数据进行标准化标准化是指将数据进行预处理,使其具有相同的数据规模和范围,以便更好地应用于K-Means模型。 首先,K-Means模型基于数据的欧氏距离进行聚类,因此,数据的绝对数值大小会影响到聚类结果。如果数据的绝对数值大小不同,那些数值较大的特征将对距离计算产生更大的影响,这可能导致聚类结果被数值较大的特征主导。通过对数据进行标准化,可以消除这种影响,使得不同特征对距离计算的影响相同,从而更好地反映特征之间的相似性。 其次,K-Means模型使用聚类心点来表示聚类簇的心,而聚类心点的计算是基于特征的均值来进行的。如果数据没有被标准化,不同特征的均值大小会不同,这可能导致聚类心点的计算偏向于数值较大的特征。通过对数据进行标准化,可以使得不同特征的均值为0,从而避免了聚类心点计算的偏倚。 另外,标准化还可以提高算法的收敛速度。K-Means模型通过迭代最小化样本到聚类心点的距离平方和,以求得最优的聚类结果。如果数据没有被标准化,不同特征的尺度差异会导致算法收敛速度变慢。通过对数据进行标准化,可以使得不同特征的尺度变得相同,加快了算法的收敛速度。 综上所述,K-Means模型需要对数据进行标准化,以消除不同特征对聚类结果的影响差异,提高聚类结果的准确性,加快算法的收敛速度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

von Neumann

您的赞赏是我创作最大的动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值