算法分析与设计 - 作业3
- 写在前面
- 相似性与相异性(Similarity)
- 欧几里得距离(L2 norm, Euclidean distance)
- 欧氏距离平方(Squared Euclidean distance)
- 曼哈顿距离(L1 norm, City Block, Manhattan, or taxicab distance)
- 堪培拉距离(Canberra distance)
- 切比雪夫距离(L∞ norm, Chebyshev distance, maximum distance.)
- 闵可夫斯基距离(Lp norm, Minkowski distance)
- 余弦距离(Cosine distance)
- 皮尔逊相关距离(Pearson Correlation distance)
- 马哈拉诺比斯距离(马氏距离)(Mahalanobis distance)
- 标准欧几里得距离(Standardized Euclidian distance)
- 卡方距离(Chi-square distance)
- 詹森-香农距离(JS 散度)(Jensen-Shannon distance)
- 编辑距离(Levenshtein distance)
- 汉明距离(Hamming distance)
- 杰卡德/谷本距离(Jaccard/Tanimoto distance)
- 索伦斯-戴斯指数(Sørensen–Dice)
- 写在最后
写在前面
省流版:

算法分析与设计课作业,感觉之后有用于是顺便学了下。
相似性与相异性(Similarity)
相似性度量是一种衡量给定样本数据之间相互关联或相互接近的方法。相似性度量通常表示为一个数值,样本数据越相似时数值越高;类似地有相异性的定义,一种衡量给定样本数据之间相互远离的方法。
给定的距离 对于任意数据对象 ,当且仅当满足以下四个条件时才是一个度量:
- 非负性:。
- 对称性:。
- 三角形不等式:。
- 当且仅当 时,。
欧几里得距离(L2 norm, Euclidean distance)
记 ,为两个 维空间的点。
两点间欧几里得距离定义为:
欧氏距离平方(Squared Euclidean distance)
记 ,为两个 维空间的点。
两点间欧几里得距离平方定义为:
曼哈顿距离(L1 norm, City Block, Manhattan, or taxicab distance)
记 ,为两个 维空间的点。
两点间曼哈顿距离定义为:
堪培拉距离(Canberra distance)
记 ,为两个 维空间的点。
两点间堪培拉距离定义为:
可看做是曼哈顿距离的加权版本。
切比雪夫距离(L∞ norm, Chebyshev distance, maximum distance.)
记 ,为两个 维空间的点。
两点间切比雪夫距离定义为:
通过旋转坐标系 45 度可以实现曼哈顿距离与切比雪夫距离的转换。
闵可夫斯基距离(Lp norm, Minkowski distance)
记 ,为两个 维空间的点,参数 表示闵可夫斯基度量。
两点间闵可夫斯基度量为 的闵可夫斯基距离定义为:
欧几里得距离、曼哈顿距离、切比雪夫距离分别为 时的特例。
余弦距离(Cosine distance)
可用来衡量两个向量方向的差异,机器学习中借用这一概念来衡量样本向量之间的差异。
记 ,为两个 维空间的向量,
两向量间余弦距离定义为:
相比欧氏距离,余弦距离更加注重两个向量在方向上的差异,而对绝对的数值不敏感。
皮尔逊相关距离(Pearson Correlation distance)
量化两变量之间线性、单调关系的强度。其值等于两变量协方差和标准差的商。
记多变量向量 。
两多变量向量间的皮尔逊相关系数定义为:
马哈拉诺比斯距离(马氏距离)(Mahalanobis distance)
表示数据的协方差距离,可以看作是欧氏距离的一种修正,修正了欧式距离中各个维度尺度不一致且相关的问题。
对于一个均值为 ,协方差矩阵为 的多变量向量 ,其马氏距离为:
记服从同一分布并且其协方差矩阵为 的随机变量 ,其马氏距离定义为:
标准欧几里得距离(Standardized Euclidian distance)
记 ,为两个 维空间的点。
两点间标准欧几里得距离定义为:
卡方距离(Chi-square distance)
卡方距离一般测量 2 个特征矩阵之间的相似度。这种距离通常用于许多应用,如相似图像检索、图像纹理、特征提取等。
记 ,为两个 维空间的点。
两点间卡方距离定义为:
詹森-香农距离(JS 散度)(Jensen-Shannon distance)
詹森-香农距离(JS 散度)计算两个概率分布之间的距离。它是基于Kullback-Leibler(KL)散度得到的对称的散度。
KL 散度同样也用来衡量两个分布之间的差异,等于一个交叉熵减去一个信息熵(交叉熵损失函数的由来)。对于两个概率分布 ,KL 散度定义为:
为了解决 KL 散度的不对称性问题问题,在 KL 散度基础上引入了 JS 散度。对于两个概率分布 ,JS 散度定义为:
编辑距离(Levenshtein distance)
衡量两个字符串之间相似程度的指标。它表示将一个字符串转换成另一个字符串所需的最少编辑操作次数。常见的编辑操作包括插入一个字符、删除一个字符、替换一个字符。
指定字符串与字符集后可通过动态规划求解。
汉明距离(Hamming distance)
衡量两个字符串之间相似程度的指标。它表示两个(相同长度)字符串对应位不同的数量。
对于两字符串 ,其汉明距离定义为:
上式中 代表艾佛森括号。对于命题 ,有:
杰卡德/谷本距离(Jaccard/Tanimoto distance)
对于两集合 ,其杰卡德系数定义为:
则其杰卡德距离定义为:
上学期写 java 实验文本相似度分析的时候基于 n-gram 分词 + Trie + 杰卡德距离魔改了个除了跑的快但是没啥用的算法出来哈哈
索伦斯-戴斯指数(Sørensen–Dice)
对于两集合 ,其索伦斯-戴斯指数定义为:
写在最后
参考:
- 数据科学中使用的 17 种相似性和相异性度量
- 17 types of similarity and dissimilarity measures used in data science.
- 余弦距离、欧氏距离和杰卡德相似性度量的对比分析 - ChaoSimple - 博客园
- 皮尔逊相关系数_百度百科
- 马哈拉诺比斯距离_百度百科
- 马氏距离(Mahalanobis Distance)
- 卡方距离——Chi-square Distance-CSDN博客
- 基于卡方距离度量的改进KNN算法
- Kullback-Leibler(KL)散度介绍
- 理解JS散度(Jensen–Shannon divergence)
- GAN:两者分布不重合JS散度为log2的数学证明_js距离为什么等于log2-CSDN博客
- 距离计算方式_milvus 内积归一化-CSDN博客
- 编辑距离(Edit Distance)的介绍-CSDN博客
- 汉明距离及其高效计算方式
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!