zoukankan      html  css  js  c++  java
  • 几种相似性/距离(杰卡德距离和余弦距离)与其matlab实现

     

     1. 几种相似度

     1.1 Jaccard系数

    杰卡德系数(Jaccard index) , 又称为Jaccard相似系数(Jaccard similarity coefficient),用于比较有限样本集之间的相似性与差异性。

     

    1.2 余弦相似度

    余弦相似度,又称为余弦相似性,是通过计算两个向量的夹角余弦值来评估他们的相似度。

    对于二维空间,根据向量点积公式,显然可以得知:

     

    设向量 A = (A1,A2,...,An),B = (B1,B2,...,Bn) :

     2. 相似度与距离

    2.1 杰卡德距离和余弦距离的对比

    杰卡德距离Jaccard distance(‘jaccard’)
    Jaccard距离常用来处理仅包含非对称的二元(0-1)属性的对象。很显然,Jaccard距离不关心0-0匹配[1]。

    夹角余弦距离Cosine distance(‘cosine’)
    与Jaccard距离相比,Cosine距离不仅忽略0-0匹配,而且能够处理非二元向量,即考虑到变量值的大小。

    对这两者,距离与相似度和为一。

    2.2 余弦距离和欧氏距离的对比

    借助三维坐标系来看下欧氏距离和余弦距离的区别:

    由图可知,相比欧氏距离,余弦距离更加注重两个向量在方向上的差异[2]。

     更多距离参照[1]

    2.3 以一例讲杰卡德距离。

    有二物品A, B[3]。调查7为用户是否购买了这两样物品,得以下向量:

    向量A:(0,0,1,1,1,0,1)

    向量B:(1,0,1,0,1,0,0)

    A∩B = 2

    A∪B = 5

     注意,因为忽略忽略0-0匹配。所以A∪B ≠ 7

    3. 距离计算的MATLAB实现

    matlab中自带的计算距离矩阵的函数有两个pdist和pdist2。

    前者计算一个向量自身的距离矩阵,返回距离矩阵的下三角串联形式;后者计算两个向量之间的距离矩阵,返回是n*n的距离矩阵[4]。基本调用形式如下:

                  D = pdist(X,distance)

                  D = pdist2(X,Y,distance)

    这两个函数都提供多种距离度量形式,非常方便,还可以调用自己编写的距离函数(distance可以用来表示其他距离,如果不写,默认的是欧式距离。)。

    注意:计算的是行向量间的相互距离[5]

    4. 两种距离的比较

    对于行为相关性的度量,Jaccard一般效果更好;而对于文本相关性的度量,Cosine效果略好于Jaccard;但是Jaccard利于map/red计算。

    更详细的介绍可以看文档[6]

    [1] 使用Matlab计算各种距离Distance http://jacoxu.com/使用matlab计算各种距离distance/

    [2] 余弦距离、欧氏距离和杰卡德相似性度量的对比分析 https://www.cnblogs.com/chaosimple/archive/2013/06/28/3160839.html

    [3] 分别用matlab和python计算物品相似度矩阵(Jaccard系数) http://blog.csdn.net/appleyuchi/article/details/71758783

    [4]paper 120:计算距离矩阵的函数的pdist和pdist2函数 https://www.cnblogs.com/molakejin/p/5867255.html

    [5]求5个向量两两之间的欧式距离 http://www.ilovematlab.cn/thread-308220-1-1.html

    [6]推荐算法之Jaccard相似度与Consine相似度  http://blog.csdn.net/u010700335/article/details/72626997?locationNum=3&fps=1

  • 相关阅读:
    Unknown host mirrors.opencas.cn You may need to adjust the proxy settings in Gradle 报错及解决办法
    Design editor is unavaiable until next gradle sync报错及解决办法
    mkdir创建目录失败
    读书笔记之梦断代码(三)
    Android学习——更新数据
    Android学习——添加数据
    Android学习——升级数据库
    Android学习——创建数据库
    开课第十一周周总结
    Android学习——数据库简介
  • 原文地址:https://www.cnblogs.com/jetskyyyy/p/12188375.html
Copyright © 2011-2022 走看看