余弦距离(Cosine distance)

余弦相似度原理

  • 用向量空间中的两个向量夹角的余弦值作为衡量两个个体间差异大小的度量,值越接近1,就说明夹角角度越接近0°,也就是两个向量越相似,就叫做余弦相似
  • 余弦相似度公式具体如下:

余弦实际应用

  • 现在假设:A用户喜欢a,b,d;B用户喜欢b,c,e;C用户喜欢c,d;D用户喜欢b,c,d;E用户喜欢a,d,建立物品-用户的倒排表,列出每个物品都被哪些用户喜欢,其中“1”表示喜欢,“0”表示不喜欢。注意:这里的喜欢行为可以理解成是用户在产品上触发的交互,例如点击,评论,点赞,收藏等。具体如下:

  • 利用前面说到的余弦定理公式计算两个物品间的相似度,例如:将物品a和b分别看作是多维空间中的两个向量,则有:a(1,0,0,0,1);b(1,1,0,1,0),所以物品a和物品b的相似度为:

代码实现

import numpy as np
vec1 = np.array([1, 3, 4])
vec2 = np.array([4, 2, 4])
d = np.dot(vec1,vec2)/(np.linalg.norm(vec1) * (np.linalg.norm(vec2)))

点积距离(Dot Product)

点积相似度原理

  • 两个向量的长度与它们夹角余弦的积
  • 点积计算公式:a * b = |a| * |b| * cosθ
  • 点乘又叫向量的内积、数量积,是一个向量和它在另一个向量上的投影的长度的乘积;是标量。
  • 点乘反映着两个向量的“相似度”,两个向量越“相似”,它们的点乘越大。

代码实现

import numpy as np
vec1 = np.array([1, 3, 4])
vec2 = np.array([4, 2, 4])
d = np.dot(vec1, vec2)

欧氏距离(Euclidean distance)

欧氏相似度原理

  • 欧氏距离(也称欧几里得度量)指在m维空间中两个点之间的真实距离,或者向量的自然长度(即该点到原点的距离)
  • 欧式相似度公式具体如下:

欧氏实际应用

  • 在数据完整(无维度数据缺失)的情况下, 维度间的衡量单位是一致的, 否则需要标准化处理

代码实现

import numpy as np
vec1 = np.array([1, 3, 4])
vec2 = np.array([4, 2, 4])
d = np.linalg.norm(vec1-vec2, ord=2)
# 或
d = np.sqrt(np.sum(np.square(vec1-vec2)))

曼哈顿距离(Manhattan distance)

曼哈顿相似度原理

  • 在欧几里得空间的固定直角坐标系上两点所形成的线段对轴产生的投影的距离总和
  • 曼哈度相似度公式具体如下:

曼哈顿实际应用

  • 在数据完整(无维度数据缺失)的情况下, 需要将空间划分成网格, 然后以网格为单位来进行度量, 允许4个方向

代码实现

import numpy as np
vec1 = np.array([1, 3, 4])
vec2 = np.array([4, 2, 4])
d = np.linalg.norm(vec1-vec2, ord=1)
# 或
d = np.sum(np.abs(vec1-vec2))

附录:

  • 参考1:https://zhuanlan.zhihu.com/p/154108167
  • 参考2:https://segmentfault.com/a/1190000019307297

