`
wbj0110
  • 浏览: 1611593 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

欧氏距离和余弦相似度

阅读更多

两者相同的地方,就是在机器学习中都可以用来计算相似度,但是两者的含义有很大差别,以我的理解就是:

前者是看成坐标系中两个,来计算两点之间的距离

后者是看成坐标系中两个向量,来计算两向量之间的夹角

 

前者因为是,所以一般指位置上的差别,即距离

后者因为是向量,所以一般指方向上的差别,即所成夹角

 

如下图所示:

数据项A和B在坐标图中当做点时,两者相似度为距离dist(A,B),可通过欧氏距离(也叫欧几里得距离)公式计算:

当做向量时,两者相似度为cosθ,可通过余弦公式计算:

假设||A||、||B||表示向量A、B的2范数,例如向量[1,2,3]的2范数为:

√(1²+2²+3²) = √14

numpy中提供了范数的计算工具:linalg.norm()

所以计算cosθ起来非常方便(假定A、B均为列向量):

 

  1. num = float(A.T * B) #若为行向量则 A * B.T  
  2. denom = linalg.norm(A) * linalg.norm(B)  
  3. cos = num / denom #余弦值  
  4. sim = 0.5 + 0.5 * cos #归一化  

 

因为有了linalg.norm(),欧氏距离公式实现起来更为方便:

 

  1. dist = linalg.norm(A - B)  
  2. sim = 1.0 / (1.0 + dist) #归一化  

 

关于归一化:

因为余弦值的范围是 [-1,+1] ,相似度计算时一般需要把值归一化到 [0,1],一般通过如下方式:

sim = 0.5 + 0.5 * cosθ
若在欧氏距离公式中,取值范围会很大,一般通过如下方式归一化:

sim = 1 / (1 + dist(X,Y))

 

说完了原理,简单扯下实际意义,举个栗子吧:

例如某T恤从100块降到了50块(A(100,50)),某西装从1000块降到了500块(B(1000,500))

那么T恤和西装都是降价了50%,两者的价格变动趋势一致,余弦相似度为最大值,即两者有很高的变化趋势相似度

但是从商品价格本身的角度来说,两者相差了好几百块的差距,欧氏距离较大,即两者有较低的价格相似度

分享到:
评论

相关推荐

    Python代码实现 余弦相似度(文本相似度算法)

    余弦相似度算法

    余弦相似度算法计算方法

    余弦相似度算法的计算方法可以分为四种:欧氏距离、曼哈顿距离、标准化欧氏距离和夹角余弦。 1. 欧氏距离(Euclidean Distance) 欧氏距离是最易于理解的一种距离计算方法,源自欧氏空间中两点间的距离公式。对于...

    julicedu.zip_matlab 欧氏距离_向量相似度_改进距离_相似度距离_距离相似度

    向量相似度是衡量两个向量之间相似程度的另一种方式,它可以基于距离度量(如欧氏距离),也可以使用余弦相似度、Jaccard相似度等其他方法。在机器学习中,相似度计算常用于聚类分析、分类任务、推荐系统等领域。 ...

    数据挖掘之距离计算算法

    欧氏距离和余弦相似度的差异在于,前者强调绝对数值差异,后者关注相对方向的一致性。欧氏距离适合处理数值均衡且无特定方向的特征,而余弦相似度则在处理方向性特征(如文本向量)或对数值大小不敏感的场景下表现...

    测量两个向量之间的余弦相似度_PHP_代码_相关文件_下载

    在IT领域,尤其是在数据分析和机器学习中,余弦相似度是一种常用的距离度量方式,用于衡量两个非零向量之间的角度,从而判断它们在多大程度上指向相同的方向。在这个场景中,我们讨论的是如何在PHP中计算两个one-hot...

    使用预定义的数据库将用户输入的图像与其他图像复制的程序matlab代码.zip

    4. 特征向量的距离计算,如欧氏距离和余弦相似度。 5. 数据库查询和结果排序,可能包括距离阈值和排序算法的应用。 6. 可能的光学模拟,如果项目确实包含了光的传播和轴棱锥效应。 理解并实现这些概念将帮助你构建...

    矩阵反余弦计算原理.pdf

    本文将详细讨论矩阵反余弦计算原理,包括余弦距离、余弦相似度及其与欧氏距离的对比,以及调整余弦相似度算法在解决实际问题中的应用。 1. **余弦距离与余弦相似度** 余弦距离是一种衡量两个非零向量之间夹角大小...

    基于模板匹配的语音识别技术应用于机器人源码.zip

    欧氏距离和余弦相似度则常用于衡量特征向量之间的相似度。 四、模板库管理 随着语音识别系统的使用,需要不断更新和优化模板库。新加入的模板应经过精心挑选和训练,确保其代表性。此外,为了提高识别准确率,还...

    吴恩达NLP课程1

    - **距离**:在向量空间中,常用的度量距离的方法有欧氏距离和余弦相似度。欧氏距离衡量的是两个向量的直线距离,而余弦相似度则关注向量的方向而非长度,更适合处理语义上的相似性。 - **PCA(主成分分析)**:...

    人工智能-项目实践-信息检索-用户交互小作业2,一个简单的图片检索系统

    9. **图像相似度计算**:除了传统的欧氏距离和余弦相似度,还可以使用更高级的方法,如基于深度学习的度量学习,如 triplet loss 或 contrastive loss,以优化相似度计算。 10. **性能优化**:由于图像检索可能涉及...

    02-KMeans聚类PPT.pdf

    在K-Means中,常用的距离度量有欧氏距离和余弦相似度。欧氏距离是两点之间直线距离,是最直观的距离度量。余弦相似度则关注的是向量的方向而非大小,适合处理特征尺度不一的情况。 K-Means的优点包括算法简单、易于...

    knn.rar_K._KNN K_knn_knn matlab

    1. **距离度量**:KNN算法的关键在于选择合适的距离度量方法,常用的是欧氏距离和余弦相似度。欧氏距离衡量的是两个样本点在特征空间中的直线距离;余弦相似度则考虑了特征向量的方向,适用于处理高维稀疏数据。 2....

    矩阵反余弦计算原理.docx

    《矩阵反余弦计算原理》深入探讨了向量空间中的一种关键度量——余弦相似度,以及它在计算和数据分析中的应用。余弦相似度是通过计算两个向量夹角的余弦值来衡量它们之间的相似性。在互联网和计算机科学(cs)领域,...

    实验五:聚类算法1

    K-means算法通常使用两种相似度度量:欧氏距离和余弦相似度。欧氏距离是基于两点之间直线距离的度量,适用于多维空间中的数据。余弦相似度则关注向量的方向,适用于文本分析等场景。 3. **K值的选择**: 确定合适...

    第5代深度学习人脸识别引擎JAVA SDK.zip

    最后,人脸比对则通过计算两个特征向量之间的距离来判断是否为同一人,常见的距离度量有欧氏距离和余弦相似度。 在实际应用中,开发者还需要考虑一些关键问题,例如处理光照变化、姿态变化、遮挡等情况,以及如何...

    基于PyTorch重写的机器学习工具包HyperLearn.pdf

    此外,欧氏距离和余弦相似度的计算速度提升了40%,这对于依赖这些度量进行特征相似性比较的任务来说是个巨大的进步。 LSMR迭代最小二乘法的时间减少了50%,这是通过优化算法实现的,能够在保持精度的同时减少计算...

    该课题为基于Matlab的指纹识别系统。带有一个人机交互界面。可以利用它来做指纹门禁。或者是犯罪稽查系统。.zip

    常用的相似度度量有汉明距离、欧氏距离和余弦相似度等。 5. 决策与反馈:根据相似度结果,系统作出判断并给出相应的反馈,如确认身份或拒绝访问。 二、MATLAB在指纹识别中的应用 MATLAB以其强大的数学运算能力和...

    数据挖掘中的距离度量和相似度度量及Python实现

    它是各点间绝对距离的度量,在n维空间中,两点间的欧氏距离是每个维度差的平方和的平方根。公式为:D(x, y) = sqrt(∑(x_i - y_i)^2),其中x和y是两个点的坐标向量。 - 在Python实现中,通过计算两点在每个维度上的...

Global site tag (gtag.js) - Google Analytics