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

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

如果我们将两个点分别记作(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

机器学习在旅游与酒店个性化的研究

当我们访问Netflix、 YouTube 或Amazon时,我们认为个性化推荐是理所当然的。这些服务已经探索

机器学习: 商业与数据科学之间的桥梁

每次我们谈论自动驾驶汽车、聊天机器人、 AlphaGo 或者预测分析,都会涉及到一些机器学习技术的实现。在公众

Python检验数据是否正态分布

判断数据是否符合正态分布,比如使用3-sigma判断数据异常前,首先需要确定的是数据是否符合正态分布。今天一起

发表评论

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