常见的距离算法和相似度(相关系数)计算方法

摘要:

  1.常见的距离算法

    1.1欧几里得距离(Euclidean Distance)以及欧式距离的标准化(Standardized Euclidean distance)

    1.2马哈拉诺比斯距离(Mahalanobis Distance)

    1.3曼哈顿距离(Manhattan Distance)

    1.4切比雪夫距离(Chebyshev Distance)

    1.5明可夫斯基距离(Minkowski 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条件熵、基尼系数等

内容:

  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退化为欧氏距离;切比雪夫距离是明氏距离取极限的形式。

   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)

    公式:

    定义:Jaccard系数主要用于计算符号度量或布尔值度量的个体间的相似度,因为个体的特征属性都是由符号度量或者布尔值标识,因此无法衡量差异具体值的大小,只能获得“是否相同”这个结果,所以Jaccard系数只关心个体间共同具有的特征是否一致这个问题。

    2.4Tanimoto系数(广义Jaccard相似系数)

    公式:

    

    2.5对数似然相似度/对数似然相似率

    对数似然相似度

    公式:

    定义:The Likelihood Ratio The likelihood ratio for a hypothesis is the ratio of the maximum value of the likelihood function over the subspace represented by the hypothesis to the maximum value of the likelihood function over the entire parameter space.

     对数似然相似率

      公式:

    定义:     

   详情 扩展

    2.6条件熵、基尼系数等

时间: 2024-10-13 00:23:25

常见的距离算法和相似度(相关系数)计算方法的相关文章

常见的排序算法及其复杂度

? 原文地址:https://www.cnblogs.com/kexinxin/p/11595225.html

十种常见的排序算法,面试算法必考

1.冒泡排序 已知一组无序数据a[1].a[2].……a[n],需将其按升序排列.首先比较a[1]与a[2]的值,若a[1]大于a[2]则交换两者的值,否则不变.再比较a[2]与a[3]的值,若a[2]大于a[3]则交换两者的值,否则不变.再比较a[3]与a[4],以此类推,最后比较a[n-1]与a[n]的值.这样处理一轮后,a[n]的值一定是这组数据中最大的.再对a[1]~a[n-1]以相同方法处理一轮,则a[n-1]的值一定是a[1]~a[n-1]中最大的.再对a[1]~a[n-2]以相同方

【转帖】常见的排序算法

常见的排序算法 总结一下常见的排序算法. 排序分内排序和外排序.内排序:指在排序期间数据对象全部存放在内存的排序.外排序:指在排序期间全部对象个数太多,不能同时存放在内存,必须根据排序过程的要求,不断在内.外存之间移动的排序.内排序的方法有许多种,按所用策略不同,可归纳为五类:插入排序.选择排序.交换排序.归并排序.分配排序和计数排序.插入排序主要包括直接插入排序,折半插入排序和希尔排序两种;选择排序主要包括直接选择排序和堆排序;交换排序主要包括冒泡排序和快速排序;归并排序主要包括二路归并(常用

互联网中常见的推荐算法

原文链接:各种互联网中常见的推荐算法锦集 我们在上网购物.看小说.买电影票的时候,都会遇到各种各样的推荐,给我们推荐一些我们曾经买过或收藏过的同类型产品,或者是推荐一些我们看过的小说题材相同的小说.那这些产品推荐都是如何实现的呢? 我们今天就来聊聊这些“无聊”的算法. 在互联网的应用中,常用的推荐算法有:协同过滤推荐算法(Collaborative Filtering Recommendation).内容推荐算法(Content-based Recommendation).相似性推荐算法(Sim

算法的时间复杂度和空间复杂度合称为算法的复杂度

算法的时间复杂度和空间复杂度合称为算法的复杂度. 1.时间复杂度 (1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道.但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了.并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多.一个算法中的语句执行次数称为语句频度或时间频度.记为T(n). (2)时间复杂度 在刚才提到的时间频度中,n称为问题的规模,当n不断变化时,时

常见数据结构与算法整理总结

转载:http://www.jianshu.com/p/42f81846c0fb?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io 一.概述 以前看到这样一句话,语言只是工具,算法才是程序设计的灵魂.的确,算法在计算机科学中的地位真的很重要,在很多大公司的笔试面试中,算法掌握程度的考察都占据了很大一部分.不管是为了面试还是自身编程能力的提升,花时间去研究常见的算法还是很有必要的.下面是自己对于算法这部分的学习总结. 算法

常见比较排序算法的比较

几种常见的排序算法之比较 排序的基本概念以及其算法的种类,介绍几种常见的排序算法的算法:冒泡排序.选择排序.插入排序.归并排序.快速排序.希尔排序的算法和分析它们各自的复杂度,然后以表格的形式,清晰直观的表现出它们的复杂度的不同.在研究学习了之前几种排序算法的基础上,讨论发现一种新的排序算法,并通过了进一步的探索,找到了新的排序算法较之前几种算法的优势与不足. 排序算法,是计算机编程中的一个常见问题.在日常的数据处理中,面对纷繁的数据,我们也许有成百上千种要求,因此只有当数据经过恰当的排序后,才

Python全栈开发之5、几种常见的排序算法以及collections模块提供的数据结构

在面试中,经常会遇到一些考排序算法的题,在这里,我就简单了列举了几种最常见的排序算法供大家学习,说不定以后哪天面试正好用上,文章后半段则介绍一下collections模块,因为这个模块相对于python提供的基本数据结构(list,tuple,dict)不被人们所熟悉,但是如果你对他们了解的话,用起来也是非常方便高效的. 排序算法 一.冒泡排序(BubbleSort) 步骤: 比较相邻的元素,如果第一个比第二个大,就交换他们两个. 循环一遍后,最大的数就“浮”到了列表最后的位置. 将剩下的数再次

【转】算法的复杂度

算法的时间复杂度和空间复杂度合称为算法的复杂度. 1.时间复杂度 (1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道.但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了.并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多.一个算法中的语句执行次数称为语句频度或时间频度.记为T(n). (2)时间复杂度 在刚才提到的时间频度中,n称为问题的规模,当n不断变化时,时