相似度算法和距离算法
常见的距离算法和相似度(相关系数)计算方法
查看原文
摘要:
1.常见的距离算法
1.1欧几里得距离(Euclidean Distance)以及欧式距离的标准化(Standardized Euclidean distance)
1.2马哈拉诺比斯距离(Mahalanobis Distance)
1.3曼哈顿距离(Manhattan Distance)
1.4切比雪夫距离(Chebyshev Distance)
1.5明可夫斯基距离(Minkowski Distance)
1.6海明距离(Hamming distance)
2.常见的相似度(系数)算法
2.1余弦相似度(Cosine Similarity)以及调整余弦相似度(Adjusted Cosine Similarity)
2.2皮尔森相关系数(Pearson Correlation Coefficient)
2.3Jaccard相似系数(Jaccard Coefficient)
2.4Tanimoto系数(广义Jaccard相似系数)
2.5对数似然相似度/对数似然相似率
2.6互信息/信息增益,相对熵/KL散度
2.7信息检索–词频-逆文档频率(TF-IDF)
2.8词对相似度–点间互信息
3.距离算法与相似度算法的选择(对比)
内容:
1.常见的距离算法
1.1欧几里得距离(Euclidean Distance)
公式:
标准欧氏距离的思路:现将各个维度的数据进行标准化:标准化后的值 = ( 标准化前的值 - 分量的均值 ) /分量的标准差,然后计算欧式距离
欧式距离的标准化(Standardized Euclidean distance)
公式:
1.2马哈拉诺比斯距离(Mahalanobis Distance)
公式:
关系:若协方差矩阵是对角矩阵,公式变成了标准化欧氏距离;如果去掉马氏距离中的协方差矩阵,就退化为欧氏距离。欧式距离就好比一个参照值,它表征的是当所有类别等概率出现的情况下,类别之间的距离;当类别先验概率并不相等时,马氏距离中引入的协方差参数(表征的是点的稀密程度)来平衡两个类别的概率。
特点:量纲无关,排除变量之间的相关性的干扰。
扩展
1.3曼哈顿距离(Manhattan Distance)
公式:
定义:通俗来讲,想象你在曼哈顿要从一个十字路口开车到另外一个十字路口实际驾驶距离就是这个“曼哈顿距离”,此即曼哈顿距离名称的来源,同时,曼哈顿距离也称为城市街区距离(City Block distance)。
1.4切比雪夫距离(Chebyshev Distance)
公式:
1.5明可夫斯基距离(Minkowski Distance)
定义:
关系:明氏距离是欧氏距离的推广,是对多个距离度量公式的概括性的表述。p=1退化为曼哈顿距离;p=2退化为欧氏距离;切比雪夫距离是明氏距离取极限的形式。这里明可夫斯基距离就是p-norm范数的一般化定义。
下图给出了一个Lp球(||X||p=1)的形状随着P的减少的可视化图:
参照:浅谈L0,L1,L2范数及其应用;机器学习中的范数与距离;浅谈压缩感知(十):范数与稀疏性
1.6海明距离(Hamming distance)
定义:在信息论中,两个等长字符串之间的汉明距离是两个字符串对应位置的不同字符的个数。
场景:在海量物品的相似度计算中可用simHash对物品压缩成字符串,然后使用海明距离计算物品间的距离
参考simHash 简介以及 java 实现;相似度计算常用方法综述;通过simHash判断数组内容相同(或者网页排重)的测试代码
2.常见的相似度(系数)算法
2.1余弦相似度(Cosine Similarity)
公式:
定义:两向量越相似,向量夹角越小,cosine绝对值越大;值为负,两向量负相关。
不足:只能分辨个体在维之间的差异,没法衡量每个维数值的差异(比如用户对内容评分,5分制,X和Y两个用户对两个内容的评分分别为(1,2)和(4,5),使用余弦相似度得出的结果是0.98,两者极为相似,但从评分上看X似乎不喜欢这2个内容,而Y比较喜欢,余弦相似度对数值的不敏感导致了结果的误差,需要修正这种不合理性)
调整余弦相似度(Adjusted Cosine Similarity)
公式:
其中Here is the average of the u-th user’s ratings.
2.2皮尔森相关系数(Pearson Correlation Coefficient)
定义:两个变量之间的皮尔逊相关系数定义为两个变量之间的协方差和标准差的商
扩展
2.3Jaccard相似系数(Jaccard Coefficient)
公式:
这里X,Y不再是向量,而变成了集合
定义:Jaccard系数主要用于计算符号度量或布尔值度量的个体间的相似度,无法衡量差异具体值的大小,只能获得“是否相同”这个结果,所以Jaccard系数只关心个体间共同具有的特征是否一致这个问题。Jaccard系数等于样本集交集与样本集合集的比值。
计算:假设样本A和样本B是两个n维向量,而且所有维度的取值都是0或1。例如,A(0,1,1,0)和B(1,0,1,1)。我们将样本看成一个集合,1表示集合包含该元素,0表示集合不包含该元素。
p:样本A与B都是1的维度的个数
q:样本A是1而B是0的维度的个数
r:样本A是0而B是1的维度的个数
s:样本A与B都是0的维度的个数
那么样本A与B的杰卡德相似系数可以表示为:
附:与Jaccard Coefficient相对应的是Jaccard 距离:d(X,Y) = 1 - Jaccard(X,Y);杰卡德距离用两个集合中不同元素占所有元素的比例来衡量两个集合的区分度。(参考自余弦距离、欧氏距离和杰卡德相似性度量的对比分析)
2.4Tanimoto系数(广义Jaccard相似系数)
公式:
定义:广义Jaccard相似度,元素的取值可以是实数。又叫作谷本系数
关系:如果我们的x,y都是二值向量,那么Tanimoto系数就等同Jaccard距离。
2.5对数似然相似率
对于事件A和事件B,我们考虑两个事件发生的次数:
k11:事件A与事件B同时发生的次数
k12:B事件发生,A事件未发生
k21:A事件发生,B事件未发生
k22:事件A和事件B都未发生
rowEntropy = entropy(k11, k12) + entropy(k21, k22)
columnEntropy = entropy(k11, k21) + entropy(k12, k22)
matrixEntropy = entropy(k11, k12, k21, k22)
2 * (matrixEntropy - rowEntropy - columnEntropy)
详情 扩展
2.6互信息/信息增益,相对熵/KL散度
互信息/信息增益:信息论中两个随机变量的相关性程度
公式:
扩展:知乎问答
2.7信息检索–词频-逆文档频率(TF-IDF)
《数学之美》中看到的TF-IDF算法,在网页查询(Query)中相关性以词频(TF)与逆文档频率(IDF)来度量查询词(key)和网页(page)的相关性;
网页中出现key越多,该page与查询结果越相关,可以使用TF值来量化
每个词的权重越高,也即一个词的信息量越大;比如“原子能”就比“应用”的预测能力强,可以使用IDF值来量化,这里的IDF《数学之美》中说就是一个特定条件下关键词的概率分布的交叉熵。
2.8词对相似度–点间相似度
3.距离算法与相似度算法的选择(对比)
3.1 欧式距离和余弦相似度
欧几里得距离度量会受指标不同单位刻度的影响,所以一般需要先进行标准化,同时距离越大,个体间差异越大
空间向量余弦夹角的相似度度量不会受指标刻度的影响,余弦值落于区间[-1,1],值越大,差异越小
当两用户评分趋势一致时,但是评分值差距很大,余弦相似度倾向给出更优解。例如向量(3,3)和(5,5),这两位用户的认知其实是一样的,但是欧式距离给出的解显然没有余弦值合理。
余弦相似度衡量的是维度间相对层面的差异,欧氏度量衡量数值上差异的绝对值;一种长度与方向的度量所造成的不同;余弦相似度只在[0,1]之间,而马氏距离在[0,无穷)之间(注:以上参考自知乎问题)
应用上如果要比较不同人的消费能力,可以使用欧式距离进行度量(价值度量);如果想要比较不同用户是否喜欢周杰伦,可以使用余弦相似度(定性度量)
相似度算法和距离算法相关推荐
- 文本匹配相似度计算---多种距离算法 ,多种相似度计算算法,一看就懂
常见的距离算法和相似度(相关系数)计算方法 1.常见的距离算法 1.1欧几里得距离(Euclidean Distance) 欧氏距离是最易于理解的一种距离计算方法,源自欧氏空间中两点间的距离公式. ( ...
- 常见的距离算法和相似度计算方法简介,重点介绍海明距离
一个电脑小白的自我成长之路. 1.常见的距离算法 1.1欧几里得距离(Euclidean Distance) 公式如下: 标准欧氏距离的思路:现将各个维度的数据进行标准化:标准化后的值 = ( 标准化 ...
- k-近邻算法之距离度量
k-近邻算法之距离度量 1 欧式距离(Euclidean Distance): [通过距离平方值进行计算] 欧氏距离是最容易直观理解的距离度量方法,我们小学.初中和高中接触到的两个点在空间中的距离 ...
- 你离距离算法只差零点几毫米!
本文转载自"美吉生物",已获授权. 不知道大家是否还记得前期小美为您推送的排序分析解读(原来你是这样的排序分析)和Adonis&ANOSIM分析(Adonis和ANOSIM ...
- 基于模块度的社团检测算法
一.CNM算法 该算法是基于贪婪算法思想的社团结构检测算法,该算法的计算复杂度为O(nlog2^22n),算法代码可以从网上搜到.CNM算法采用堆数据结构计算和更新模块度,具体描述如下: (1)初始化 ...
- 多个点 最远距离 java_Java实现的计算最大下标距离算法示例
本文实例讲述了Java实现的计算最大下标距离算法.分享给大家供大家参考,具体如下: 题目描述 给定一个整形数组,找出最大下标距离j−i, 当且A[i] < A[j] 和 i < j 解法 ...
- 地图距离算法_基于权重的地图匹配技术
文章目录 目录 地图匹配技术概览 文章目录 前言 一.地图匹配概述 二.轨迹预处理 1.降噪 1.1 中值滤波 1.2 极值滤波 1.3 分段 1.4 插值算法 三.基于权重的地图匹配算法 3.1.计 ...
- OCR图片相似度对比和分类算法
目录 算法清单 前提知识 一.像素点对比 二.重心对比 三.投影比对 四.分块对比 Logistic回归的直观认识 带入数据进行训练 使用训练好的模型 训练模型的代码 参考文献: Ocr文字识别其中的 ...
- 人工智能算法之梯度下降法、协同过滤、相似度技术、ALS算法(附案例分析)、模型存储与加载、推荐系统的冷启动问题
梯度下降法 求解机器学习算法的模型参数,即无约束优化问题时,梯度下降法是最常采用的方法之一,另一种常用的方法是最小二乘法.这里对梯度下降法做简要介绍. 最小二乘法法适用于模型方程存在解析解的情况.如果 ...
最新文章
- Asp.net常用的操作函数
- ES6:Reflect
- python 皮尔森相关系数
- 深入理解Solidity 三
- 基于阿里云HiTSDB搭建工业物联网平台实践
- 策略模式/Strategy
- 雷军:小米10是首款支持8x8 MU-MIMO的手机
- xp计算机用户密码设置,XP怎么设置开机密码_XP系统设置开机密码教程-192路由网...
- 【问题解决方案】The MathType Dll cannot be found 问题解决方案
- 插入排序,二分查找插入排序,使用二叉树的插入排序
- Android CircleImageView圆形ImageView
- vba控制matlab,Matlab加VBA在实验室内质量控制中的应用(南京)
- 关于Apt注解实践与总结【包含20篇博客】
- ecshop快速购买
- 获CNNVD感谢信!知道创宇以专业漏洞研究能力支撑“漏洞通报”业务
- 奥维地图电脑端手机端不能用了,有没有可替代的地图工具
- java计算机毕业设计企业员工工资管理系统源码+系统+数据库+lw文档+mybatis+运行部署
- 电脑主板线路连接图解_机箱线怎么接主板 DIY电脑机箱跳线与主板连接图解(2)...
- 华为云学院干货:对象存储服务:便捷管理存储资源
- 一种可大规模定向钓鱼携程旅游网千万用户的***过程重放(转载自wooyun)