k近邻推荐用到的各种距离

1 kkk-近邻推荐原理

在这里插入图片描述

2 各种距离

2.1 欧几里得距离

在这里插入图片描述
d12=(x1−x2)2+(y1−y2)2d_{12} = \sqrt{(x_{1} - x_{2})^2 + (y_{1} - y_{2})^2}d12=(x1x2)2+(y1y2)2

缺点:欧式距离是一种常用的距离度量,但它并不是尺度不变的,这意味着所计算的距离可能会根据特征的单位发生倾斜。通常,在使用欧式距离度量之前,需要对数据进行归一化处理。

此外,随着数据维数的增加,欧氏距离的作用也就越小。这与维数灾难(curse of dimensionality)有关。

用例:当数据的维度比较低,欧式距离的效果非常好。如果在低维数据上使用欧式距离,则如 kkk-NN 和 HDBSCAN 之类的方法可达到开箱即用的效果。

2.2 曼哈顿距离

在这里插入图片描述

在曼哈顿街区要从一个十字路口开车到另一个十字路口,驾驶距离显然不是两点间的直线距离。这个实际驾驶距离就是曼哈顿距离。 曼哈顿距离也称为“城市街区距离”(City Block distance)。
d12=∣x1−x2∣+∣y1−y2∣d_{12} = \left|x_{1} - x_{2}\right| + \left|y_{1} - y_{2}\right|d12=x1x2+y1y2

缺点:尽管曼哈顿距离在高维数据中可以工作,但它比欧式距离直观性差。此外,由于它可能不是最短路径,有可能比欧氏距离给出一个更高的距离值。

用例:当数据集具有离散或二进制属性时,曼哈顿距离似乎工作得很好,因为它考虑了在这些属性值中实际可以采用的路径。以欧式距离为例,它会在两个向量之间形成一条直线,但实际上这是不可能的。

2.3 切比雪夫距离 (Chebyshev Distance)

切比雪夫距离定义为两个向量在任意坐标维度上的最大差值。换句话说,它就是沿着一个轴的最大距离。切比雪夫距离通常被称为棋盘距离,因为国际象棋的国王从一个方格到另一个方格的最小步数等于切比雪夫距离。
在这里插入图片描述

在这里插入图片描述

d12=max⁡(∣x1−x2∣,∣y1−y2∣)d_{12} = \max(\left|x_{1} - x_{2}\right|, \left|y_{1} - y_{2}\right|)d12=max(x1x2,y1y2)
缺点:切比雪夫距离通常用于特定的用例,这使得它很难像欧氏距离或余弦相似度那样作为通用的距离度量。因此,在确定适合用例时才使用它。

用例:切比雪夫距离用于提取从一个方块移动到另一个方块所需的最小移动次数。此外,在允许无限制八向移动的游戏中,这可能是有用的方法。在实践中,切比雪夫距离经常用于仓库物流,因为它非常类似于起重机移动一个物体的时间。

2.4 余弦距离

在这里插入图片描述
d12=x1x2+y1y2x12+y12x22+y22d_{12} = \frac{x_{1}x_{2} + y_1y_2}{\sqrt{x_1^2+y_1^2}\sqrt{x_2^2+y_2^2}}d12=x12+y12x22+y22x1x2+y1y2

缺点:余弦相似度的一个主要缺点是没有考虑向量的大小,而只考虑它们的方向。以推荐系统为例,余弦相似度就没有考虑到不同用户之间评分尺度的差异。

用例:当我们对高维数据向量的大小不关注时,可以使用余弦相似度。对于文本分析,当数据以单词计数表示时,经常使用此度量。例如,当一个单词在一个文档中比另一个单词更频繁出现时,这并不一定意味着文档与该单词更相关。可能是文件长度不均匀或者计数的重要性不太重要。我们最好使用忽略幅度的余弦相似度。

2.5 闵氏距离(Minkowski)

在这里插入图片描述
d12=[(x1−x2)p+(y1−y2)p]1pd_{12} =[(x_1 - x_2) ^p+ (y_1 - y_2)^p]^{\frac{1}{p}}d12=[(x1x2)p+(y1y2)p]p1

