在机器学习里,有很多的任务,是基于比较而产生的。往往最常见的比较就是 距离与相似的比较。这篇文章主要整理一下距离与相似的各种比较计算方法。
一、一个距离函数d(a,b)要满足的条件
d(a,a)=0 ,到自己的距离是0
d(a,b) >= 0,距离非负
d(a,b) = d(b,a),对称性
d(a,k)+ d(k,b) >= d(a,b),三角形法则: (两边之和大于第三边)
二、闵可夫斯基距离(一组距离的定义)
2.1 闵可夫斯基距离
解释:又称范数,是把每一个维度的距离加起来。
缺点:1、将各个分量的量纲(scale),也就是“单位”当作相同的看待了,2、没有考虑各个分量的分布(期望,方差等)可能是不同的
公式:
2.2曼哈顿距离(Manhattan Distance)城市街区距离(City Block distance)
闵可夫斯基距离,p=1时候的距离。
公式:
经典必放的图
2.3 欧氏距离
闵可夫斯基距离,p=2时候的距离
公式
2.4、标准化欧氏距离 (Standardized Euclidean distance )
也称之为加权欧氏距离(Weighted Euclidean distance),先将各个分量都“标准化”到均值、方差相等,标准化后的值 = ( 标准化前的值 - 分量的均值 ) /分量的标准差。
公式:
2.5 切比雪夫距离
闵可夫斯基距离,p→∞时候的距离,公式如闵可夫斯基距离。
三、夹角余弦相似度
夹角余弦取值范围为[-1,1]。夹角余弦越大表示两个向量的夹角越小,夹角余弦越小表示两向量的夹角越大。当两个向量的方向重合时夹角余弦取最大值1,当两个向量的方向完全相反夹角余弦取最小值-1。余弦相似度与向量的幅值无关,只与向量的方向相关,在文档相似度(TF-IDF)和图片相似性(histogram)计算应用比较多。
公式:
扩展:Tonimoto系数,公式如下,T(A,B)的分母是大于等于 cos similarity的分母,但且仅仅但 A,B长度一样是才相等。这就意味着,Tonimoto系数考虑了两个向量的长度差异,长度差异越大相似性约小
四、杰卡德相似系数(Jaccard similarity coefficient)
两个集合A和B的交集元素在A,B的并集中所占的比例,公式:
杰卡德距离(Jaccard distance)
扩展:相似公式Dice‘ coefficient,公式:
五、皮尔逊相关系数
两个变量之间的皮尔逊相关系数定义为两个变量之间的协方差和标准差的商,公式:
六,海明距离(汉明距离)
两个码字的对应比特取值不同的比特数称为这两个码字的海明距离。
七、编辑距离(Edit Distance)
又称Levenshtein距离(莱文斯坦距离),是指两个字串之间,由一个转成另一个所需的最少编辑操作次数,如果它们的距离越大,说明它们越是不同。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。它可以用来做DNA分析,拼字检测,抄袭识别等等。
计算相似度公式:1-它们的距离/两个字符串长度的最大值。
八、马氏距离
S为协方差矩阵。若S为单位矩阵,则马氏距离为欧氏距离;若为对角矩阵,则变为标准化欧氏距离。马氏距离对量纲不敏感,排除了变量间的相关性干扰。公式:
参考资料
csdn相关博客
后记:
2019-01-03 看到微信公众号里有人总结的,粘贴一下: