1.余弦相似度

同过两个向量的夹角的余弦值来判断两个向量的相似度。

余弦值取值[-1,1],越接近1,两向量夹角越小,越相似。

图片.png

二维公式:

图片.png

n维公式:

图片.png

存在的问题[1]:

余弦相似度更多的是从方向上区分差异,而对绝对的数值不敏感。

比如用户对内容评分,5分制。A和B两个用户对两个商品的评分分别为A:(1,2)和B:(4,5)。我们分别用两种方法计算相似度。使用余弦相似度得出的结果是0.98,看起来两者极为相似,但从评分上看X似乎不喜欢这两个东西,而Y比较喜欢。造成这个现象的原因就在于,余弦相似度没法衡量每个维数值的差异,对数值的不敏感导致了结果的误差。

需要修正这种不合理性,就出现了调整余弦相似度,即所有维度上的数值都减去一个均值。

比如A和B对两部电影评分的均值分别是(1+4)/2=2.5,(2+5)/2=3.5。那么调整后为A和B的评分分别是:(-1.5,-1.5)和(1.5,2.5),再用余弦相似度计算,得到-0.98,相似度为负值,显然更加符合现实。

修正的余弦相似度可以说就是对余弦相似度进行归一化处理的算法,公式如下:

图片.png

2.欧几里得距离

通过两个点(向量)的欧式空间距离来判断相似度

图片.png

标准化欧式距离公式:

图片.png

python实现

余弦相似度使用scipy.spatial.distance.cosine(u,v)

需要注意的是这里公式有所变动:

图片.png

这样取值就在[0,2]。

欧式距离scipy.spatial.distance.euclidean(u,v)

余弦欧式距离matlab,余弦相似度和欧几里得距离相关推荐

  1. 计算欧式距离和余弦相似度

    本文介绍Python计算欧式距离和余弦相似度.为了余弦相似度需要使用欧式距离,我们首先介绍欧式距离. 欧式距离 欧式距离标识两个向量之间的距离,计算公式如下: 欧式距离 = Σ(Ai−Bi)2\sqr ...

  2. 相似度计算(欧式距离和余弦距离)

    相似度:即计算个体间的相似程度,相似度度量的值越小,说明个体间相似度越小,相似度的值越大说明个体差异越大. 对于多个不同的文本或者短文本对话消息要来计算他们之间的相似度如何,一个好的做法就是将这些文本 ...

  3. 曼哈顿距离,欧式距离,余弦距离

    1.曼哈顿距离 曼哈顿距离,叫出租车距离的.具见上图黄线,应该就能明白. 计算距离最简单的方法是曼哈顿距离.假设,先考虑二维情况,只有两个乐队 x 和 y,用户A的评价为(x1,y1),用户B的评价为 ...

  4. pytorch 欧式距离、余弦距离 矩阵运算

    目录 一.欧式距离 二.余弦距离 输入数据为张量类型的矩阵向量 一.欧式距离 import torch# 数据 a = [[1,1,2.5],[2.8,7.5,5.4],[2.5,9.2,3.8],[ ...

  5. [机器学习-概念] 什么是欧式距离、标准化欧式距离、马氏距离、余弦距离

    1.欧式距离(Euclidean Distance) 欧式距离源自N维欧氏空间中两点x1,x2x_1,x_2x1​,x2​间的距离公式: 2.标准化欧式距离(Standardized Euclidea ...

  6. 百面机器学习 #2 模型评估:03 余弦距离和余弦相似度、欧氏距离

    文章目录 余弦相似度 余弦相似度和余弦距离 和欧式距离的比较和关系 余弦距离不是一个严格定义的距离 在模型训练过程中,我们也在不断地评估着样本间的距离,如何评估样本距离也是定义优化目标和训练方法的基础 ...

  7. 欧式距离、标准化欧式距离、马氏距离、余弦距离

    目录 欧氏距离 标准化欧氏距离 马氏距离 夹角余弦距离 汉明距离 曼哈顿(Manhattan)距离 1.欧式距离 欧式距离源自N维欧氏空间中两点x1,x2x1,x2间的距离公式: 2.标准化欧式距离 ...

  8. 《统计学习方法》学习笔记(4)--k近邻法及常用的距离(or 相似度)度量

    一.k近邻法基础知识 1. 特征空间中两个实例点的距离反应了两个实例点的相似程度. 2. k近邻模型三要素 = 距离度量(有不同的距离度量所确定的最邻近点不同)+k值的选择(应用中,k值一般取一个比较 ...

  9. 常见的距离算法和相似度计算方法简介,重点介绍海明距离

    一个电脑小白的自我成长之路. 1.常见的距离算法 1.1欧几里得距离(Euclidean Distance) 公式如下: 标准欧氏距离的思路:现将各个维度的数据进行标准化:标准化后的值 = ( 标准化 ...

最新文章

  1. 列表标签ul、ol、dl、li
  2. Exchange对AD的访问
  3. C++ 接口(抽象类)
  4. 使用安全Cookies-笔记
  5. 开源项目【zheng】搭建流程
  6. centos mysql 设置_CentOS下MySQL安装后配置和设置-阿里云开发者社区
  7. spring(7)---深入理解Spring核心技术——Spring中的各模块详解
  8. Kubernetes (1.6) 中的存储类及其动态供给
  9. phpstudy mysql配置_phpstudy mysql数据库文件位置在哪
  10. OFFICE技术讲座:T2B-NE/L2R-WN部分中文标点需要旋转
  11. linux如何进入超级终端,使用telnet和超级终端登录控制Ubuntu
  12. 中国科学院研制的开放式超导磁共振成像磁体系统
  13. Android常用对话框
  14. AppCrash explorer问题(解决方法)
  15. [抄袭]年薪五万程序员的生活及他的理财梦
  16. 为什么要认证抖音蓝V?怎样申请抖音蓝V认证?
  17. 推荐一个好用的设计师导航网址
  18. Android Camera简单整理(一)-Camera Android架构(基于Q)
  19. Go的研习笔记-day13(以Java的视角学习Go)
  20. Android之——实现应用卸载功能

热门文章

  1. 在.NET Core 中使用Quartz.NET
  2. .NET 中 async 和 await
  3. 结合控制台程序和K8S的CronJob完成定时任务
  4. .NET Core验证ASP.NET密码
  5. [原]排错实战——拯救加载调试符号失败的IDA
  6. Http benchmarking 工具 wrk 基本使用
  7. 使用Elastic APM监控你的.NET Core应用
  8. 官博翻译 | .NET Core 即 .NET 的未来
  9. Kafka基本知识整理
  10. 使用高性能Pipelines构建.NET通讯程序