最有趣的一点是,我们可以使用参数 ppp 来操纵距离度量,使其与其他度量非常相似。常见的 ppp 值有:

  • p=1p=1p=1:曼哈顿距离
  • p=2p=2p=2:欧氏距离
  • p=∞p=\inftyp=:切比雪夫距离

缺点:闵氏距离与它们所代表的距离度量有相同的缺点,因此,对曼哈顿距离、欧几里得距离和切比雪夫距离等度量标准有个好的理解非常重要。此外,参数ppp 的使用可能很麻烦,因为根据用例,查找正确的 ppp 值在计算上效率低。

用例:ppp的积极一面是可迭代,并找到最适合用例的距离度量。它允许在距离度量上有很大的灵活性,如果你非常熟悉 ppp和许多距离度量,将会获益多多。

2.6 雅卡尔指数(Jaccard Index)

在这里插入图片描述
雅卡尔指数(交并比)是用于比较样本集相似性与多样性的统计量。雅卡尔系数能够量度有限样本集合的相似度,其定义为两个集合交集大小与并集大小之间的比例。

dAB=1−∣A∩B∣∣A∪B∣d_{AB} =1 - \frac{|A \cap B|}{|A \cup B|}dAB=1ABAB

缺点:雅卡尔指数的一个主要缺点是它受数据大小的影响很大。大数据集对指数有很大影响,因为它可以显著增加并集,同时保持交集相似。
用例:雅卡尔指数通常用于使用二进制或二进制数据的应用程序中。当你有一个深度学习模型来预测图像分割时,比如一辆汽车,雅卡尔指数可以用来计算给定真实标签的预测分割的准确度。
类似地,它可以用于文本相似性分析,以测量文档之间有多少词语重叠。因此,它可以用来比较模式集合。

2.7 汉明距离(Hamming Distance)在这里插入图片描述

汉明距离是两个向量之间不同值的个数。它通常用于比较两个相同长度的二进制字符串。它还可以用于字符串,通过计算不同字符的数量来比较它们之间的相似程度。

缺点:当两个向量长度不相等时,汉明距离使用起来很麻烦。当幅度是重要指标时,建议不要使用此距离指标。

用例:典型的用例包括数据通过计算机网络传输时的错误纠正 / 检测。它可以用来确定二进制字中失真的数目,作为估计误差的一种方法。此外,你还可以使用汉明距离来度量分类变量之间的距离。

2.8 半正矢(Haversine)

在这里插入图片描述
半正矢距离是指球面上的两点在给定经纬度条件下的距离。它与欧几里得距离非常相似,因为它可以计算两点之间的最短连线。主要区别在于半正矢距离不可能有直线,因为这里的假设是两个点都在一个球面上。
d=2rarcsin⁡⁡(sin⁡2(φ2−φ12)+cos⁡(φ1)cos⁡(φ2)sin⁡2(λ2−λ12))d=2 \operatorname{r\arcsin}\left(\sqrt{\sin ^{2}\left(\frac{\varphi_{2}-\varphi_{1}}{2}\right)+\cos \left(\varphi_{1}\right) \cos \left(\varphi_{2}\right) \sin ^{2}\left(\frac{\lambda_{2}-\lambda_{1}}{2}\right)}\right)d=2rarcsin(sin2(2φ2φ1)+cos(φ1)cos(φ2)sin2(2λ2λ1))
符号说明:
ddd:两点之间的距离;
rrr:球的半径;
φ1,φ2\varphi_1,\varphi_2φ1,φ2:点1和点2的纬度,以弧度制度量;
λ1,λ2\lambda_1, \lambda_2λ1,λ2:点1和点2的经度,以弧度制度量。

缺点:这种距离测量的一个缺点是,假定这些点位于一个球体上。实际上,这种情况很少出现,例如,地球不是完美的圆形,在某些情况下可能使计算变得困难。相反,如果假定是椭球,使用 Vincenty 距离比较好。

用例:半正矢距离通常用于导航。例如,你可以使用它来计算两个国家之间的飞行距离。请注意,如果距离本身不那么大,则不太适合。