图片向量相似检索服务(2)——四种基本距离计算原理相关推荐

  1. 微软服务器尚未启动是什么问题,Win10系统打开图片提示“应用未启用”的四种解决方案...

    Windows10系统不仅给我们带来了全新的界面,也新增了很多新功能.不过,部分用户在使用win10系统时,也会遇到一些令人费解的问题.比如,有windows10用户反馈在打开图片或照片的时候,会出现 ...

  2. 云计算服务的四种部署模型

    云计算服务的四种部署模型包括: 云端部署:所有资源和服务都在云端运行. 混合部署:部分资源和服务在本地,部分在云端. 分布式部署:资源和服务分布在多个地点. 私有云部署:资源和服务都在企业内部运行,不 ...

  3. 并行:四种C+OpenMP计算π的并行程序

    四种C+OpenMP计算π的并行程序 VS2017中OpenMP配置 计算π的串行程序 计算π的并行程序 1.并行域并行化 2.共享任务结构并行化 3.private字句和critical制导语句并行 ...

  4. 把 Console 部署成 Windows 服务,四种方式总有一款适合你!

    一:背景 1. 讲故事 上周有一个项目交付,因为是医院级项目需要在客户的局域网独立部署.程序:netcore 2.0,操作系统:windows server 2012,坑爹的事情就来了, netcor ...

  5. bootstrap图片叠加_详解Bootstrap四种图片样式

    在本章中,我们将学习 Bootstrap 对图片的支持.Bootstrap 提供了四个可对图片应用简单样式的class,分别是: img-rounded 添加 border-radius:6px 来获 ...

  6. 怎么图片转文字提取?推荐四种图片转文字的方法

    我有一个习惯就是遇到重点内容.重要的资料就会拍照保存起来,一方面是怕自己转过头就忘了内容,另一方面也是为了能够更好的整理资料. 因为通常一份资料或者课堂内容我都会拍摄7到8张左右的照片,所以如果有时间 ...

  7. 让一个图片在div中居中(四种方法)

    第一种方法: <div class="title"><div class="flag"></div><div clas ...

  8. 四种物联网卡计算模式

    从物联网卡从业人员的视角看来,三天两头看见对换算更为可用和分布式架构的需求.当逐渐将物联网卡与OT和IT系统软件融合时,亟待解决的第一个难题是机器设备发送至网络服务器的巨大信息量. 在一个加工厂智能化 ...

  9. 一文搞定最大公约数(四种方法,赋原理和比较,超详细解答)

    最大公约数 前言 1.暴力穷举法 代码 2.辗转相除法 步骤 原理 代码 3.更相减损法 步骤 原理 代码 比较 4.stein算法 比较 运算符 & 移位操作符 原理 步骤 代码 前言 求两 ...

最新文章

  1. C++ 笔记(35)— std::to_string 转换整形数字为字符串
  2. 安卓自动化测试——rf
  3. sql 某列数据全部为0则不显示该列_数据产品经理养成记(五):汇总分析
  4. slurm安装配置_安装Slurm_鲲鹏高性能计算解决方案_安装指南_Slurm 18.08.7 安装指南_Slurm的安装配置_华为云...
  5. 第27章 正则表达式
  6. 如何压缩word文档的大小?
  7. java使用POI识别excel的复选框插件
  8. 小猪短租网requests库使用
  9. 云计算时代商业银行的战略机会
  10. 简单 黑苹果dsdt教程_[黑苹果入门]关于DSDT的入门知识
  11. 世界互联网大会为什么把这么重要的奖颁给蚂蚁金服?
  12. 服务器磁盘IO是什么意思?SATA和固态硬盘的性能差异
  13. Redis 实现搜索关键词自动补全
  14. (android)向sdcard中添加文件出现Failed to push the item(s)
  15. java—set创建迭代器的两个方法
  16. Java工程师核心能力_java程序员的核心竞争力是什么?
  17. 路由器、交换机、集线器工作在哪一层
  18. IoT -- 解读物联网四层架构
  19. 【车牌识别】模板匹配新能源、轿车、货车车牌识别【含GUI Matlab源码 2169期】
  20. nn.Embedding使用

热门文章

  1. 十堰计算机学校原校址搬迁后,整整41年!十堰柳林中学老校区正式更名了!
  2. 浅谈我国产业园区未来的发展方向
  3. 怎么看k线图_详解下降三角形
  4. Android 颜色和颜色透明度列表
  5. EasyDL-SDK树莓派部署1
  6. postman发送带有token的接口测试
  7. c语言程序设计英汉词典设计,c语言(二)课程设计--电子英汉词典设计.doc
  8. Symbian中的进程和线程
  9. sqlite --- 支持的函数及字段类型
  10. adb 查看磁盘占用_如何使用adb 指令查看机器序列号