相似度计算之欧几里得距离

16 sec read

在数学中,欧几里得距离或欧几里得度量是欧几里得空间中两点间“普通”(即直线)距离。欧几里得距离有时候有称欧氏距离,在数据分析及挖掘中经常会被使用到,例如聚类或计算相似度。

如果我们将两个点分别记作(p1,p2,p3,p4…)和(q1,q2,q3,14,…),则欧几里得距离的计算公式为:

E(p,q) = \sqrt{(p_1-q_1)^2+(p_2-q_2)^2+...+(p_n-q_n)^2}=\sqrt{\sum_{i=1}^{n}{(p_i-q_i)^2}}

Python实现:

可以看到,欧几里得距离得到的结果是一个非负数,最大值是正无穷大,但是通常情况下相似度结果的取值范围在 [-1, 1] 之间。可以对它求倒数将结果转化到 (0, 1]之间。

    \[\frac{1}{1+E(p,q)}\]

分母+1是为了避免遇到被0整除的错误。

标准化欧氏距离

标准化欧氏距离是针对简单欧氏距离的缺点(各维度分量的分布不一样)而作的一种改进方案。其实就是将各个分量都标准化。假设样本集X的均值(mean)为m,标准差(standard deviation)为s,那么X的“标准化变量”表示为:

    \[X^*=\frac{X-m}{s}\]

即标准化后的值 = ( 标准化前的值-分量的均值) /分量的标准差

经过简单的推导就可以得到两个n维向量a(a1,a2,…,an)与 b(b1,b2,…,bn)间的标准化欧氏距离的公式:

    \[d(a,b) = \sqrt{\sum_{k=1}^{n}{(\frac{a_k-b_k}{s_k})^2}}\]

如果将方差的倒数看成是一个权重,这个公式可以看成是一种加权欧氏距离(Weighted Euclidean distance)。

Python实现:

打赏作者
微信支付标点符 wechat qrcode
支付宝标点符 alipay qrcode

K-近邻算法KNN学习笔记

什么是K-近邻算法? K近邻法(k-nearest neighbor, k-NN)是1967年由Cover T
2 min read

使用Prophet进行时间序列预测

Prophet是Facebook开源的预测工具,相比ARIMA模型,Prophet真的是非常的简单。只要读入两
1 min read

采用时间序列预测股价变化

时间序列简介 在数学上,随机过程被定义为一族时间随机变量,即{x(t),t∈T},其中T表示时间t的变动范围。
5 min read

发表评论

电子邮件地址不会被公开。 必填项已用*标注