2.9 Sørensen-Dice 系数

在这里插入图片描述
Sørensen-Dice 系数与雅卡尔指数非常相似,都是度量样本集的相似性和多样性。尽管它们的计算方法相似,但是 Sørensen-Dice 系数更直观一些,因为它可以被视为两个集合之间重叠的百分比,这个值在 0 到 1 之间:
D(A,B)=2∣A∩B∣∣A∣+∣B∣D(A, B)=\frac{2|A \cap B|}{|A|+|B|}D(A,B)=A+B2AB

缺点:正如雅卡尔指数,Sørensen-Dice 系数也夸大了很少或没有真值的集合的重要性,因此,它可以控制多集合的平均得分,还可以控制多组平均得分并按相关集合的大小成反比地加权每个项目,而不是平等对待它们。

用例:用例与雅卡尔指数相似,它通常用于图像分割任务或文本相似性分析。

2.10 M-Distance

在这里插入图片描述
在这里插入图片描述
Mei Zheng, Fan Min, Heng-Ru Zhang, Wen-Bin Chen, Fast recommendations with the M-distance, IEEE Access 4 (2016) 1464–1468.

2.11 MCFV

在这里插入图片描述
Heng-Ru Zhang, Fan Min, Zhi-Heng Zhang, Song Wang, Efficient collaborative filtering recommendations with multi-channel feature vectors. International Journal of Machine Learning & Cybernetics. (2019)1165–1172.

2.12 三角距离Triangle

在这里插入图片描述
Triangle⁡(ij,iq)=Triangle⁡(OA→,OB→)=1−∣AB∣∣OA∣+∣OB∣Triangle⁡(ij,iq)=1−∑u∈Cij,iq(ru,j−ru,q)2∑u∈Ci,i,qru,j2+∑u∈Ci,i,qru,q2\operatorname{Triangle}\left(i_{j}, i_{q}\right)=\operatorname{Triangle}(\overrightarrow{O A}, \overrightarrow{O B})=1-\frac{|A B|}{|O A|+|O B|} \\ \operatorname{Triangle}\left(i_{j}, i_{q}\right)=1-\frac{\sqrt{\sum_{u \in C_{i j, i_{q}}}\left(r_{u, j}-r_{u, q}\right)^{2}}}{\sqrt{\sum_{u \in C_{i, i, q}} r_{u, j}^{2}}+\sqrt{\sum_{u \in C_{i, i, q}} r_{u, q}^{2}}} Triangle(ij,iq)=Triangle(OA,OB)=1OA+OBABTriangle(ij,iq)=1uCi,i,qru,j2+uCi,i,qru,q2uCij,iq(ru,jru,q)2

where OA→\overrightarrow{O A}OA is the rating vector of iji_{j}ij, OB→\overrightarrow{O B}OB is the rating vector of iqi_{q}iq.

Triangle considers both the length of vectors and the angle between them, so it is more reasonable than the angle based Cosine measure. For example, given the two vectors A = (5, 5, 5) and B = (1, 1, 1), the Cosine similarity is 1, which is contrary to common sense. In contrast, the Triangle similarity between them is 0.33, more in line with expectations.
三角距离既考虑了向量的长度,也考虑了它们之间的夹角,因此比基于角度的余弦测度更合理。 例如,给定两个向量 A = (5, 5, 5) 和 B = (1, 1, 1),则余弦相似度为 1,这与常识相反。 相比之下,它们之间的三角形相似度为0.33,更符合预期。

Shuang-Bo Sun, Zhi-Heng Zhang, Xin-Ling Dong, Heng-Ru Zhang, Tong-Jun Li, Lin Zhang, Fan Min, Integrating Triangle and Jaccard similarities for recommendation, PLOS ONE 12 (8) (2017) 1–16.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/507560.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python 分类变量回归_极简Python带你探索分类与回归的奥秘

为何使用人工智能和机器学习?地球的未来在于人工智能和机器学习。如果对这些技术一无所知,人们很快会发现自己落伍了。世界发展日新月异,每天都发生着不可思议的变化。在人工智能和机器学习中,有许多实现和技术能够解决实时问题。…

Fast Matrix Factorization for Online Recommendation with Implicit Feedback论文代码分析

1 数据结构 userCount&#xff1a;用户数 itemCount&#xff1a;项目数 user_ratings&#xff1a;ArrayList<ArrayList>&#xff0c; 问&#xff1a;此处为什么要用二维数组&#xff1f; 答&#xff1a;第1维是用户&#xff0c;第2维是用户对所有项目的评分。 testRatin…

stacking模型融合_【干货】比赛后期大招之stacking技术分享

各位同学大家好&#xff0c;我是本次参赛选手李博&#xff0c;比赛ID是深蓝&#xff08;DeePBluE&#xff09;。现在就读于北京邮电大学&#xff0c;是一名研一的在校生&#xff0c;研究方向是数据分析和机器学习。是的&#xff0c;我又来分&#xff08;na&#xff09;享&#…

多stream_基础之Lambda和Stream的邂逅

基础之Lambda和Stream的邂逅show me the code and take to me,做的出来更要说的明白GitHub项目JavaHouse同步收录喜欢就点个赞呗! 你的支持是我分享的动力&#xff01;引入是否有遇到看不懂身边同事代码的情况&#xff0c;是否有被面试官问到 Java 新特性不懂的情况。我掐指一算…

注意力机制--转载自我的学生隆兴写的博客

原文链接为&#xff1a;https://a-egoist.com/posts/a44b8419/&#xff0c;学生自己搭建的博客&#xff0c;点赞&#xff01; 1 Attention 1.1 什么是 Attention 灵长类动物的视觉系统中的视神经接受了大量的感官输入。在检查视觉场景时&#xff0c;我们的视觉神经系统大约每…

python正弦波和等腰三角波_正弦波脉宽调制(SPWM)原理

1、QPWM的概念 在进行脉宽调制时&#xff0c;使脉冲系列的占空比按正弦规律来安排。当正弦值为最大值时&#xff0c;脉冲的宽度也最大&#xff0c;而脉冲间的间隔则最小&#xff0c;反之&#xff0c;当正弦值较小时&#xff0c;脉冲的宽度也小&#xff0c;而脉冲间的间隔则较大…

推荐系统--矩阵分解(1)

推荐系统–矩阵分解(1) 推荐系统–矩阵分解(2) 推荐系统–矩阵分解(3) 推荐系统–矩阵分解(4) 推荐系统–矩阵分解(5) 推荐系统–矩阵分解(6) 1 引入 一个矩阵可以分解为两个小矩阵的乘积&#xff0c;以音乐为例&#xff0c;利用潜在特征向量来给用户和音乐打上标签&#xff…

python dag调度系统开发_基于机器学习的DAG调度平台

什么是DAG?有向无环图树形结构&#xff1a;除根节点&#xff0c;每个节点有且仅有一个上级节点&#xff0c;下级节点不限。根节点没有上级节点。图结构&#xff1a;每个节点上级、下级节点数不限。DAG调度平台的定义及场景任务调度是在各行各业是个基础问题&#xff0c;当任务…

轻量级人脸识别算法

1 概述 轻量级人脸识别算法

python元组与列表的区别、简答题_细解python面试题(一)元组和列表的区别

可能略去了一些内容。1、列表VS元组在python编程中&#xff0c;我们经常搞不懂列表和元组的区别&#xff0c;或者哪些函数可以用于列表&#xff0c;哪些用于元组&#xff0c;那么跟随本文我们来深入的探索。2、元组元组是值的集合&#xff0c;我们用圆括号来申明它。元组中的类…

Yolo家族算法分析

1 历史简介 2 YOLO算法思想 YOLO算法的基本思想&#xff1a; &#xff08;1&#xff09;将图片划分为SSS \times SSS个网格&#xff1b; &#xff08;2&#xff09;计算每个边界框和置信度&#xff1b; &#xff08;3&#xff09;计算每个网格属于某个类别的概率&#xff1b; &…

u8 附件上传后存放路径_织梦DedeCms附件按月份保存的修改方法

正常情况下&#xff0c;dedecms织梦系统的图片附件是按日保存的&#xff0c;一天一个文件夹, 时间长了, 这样在allimg中就会生成很多文件夹, 不方便管理&#xff0e;虽然&#xff0c;dedecms织梦的后台设置有”附件保存形式”的先项, 但功能太弱&#xff0c;如果是在后台上传和…

推荐系统--矩阵分解(2)

推荐系统–矩阵分解(1) 推荐系统–矩阵分解(2) 推荐系统–矩阵分解(3) 推荐系统–矩阵分解(4) 推荐系统–矩阵分解(5) 推荐系统–矩阵分解(6) 3 BiasSVD&#xff1a;考虑偏置 有一些用户会给出偏高的评分&#xff0c;有一些物品也会收到偏高的评分&#xff0c;比如电影观众为…

tga文件怎么打开_教你win10系统怎么打开stp文件

stp文件怎么打开呢&#xff1f;近来有很多小伙伴反映有朋友发送了一个stp文件给它&#xff0c;搞了半天也没能打开。其实打开stp文件很简单&#xff0c;不过前提是需要有绘图软件。我给大家整理了打开stp文件的图文教程&#xff0c;赶紧来瞧瞧吧有些朋友在使用win10系统的过程中…

python爬取电子病历_一种基于中文电子病历的实体识别方法技术

本发明专利技术提供了一种基于中文电子病历的实体识别方法&#xff0c;涉及医疗实体识别技术领域。针对目前国内缺少公开中文电子病历标注语料库的缺陷&#xff0c;本发明专利技术通过构建整理医学词典&#xff0c;提出了一种半自动语料库标注方法&#xff0c;节省了人工标注的…

推荐系统--矩阵分解(4)

推荐系统–矩阵分解(1) 推荐系统–矩阵分解(2) 推荐系统–矩阵分解(3) 推荐系统–矩阵分解(4) 推荐系统–矩阵分解(5) 推荐系统–矩阵分解(6) 7 基于情感分析的矩阵分解 7.1 引入 【摘要】推荐系统旨在基于丰富的信息预测用户的偏好&#xff0c;例如用户评分、人口统计和评论…

yarn 卸载包_0609-6.1.0-如何卸载CDH6.1

1.文档编写目的Fayson在两年前的文章中介绍过CDH的卸载&#xff0c;参考《如何卸载CDH(附一键卸载github源码)》。除非你是使用Cloudera官方提供的一键安装脚本安装的CDH&#xff0c;否则并没有现成的一键卸载的脚本供使用。为了更好的理解CDH的卸载&#xff0c;这里再次简单介…

推荐系统--矩阵分解(3)

推荐系统–矩阵分解(1) 推荐系统–矩阵分解(2) 推荐系统–矩阵分解(3) 推荐系统–矩阵分解(4) 推荐系统–矩阵分解(5) 推荐系统–矩阵分解(6) 5 TimeSVD&#xff1a;增加时间因素 物品的受欢迎度随着时间而改变&#xff0c;例如&#xff0c;电影可以因外部事件(如新电影中演员…

python安装不了是什么问题_安装不上python的模块怎么办?别怕,我这有妙招!

之前我们介绍过如何在Python中安装第三方的包&#xff1a;Python以第三方包丰富而著称&#xff0c;你想要的功能几乎都可以通过pip命令安装&#xff0c;避免什么都要自己重新造轮子尬尴。但是pip安装有两个常见问题&#xff0c;第一是下载慢&#xff0c;第二是无法安装。慢的原…

推荐系统--矩阵分解(5)

推荐系统–矩阵分解(1) 推荐系统–矩阵分解(2) 推荐系统–矩阵分解(3) 推荐系统–矩阵分解(4) 推荐系统–矩阵分解(5) 推荐系统–矩阵分解(6) 8 基于隐式反馈的矩阵分解 8.1 引入 相对于显示反馈的评分数据&#xff0c;隐式反馈有以下几方面的特征&#xff1a; 只有正反馈&…