精华内容
下载资源
问答
  • 利用MATLAB进行结构相似性指数(Structural Similarity Index)计算
  • 几种图像相似性度量的匹配性能比较 几种图像相似性度量的匹配性能比较
  • 多元时间序列相似模式挖掘是数据挖掘领域的研究热点,它主要包括特征表示、相似模式度量和相似性搜索3个方面.目前,大部分研究成果主要集中在特征表示和相似模式度量,相似性搜索则成为制约问题突破的关键环节.为此,...
  • 时间序列的相似性度量是时间序列分析的基础工作之一,是进行相似匹配的关键。针对欧几里德距离描述分段趋势的不足和各种模式距离对应分段之间距离值的离散化问题,提出一种基于形态相似距离的时间序列相似性度量方法...
  • 人工智能算法的视角卷一草稿 第四章 相似性度量 第 4 章 相似性度量 对于相似性 similarity 的判断是人类认识世界的关键基于相似事物的共同特性 我们才能得以形成概念发现客观规律这正是机器学习的要义相似性可以是...
  • 余弦相似性测量;基于距离测量的相似性
  • 时间序列相似性度量领域中,现有的算法对各类相似性变形的识别能力有限。为了能有效支持识别多种相似性形变,提出涨落模式(FP)的概念,以涨落模式保存原序列的趋势变化信息,利用最长公共子序列算法计算涨落模式的...
  • 分子生物学分析软件NTSYS关于遗传相似性系数及聚类分析的详细步骤说明。小白都能看得懂的方法说明。
  • 资源包括图像检索,图像分割,草图提取的实现等,还有完整的论文,可以参考,运行效果很好。是一个完善的对图像显著性和相似性进行研究的完整的代码和论文,初学者和深入研究者均可参考。
  • 相似性

    千次阅读 2018-05-04 15:21:38
    拓扑相似性语义相似性(semantic similarity)定义在一组文档上或者术语上的度量,他们之间的距离基于他们的意义或者语义内容的相似性,而不是语法表示上的相似性。我们可以通过定义拓扑相似性来估计语义相似性。...

    拓扑相似性


    语义相似性(semantic similarity)定义在一组文档上或者术语上的度量,他们之间的距离基于他们的意义或者语义内容的相似性,而不是语法表示上的相似性。我们可以通过定义拓扑相似性来估计语义相似性。

    生物医学上的应用:它们主要用于比较基因和蛋白质的功能相似性,而不是它们的序列相似性,但它们也正在扩展到其他生物实体,如化合物,解剖实体和疾病等方面。

    常用来计算相似性:

    1.jaccard 相似性:Jaccard指数也称为交集交汇点和Jaccard相似系数(Paul Jaccard最初创造的系数),是用于比较样本集的相似性和多样性的统计量。 Jaccard系数测量有限样本集之间的相似性,并将其定义为交点的大小除以样本集的并集大小:如果AB都是空集的话,也定义为J(A,B) = 1.

    如上图,如果所交的区域或者说样本集比较大的话,我们就可以说他们之间的相似性较大。


    维基链接:https://en.wikipedia.org/wiki/Jaccard_index

    2.高斯相似性:高斯核函数的相似性,可见https://www.cnblogs.com/yan2015/p/5182144.html

    3.余弦相似性:余弦相似度是衡量内积空间的两个非零向量之间相似度的度量,它衡量它们之间角度的余弦。具体就是根据词句的内容以及词频,生成向量。计算他们之间的余弦大小,越接近1越相似。更详细的介绍可点击链接http://www.ruanyifeng.com/blog/2013/03/cosine_similarity.html



    常见的相似性度量:见地址https://blog.csdn.net/xholes/article/details/52708854

    展开全文
  • 图像相似性评价指标SSIM,论文的源程序matlab代码
  • 台风相似性度量方法的研究对防灾减灾、辅助决策等具有重要意义,台风相似性的研究大多集中在台风路径的相似性度量上。首先,梳理影响台风相似性度量的多个要素,提出了基于多元时间序列的台风数据描述方法;其次,...
  • 用Python 玩转数据项目文档相似性比较 相似性比较算法在许多领域有着重要应用在剽窃检测方面相似性比较算法可以帮助 检查抄袭在代码管理方面可以帮助查找大型代码的相似部分以便进一步优化与修改 在存储方面可以帮助...
  • 数据间的相似性度量是进一步分析数据集整体特性的一个重要基础。针对高维数据的相似性度量问题,提出了一种基于子空间的相似性度量方法。该方法先将高维空间进行基于网格的划分,然后在划分后的子空间内计算数据间的...
  • 序列的相似性

    千次阅读 2019-05-04 08:02:20
    序列的相似性可以是定量的数值,也可以是定性的描述。相似度是一个数值,反映两条序列的相似程度。关于两条序列之间的关系,有许多名词,如相同、相似、同源、同功、直向同源、共生同源等。在进行序列比较时经常使用...

    序列的相似性可以是定量的数值,也可以是定性的描述。相似度是一个数值,反映两条序列的相似程度。关于两条序列之间的关系,有许多名词,如相同、相似、同源、同功、直向同源、共生同源等。在进行序列比较时经常使用“同源”(homology)和“相似”(similarity)这两个概念,这是两个经常容易被混淆的不同概念。两条序列同源是指它们具有共同的祖先。在这个意义上,无所谓同源的程度,两条序列要么同源,要么不同源。而相似则是有程度的差别,如两条序列的相似程度达到30%或60%。一般来说,相似性很高的两条序列往往具有同源关系。但也有例外,即两条序列的相似性很高,但它们可能并不是同源序列,这两条序列的相似性可能是由随机因素所产生的,这在进化上称为“趋同”(convergence),这样一对序列可称为同功序列。直向同源(orthologous)序列是来自于不同的种属同源序列,而共生同源(paralogous)序列则是来自于同一种属的序列,它是由进化过程中的序列复制而产生的。

    同源基因

    序列比较的基本操作是比对(align)。两条序列的比对(alignment)是指这两条序列中各个字符的一种一一对应关系,或字符对比排列。序列的比对是一种关于序列相似性的定性描述,它反映在什么部位两条序列相似,在什么部位两条序列存在差别。最优比对揭示两条序列的最大相似程度,指出序列之间的根本差异。

    字母表和序列

    在生物分子信息处理过程中,将生物分子序列抽象为字符串,其中的字符取自特定的字母表。字母表是一组符号或字符,字母表中的元素组成序列。一些重要的字母表有:

    (1)4字符DNA字母表 {A, C, G, T};

    (2)扩展的遗传学字母表或IUPAC编码;

    (3)单字母氨基酸编码;

    (4)上述字母表形成的子集。

    下面所讨论的内容独立于特定的字母表。 首先规定一些特定的符号:

    ① A — 字母表;

    ② A* — 由字母表A中字符所形成的一系列有限长度序列或字符串的集合;

    ③ a、b、c — 单独的字符;

    ④ s、t、u、v、x — A*中的序列;

    ⑤ |s| — 序列s的长度。

    为了说明序列s的子序列和s中单个字符,我们在s中各字符之间用数字标明分割边界。例如,设s=ACCACGTA,则s可表示为

    0A1C2C3A4C5G6T7A8 。

    i:s:j 指明第i位或第j位之间的子序列。当然,0 £ i £ j £ |s|。子序列0 : s : i 称为前缀,即prefix(s,i),而子序列 i:s:|s| 称为后缀suffix(s, |s|-i+1)。有两种特殊的情况,即 i=j或i = j-1。

    ① i:s:i 表示空序列

    ② ( j-1):s: j 表示s 中的第j 个字符,简记为sj 。

    一般认为,子序列与计算机算法中子串的概念相当。但是,严格地讲,子序列与子串的概念是有区别的:子串是子序列,而子序列不一定是子串。可以通过选取s中的某些字符(或删除s中的某些字符)而形成s的子序列,例如TTT是ATATAT的子序列。而s的子串则是由s中相继的字符所组成,例如TAC是AGTACA的子串,但不是TTGAC的子串。如果t是s的子串,则称s是t的超串。子串也可以称为连续子序列。

    两条序列s和t的连接用s + + t来表示,如:

    ACC++CTA = ACCCTA

    字符串操作除连接操作之外,另有一个k操作,即删除一个字符串两端的字符。其定义如下:

    prefix(s,l) = sk|s|-l ,

    suffix(s,l) = k|s|-ls ,

    i:s:j = ki-1sk|s|-j 。

    序列比较可以分为四种基本情况,具体任务和应用说明如下:

    (1)假设有两条长度相近的、来自同一个字母表的序列,它们之间非常相似,仅仅是有一些细微的差别,例如字符的插入、字符的删除和字符替换,要求找出这两条序列的差别。这种操作实际应用比较多,例如,有两个实验室同时测定某个基因的DNA序列,其结果可能不一样,需要通过序列比较来比较实验结果。

    (2)假设有两条序列,要求判断是否有一条序列的前缀与另一条序列的后缀相似,如果是,则分别取出前缀和后缀。该操作常用于大规模DNA测序中序列片段的组装。

     

    (3)假设有两条序列,要求判断其中的一条序列是否是另一条序列的子序列。这种操作常用于搜索特定的序列模式。

    (4)假设有两条序列,要求判断这两条序列中是否有非常相似的子序列。这种操作可用于分析保守序列。

    当然,进行序列比较时,往往还需要说明是采取全局比较,还是采取局部比较。全局比较是比较两条完整的序列,而局部比较是找出最大相似的子序列。

    编辑距离(Edit Distance)

    观察这样两条DNA序列:GCATGACGAATCAG和TATGACAAACAGC。一眼看上去,这两条序列并没有什么相似之处,然而如果将第二条序列错移一位,并对比排列起来以后,就可以发现它们的相似性。

    序列比对

    如果进一步在第二条序列中加上一条短横线,就会发现原来这两条序列有更多的相似之处。

    序列比对

    上面是两条序列相似性的一种定性表示方法,为了说明两条序列的相似程度,还需要定量计算。有两种方法可用于量化两条序列的相似程度:一为相似度,它是两条序列的函数,其值越大,表示两条序列越相似;与相似度对应的另一个概念是两条序列之间的距离,距离越大,则两条序列的相似度就越小。在大多数情况下,相似度和距离可以交互使用,并且距离越大,相似度越小,反之亦然。但一般而言,相似度使用得较多,并且灵活多变。

    最简单的距离就是海明(Hamming)距离。对于两条长度相等的序列,海明距离等于对应位置字符不同的个数。例如,下图是3组序列海明距离的计算结果。

    海明距离

    使用距离来计算不够灵活,这是因为序列可能具有不同的长度,两条序列中各位置上的字符并不一定是真正的对应关系。例如,在DNA复制的过程中,可能会发生像删除或插入一个碱基这样的错误,虽然两条序列的其他部分相同,但由于位置的移动导致海明距离的失真。就图3.1中例子最右边的情况,海明距离为6,简单地从海明距离来看,两条序列差别很大(整个序列的长度只有8bp),但是,如果从s中删除G,从t中删除T,则两条序列都成为ACACACA,这说明两条序列仅仅相差两个字符。实际上,在许多情况下,直接运用海明距离来衡量两条序列的相似程度是不合理的。

    为了解决字符插入和删除问题,引入字符“编辑操作”(Edit Operation)的概念,通过编辑操作将一个序列转化为一个新序列。用一个新的字符“-”代表空位(或空缺,Space),并定义下述字符编辑操作:

    Match(a,a) — 字符匹配;

    Delete(a,-) — 从第一条序列删除一个字符,或在第二条序列相应的位置插入空白字符;

    Replace(a,b) — 以第二条序列中的字符b替换第一条序列中的字符a,a¹b;

    Insert(-,b) — 在第一条序列插入空位字符,或删除第二条序列中的对应字符b。

    很显然,在比较两条序列s和t时,在s中的一个删除操作等价于在t中对应位置上的一个插入操作,反之亦然。需要注意的是,两个空位字符不能匹配,因为这样的操作没有意义。引入上述编辑操作后,重新计算两条序列的距离,就成为编辑距离。

    以上的操作仅仅是关于序列的常用操作,在实际应用中还可以引入复杂的序列操作。下面是两条序列的一种比对:

    序列比对

    上述比对不能反映两条序列的本质关系。但是,如果将第二条序列头尾倒置,可以发现两条序列惊人的相似:

    序列比对

    再比如,下面两条序列有什么关系?如果将其中一条序列中的碱基替换为其互补碱基,就会发现其中的关系:

    互补序列

    RNA发式结构

    通过点矩阵分析两条序列的相似之处

    进行序列比较的一个简单的方法是“矩阵作图法”或“对角线作图”,这种方法是由Gibb首先提出的。将两条待比较的序列分别放在矩阵的两个轴上,一条在X轴上,从左到右,一条在Y轴上,从下往上,如图3.2所示。当对应的行与列的序列字符匹配时,则在矩阵对应的位置作出“点”标记。逐个比较所有的字符对,最终形成点矩阵。

    序列比较矩阵标记图

     
    1. 序列比较矩阵标记图

    显然,如果两条序列完全相同,则在点矩阵主对角线的位置都有标记;如果两条序列存在相同的子串,则对于每一个相同的子串对,有一条与对角线平行的由标记点所组成的斜线,如图a中的斜线代表相同的子串“ATCC”;而对于两条互为反向的序列,则在反对角线方向上有标记点组成的斜线,如图b所示。

    相同子串矩阵标记图

     
    1. a:相同子串矩阵标记图

    反向序列矩阵标记图

     
    1. b:反向序列矩阵标记图

    对于矩阵标记图中非重叠的与对角线平行斜线,可以组合起来,形成两条序列的一种比对。在两条子序列的中间可以插入符号“-”,表示插入空位字符。在这种对比之下分析两条序列的相似性,如下图所示。找两条序列的最佳比对(对应位置等同字符最多),实际上就是在矩阵标记图中找非重叠平行斜线最长的组合。

    多个相同连续子序列矩阵标记图

    除非已经知道待比较的序列非常相似,一般先用点矩阵方法比较,因为这种方法可以通过观察矩阵的对角线迅速发现可能的序列比对

    实例一:

    实例二:

    两条序列中有很多匹配的字符对,因而在点矩阵中会形成很多点标记。当对比较长的序列进行比较时,这样的点阵图很快会变得非常复杂和模糊。使用滑动窗口代替一次一个位点的比较是解决这个问题的有效方法。假设窗口大小为10,相似度阈值为8。首先,将X轴序列的第1-10个字符与Y轴序列的第1-10个字符进行比较。如果在第一次比较中,这10个字符中有8个或者8个以上相同,那么就在点阵空间(1,1)的位置画上点标记。然后窗口沿X轴向右移动一个字符的位置,比较X轴序列的第2-11个字符与Y轴序列的第1-10个字符。不断重复这个过程,直到X轴上所有长度为10的子串都与Y轴第1-10个字符组成的子串比较过为止。然后,将Y轴的窗口向上移动一个字符的位置,重复以上过程,直到两条序列中所有长度为10的子串都被两两比较过为止。基于滑动窗口的点矩阵方法可以明显地降低点阵图的噪声,并且可以明确地指出两条序列间具有显著相似性的区域。

    序列比对

    序列的两两比对

    序列的两两比对(Pairwise Sequence Alignment)就是对两条序列进行编辑操作,通过字符匹配和替换,或者插入和删除字符,使得两条序列达到一样的长度,并使两条序列中相同的字符尽可能地一一对应。设两条序列分别是s和t,在s或t中插入空位符号,使s和t达到一样的长度。下图是对序列AGCACACA和ACACACTA的两种比对结果以及对应的字符编辑操作。

    下面就不同类型的编辑操作定义函数w,它表示“代价(cost)”或“权重(weight)”。对字母表A中的任意字符a、b,定义:

    序列权重

    这是一种简单的代价定义,在实际应用中还需使用更复杂的代价模型。一方面,可以改变各编辑操作的代价值,例如,在蛋白质序列比较时,用理化性质相近的氨基酸进行替换的代价应该比完全不同的氨基酸替换代价小;另一方面,也可以使用得分(score)函数来评价编辑操作。下面给出一种基本的得分函数:

    比对算法

    在进行序列比对时,可根据实际情况选用代价函数或得分函数,即选用(3-1)式或(3-2)式。

    下面给出在进行序列比对时常用的概念:

    (1)两条序列s 和 t 的比对的得分(或代价)等于将s 转化为t 所用的所有编辑操作的得分(或代价)总和;

    (2)s 和t 的最优比对是所有可能的比对中得分最高(或代价最小)的一个比对;

    (3)s 和t 的真实距离应该是在得分函数p值(或代价函数w值)最优时的距离。

    使用前面代价函数w的定义,可以得到下列比对的代价:

    s: AGCACAC-A

    t: A-CACACTA

    cost(s,t)= 2

    而使用得分函数p 的定义,可以得到下列比对的得分:

    s: AGCACAC-A

    t: A-CACACTA

    score (s,t)= 5

    进行序列比对的目的是寻找一个得分最高(或代价最小)的比对。

    用于序列相似性的打分矩阵(scoring matrix)

    无论是3-1式还是3-2式,都是简单相似性评价模型,在计算比对的代价或得分时,对字符替换操作只进行统一的处理,没有考虑“同类字符”替换与“非同类字符”替换的差别。实际上,不同类型的字符替换,其代价或得分是不一样的,特别是对于蛋白质序列。某些氨基酸可以很容易地相互取代而不用改变它们的理化性质。例如,考虑这样两条蛋白质序列,其中一条在某一位置上是丙氨酸,如果该位点被替换成另一个较小且疏水的氨基酸,比如缬氨酸,那么对蛋白质功能的影响可能较小;如果被替换成较大且带电的残基,比如赖氨酸,那么对蛋白功能的影响可能就要比前者大。直观地讲,比较保守的替换比起较随机替换更可能维持蛋白质的功能,且更不容易被淘汰。因此,在为比对打分时,我们可能更倾向对丙氨酸与缬氨酸的比对位点多些奖励,而对于丙氨酸与那些大而带电氨基酸(比如赖氨酸)的比对位点则相反。理化性质相近的氨基酸残基之间替换的代价显然应该比理化性质相差甚远的氨基酸残基替换得分高,或者代价小。同样,保守的氨基酸替换得分应该高于非保守的氨基酸替换。这样的打分方法在比对非常相近的序列以及差异极大的序列时,会得出不同的分值。这就是提出打分矩阵(或者称为取代矩阵)的原由。在打分矩阵中,详细地列出各种字符替换的得分,从而使得计算序列之间的相似度更为合理。在比较蛋白质时,我们可以用打分矩阵来增强序列比对的敏感性。打分矩阵是序列比较的基础,选择不同的打分矩阵将得到不同的比较结果,而了解打分矩阵的理论依据将有助于在实际应用中选择合适的打分矩阵。以下介绍一些常用的打分矩阵或代价矩阵。

    1、核酸打分矩阵

    设核酸序列所用的字母表为 A = { A,C,G,T }。

    (1)等价矩阵

    等价矩阵(见表3.1)是最简单的一种打分矩阵,其中,相同核苷酸匹配的得分为“1”,而不同核苷酸的替换得分为“0”(没有得分)。

    (2)BLAST矩阵

    BLAST是目前最流行的核酸序列比较程序,表3.2是其打分矩阵。这也是一个非常简单的矩阵,如果被比的两个核苷酸相同,则得分为“+5”,反之得分为“-4”。

    (3)转换-颠换矩阵

    核酸的碱基按照环结构分为两类,一类是嘌呤(腺嘌呤A,鸟嘌呤G),它们有两个环;另一类是嘧啶(胞嘧啶C,胸腺嘧啶T),它们的碱基只有一个环。如果DNA碱基的变化(碱基替换)保持环数不变,则称为转换(transition),如A->G,C->T;如果环数发生变化,则称为颠换(transversion),如A®C,A®T等。在进化过程中,转换发生的频率远比颠换高,而表3.3所示的矩阵正好反映了这种情况,其中转换的得分为“-1”,而颠换的得分为“-5”。

    核酸打分矩阵

    2、蛋白质打分矩阵

    (1)等价矩阵

    其中,Rij代表打分矩阵元素,i、j分别代表字母表第i个和第j个字符。

    (2)遗传密码矩阵GCM

    GCM矩阵通过计算一个氨基酸残基转变到另一个氨基酸残基所需的密码子变化数目而得到,矩阵元素的值对应于代价。如果变化一个碱基,就可以使一个氨基酸的密码子改变为另一个氨基酸的密码子,则这两个氨基酸的替换代价为1;如果需要2个碱基的改变,则替换代价为2;以此类推(见表3.4)。注意,Met到Tyr的转变是仅有的密码子三个位置都发生变化的转换。在表3.4中,Glx代表Gly、Gln或Glu,而Asx则代表Asn或Asp,X代表任意氨基酸。GCM常用于进化距离的计算,其优点是计算结果可以直接用于绘制进化树,但是它在蛋白质序列比对尤其是相似程度很低的序列比对中很少被使用。

    蛋白打分矩阵

    (3)疏水矩阵

    该矩阵(见表3.5)是根据氨基酸残基替换前后疏水性的变化而得到得分矩阵。若一次氨基酸替换疏水特性不发生太大的变化,则这种替换得分高,否则替换得分低。

    疏水矩阵

    (4)PAM矩阵

    为了得到打分矩阵,更常用的方法是统计自然界中各种氨基酸残基的相互替换率。如果两种特定的氨基酸之间替换发生得比较频繁,那么这一对氨基酸在打分矩阵中的互换得分就比较高。PAM矩阵就是这样一种打分矩阵。PAM矩阵是第一个广泛使用的最优矩阵,它是基于进化原理的,建立在进化的点接受突变模型PAM(Point Accepted Mutation)基础上,通过统计相似序列比对中的各种氨基酸替换发生率而得到该矩阵。Dayhoff和她的同事们研究了71个相关蛋白质家族的1572个突变,发现蛋白质家族中氨基酸的替换并不是随机的,由此,断言一些氨基酸的替换比其他替换更容易发生,其主要原因是这些替换不会对蛋白质的结构和功能产生太大的影响。如果氨基酸的替换是随机的,那么,每一种可能的取代频率仅仅取决于不同氨基酸出现的背景频率。然而,在相关蛋白中,存在取代频率大大地倾向于那些不影响蛋白质功能的取代,换句话说,这些点突变已经被进化所接受。这意味着,在进化历程上,相关的蛋白质在某些位置上可以出现不同的氨基酸。

    一个PAM就是一个进化的变异单位,即1%的氨基酸改变。但是,这并不意味着经过100次PAM后,每个氨基酸都发生变化,因为其中一些位置可能会经过多次改变,甚至可能变回到原先的氨基酸。因此,另外一些氨基酸可能不发生改变。PAM有一系列的替换矩阵,每个矩阵用于比较具有特定进化距离的两条序列。例如,PAM-120矩阵用于比较相距120个PAM单位的序列。一个PAM-N矩阵元素(i,j)的值反映两条相距N个PAM单位的序列中第i种氨基酸替换第j种氨基酸的概率。从理论上讲,PAM-0是一个单位矩阵,主对角线上的元素值为1,其它矩阵元素的值为0。其他PAM-N矩阵可以通过统计计算而得到。首先针对那些确信是相距一个PAM单位的序列进行统计分析,得到PAM-1矩阵。PAM-1矩阵对角线上的元素值接近于1,而其它矩阵元素值接近于0。例如,可以按下述方法构建PAM-1矩阵。首先,构建一个序列间相似度很高(通常大于85%)的比对。接着,计算每个氨基酸j的相对突变率mj。相对突变率就是某种氨基酸被其它任意氨基酸替换的次数。比如,丙氨酸的相对突变率是通过计算丙氨酸与非丙氨酸残基比对的次数来得到。然后,针对每个氨基酸对i和j,计算氨基酸j被氨基酸i替换的次数。最后,将以上替换次数除以对应的相对替换率,利用每个氨基酸出现的频度对其进行标准化,并将以上计算结果取常用对数,于是得到了PAM-1矩阵中的元素PAM-1(i,j)。这种矩阵被称作对数几率矩阵(log odds matrix),因为其中的元素是根据每个氨基酸替换率的对数值来得到的。

     

    将PAM-1自乘N次,可以得到矩阵PAM-N。虽然Dayhoff等人只发表了PAM-250,但潜在的突变数据可以外推至其他PAM值,产生一组矩阵。可以根据待比较序列的长度以及序列间的先验相似程度来选用特定的PAM矩阵,以发现最适合的序列比对。一般,在比较差异极大的序列时,通常在较高的PAM值处得到最佳结果,比如在PAM-200到PAM-250之间,而较低值的PAM矩阵一般用于高度相似的序列。实践中用得最多的且比较折衷的矩阵是PAM-250。

    PAM矩阵

    (5)BLOSUM矩阵

    BLOSUM矩阵是由Henikoff首先提出的另一种氨基酸替换矩阵,它也是通过统计相似蛋白质序列的替换率而得到的。PAM矩阵是从蛋白质序列的全局比对结果推导出来的,而BLOSUM矩阵则是从蛋白质序列块(短序列)比对而推导出来的。但在评估氨基酸替换频率时,应用了不同的策略。基本数据来源于BLOCKS数据库,其中包括了局部多重比对(包含较远的相关序列,与在PAM中使用较近的相关序列相反)。虽然在这种情况下没有用进化模型,但它的优点在于可以通过直接观察而不是通过外推获得数据。同PAM模型一样,也有一系列的BLOSUM矩阵,可以根据亲缘关系的不同来选择不同的BLOSUM矩阵进行序列比较。然而,BLOSUM矩阵阶数的意义与PAM矩阵正好相反。低阶PAM矩阵适合用来比较亲缘较近的序列,而低阶BLOSUM矩阵更多是用来比较亲缘较远的序列。一般来说,BLOSUM-62矩阵适于用来比较大约具有62%相似度的序列,而BLOSUM-80矩阵更适合于相似度为80%左右的序列。

    BLOSUM矩阵

    展开全文
  • 相似性度量外围文档资料

    热门讨论 2017-02-26 10:35:43
    相似性度量外围文档资料,为博客http://blog.csdn.net/wangyaninglm/article/details/43853435的补充
  • 求两个矩阵相似性

    2014-05-25 19:11:49
    求数据的相似性,给定iuc中的数据集求两个样例之间的相似性,有matalab实现的
  • 平均结构相似性[113]MSSIM (Mean Structural SIMilarity)表明图像分割结果与参考图像的平均局部结构相似性,其取值也在0到1之间,取值越大表明分割质量越好,当MSSIM=1时,对应图像分割结果与参考图像完全相同。
  • 针对现有面要素匹配方法中只注重个体相似性度量、对空间关系相似性不够重视等问题,采用顾及邻域相似性的面要素匹配方法,进一步完善传统的基于几何相似性评价的匹配方法,使用相似矩阵法确定匹配关系;考虑要素空间关系...
  • 数据测量与相似性分析

    千次阅读 2018-10-22 16:58:58
    这篇文章中主要记录如何分析样本间相似性的内容,相似性分析在分类算法(如K最邻近分类)和聚类任务中会涉及到。相似性分析基于样本属性取值,因此对于样本属性类型及其取值的特征也有必要说明。 1.数据测量及属性...

           这篇文章中主要记录如何分析样本间相似性的内容,相似性分析在分类算法(如K最邻近分类)和聚类任务中会涉及到。相似性分析基于样本属性取值,因此对于样本属性类型及其取值的特征也有必要说明。

    1.数据测量及属性分类

           测量某个对象得到数据的过程实质上是描述该对象的属性(特征)、并将该属性映射到某个值上,在这些值上一般可以定义如下几种操作:

    • 相异性      = 、\neq
    • 序             <\leq>\geqslant
    • 加减          +-
    • 乘除          \ast\div

           依据测量值能进行的操作类型,可以将属性分为:标称型(nominal)、序数型(ordinal)、区间型(interval)和比率型(ratio),不同类型的定义及区别见下表

     

                             
           从属性取值个数方面,可以将属性分为:属性型(binary attribute)、离散型(discrete)、连续型(continuous)。取值为属性型时,其值只能为两个,如真/假、是/否、男/女、0/1等,这种取值的属性称为二元属性。        标称型、序数型数据的含义比较直观,而对于区间型数据,就以日历日期为例说明,现有两个日期值2017(年)、2018(年),二者之间的差值可以理解为间隔一年,但是二者间乘或除得到的值则毫无意义,这就是区间值的特征。对于比率型数据,以体重为例,100kg的人可以说是50kg的人体重的两倍,这是有现实直观意义的。有的数据类型可能兼具多种操作方法(如体重可以加减,也可以除),可能在属性类型分类上不那么明显,但需要强调的是:属性归类问题不重要,重要的是明确哪些操作是有意义的。

           除了从以上几个方面对属性进行分类与定义外,还可以按属性取值对称与否来分类。非对称的属性其不同取值间权重不一致,例如艾滋病检验的结果可为阳性和阴性,但是显然我们更关注是否为阳性,该值对判断是否患艾滋病更为关键。对称的属性其取值权重就一致了,例如某路段一定时间内通过的车辆数。

    2.样本相似性分析

           样本相似性分析常用于分类、聚类任务中。相似性肯定要依据样本属性取值来分析的,这其中关键就在属性值的处理相似性度量标准上。

         2.1属性值的处理

           2.1.1 二元化

           在一些算法中(如发现关联模式的算法)要求数据的属性为二元属性,二元化处理就是将数据的属性从“多元”转化为“二元”的过程。二元化的过程为:假设属性取值有m个,则将整数区间 \left [0,m-1 \right ]中的每个值唯一的赋予该属性的每个取值,如果该属性的取值是有序的,则赋值的过程也必须按顺序赋值,然后将这m个值用二进制表示,共需要 \left \lceil log_{2}m \right \rceil(结果向上取整)个二进制位。

          二元化的过程是用多个二元属性来表示一个多元属性,例如一个具有5个取值的属性{awful,poor,ok,good,great}可以用3个二元属性x_{1}x_{2}x_{3}表示

                                                                 

            以上的二元化过程可能会导致属性间关系复杂化,例如上表中属性x_{2}x_{3}是相关的,因为“good”值需要这两个属性来表示。这种情况下可以为每一个取值引入一个二元属性,比如下表中的方式

                                               

           当一个属性取值数量较多时(这里暂指离散取值的情况),这种做法会引入过多的属性值,此时可以在二元化之前先离散化属性的取值。

          2.1.2 离散化

          离散化一般针对取值为连续的情况,但是当取值为离散序数、取值间隔小且多时也可以考虑离散化。离散化的过程需要考虑两个问题:分类值个数设定、如何将属性连续取值映射到这些分类值上。离散化过程可以分为非监督离散化监督离散化,区别就在于是否使用数据的类信息(分类、聚类任务中)。

          非监督离散化主要有等宽等频率K均值方法,有时候画图之后目测也是一种不错的方法。等宽离散化是将属性的值域等宽得划分成有限的区间,区间个数由用户指定,这种方法可能受离群点(远离一般取值范围的数据点,也可以称为奇异点)影响而导致性能不佳;等频离散化在指定划分区间个数时,保证每个区间内数据点个数相同;K均值离散化则是使用了K均值聚类方法的思想来划分区间。下图是用以上几种方法对一组数据进行离散化的结果,区间划分个数均为4。

                       

           监督离散化方法一般要比非监督离散化方法产生的效果要好,因为使用了类信息,因此能使区间内数据的类更纯,所以一种简单的概念上的方法是“极大化区间内数据类别纯度”来确定分割点,在该类方法中,首先要确定一个类别纯度的度量指标,然后确定最优区间划分过程搜索方案。

          2.1.3 变换与规范化

          变换是将属性值域映射到另外一个值域上的过程,例如常见的函数变换 x^{2}log_{2}x 等,在统计学中,也通常会通过变换(中心极限定理)构造服从正态分布的统计量。变换的需求与方式与具体的任务紧密相关,例如数据压缩时会采用对数变换,将数据量从10^{9}压缩为9。变换时尤其要注意,不能改变数据的特性,所以说一定要依据具体的任务来确定变换方式。例如在非线性SVM模型中,就用到了这种方式,将输入空间通过非线性映射到特征空间。

          规范化也可以看做一种变换方式,其目标是使属性的取值具有特定的性质,主要包括以下几种方法

          标准化:标准化的过程是将样本均值变为0,标准差变为1。设变量x的均值为\bar{x},标准差为s_{x},则可以创建一个新的变量{x}'

                                                                                           {x}'=(x-\bar{x})/s_{x}

          归一化:将数据取值范围处理到[0,1]范围内(有的场合下也会处理到[-1,1]范围),方便不同取值范围属性间比较。一般的处理方式为

                                                                                          {x}'=\frac{x-x_{min}}{x_{max}-x_{min}}

           如果取值范围为[0,\infty],则可以考虑以下形式

                                                                                            {x}'=\frac{x}{1+x}

           具体的规范化方法需要结合实际的应用来,在考虑任务需求及数据特性情况下选择可行的方法。

    2.2 相似性度量标准

          与相似性相反的概念称为相异形,二者描述的是同一种关系,通常会用邻近度来描述相似或相异性。先介绍几种度量标准,然后从简单的单属性数据间相似性分析着手,一点一点将情况复杂化。

          2.2.1 邻近度度量标准
         

          欧氏距离

          欧氏距离是一种比较常见的度量标准,对于包含有n个属性值的数据 x 和 y,其欧氏距离d(x,y)定义为

                                                                                    d(x,y)=\sqrt{\sum_{i=1}^{n}(x_{i}-y_{i})^2}

          欧氏距离有如下几个性质是成立的

    • 非负性,d(x,y)\geq 0
    • 对称性,d(x,y)=d(y,x)
    • 三角不等式,对于数据 x 、yz,有d(x,y)+d(y,z)\geq d(x,z)

           在使用欧氏距离时,要考虑不同属性间取值范围差异的问题,例如年龄与收入,在计算欧氏距离前先要将所有属性取值进行规范化。

           曼哈顿距离

           曼哈顿距离在几何学中指坐标系中两个点各向坐标差值绝对值的和,如下图所示,在二维空间中,红线即表示曼哈顿距离,绿线表示欧氏距离。

                                                                                 

           对于具有n个属性的数据 x 和 y,曼哈顿距离指其各个属性值差值的绝对值的和,定义为

                                                                                      d(x,y)=\sum_{i=1}^{n}|(x_{i}-y_{i})|

           余弦相似度

           当属性为多元属性时,也有一些情况下不考虑f_{00}的情况,此时可以使用余弦相似度,设数据 x 和 y均具有n个多元属性,则余弦相似度定义为

                                                                                   cos(x,y)=\frac{\sum_{i=1}^{n}x_{i}y_{i}}{\left \| x \right \| \left \| y \right \|}

          \left \| x \right \|=\sqrt{\sum_{i=1}^{n}x_{i}^{2}}\left \| y \right \|=\sqrt{\sum_{i=1}^{n}y_{i}^{2}}

          从几何角度看,余弦相似度就是两个向量间的夹角。

           简单匹配系数

           该度量标准常用于具有二元属性数据间的相似性度量。设数据 x 和 y均具有n个二元属性,用f_{00}表示x取0且y取0的属性个数,用f_{01}表示x取0且y取1的属性个数,用f_{10}表示x取1且y取0的属性个数,用f_{11}表示x取1且y取1的属性个数,则简单匹配系数SMC定义为

                                                                                 SMC=\frac{f_{00}+f_{11}}{f_{00}+f_{01}+f_{10}+f_{11}}

            对于非对称的二元属性来说,更关注的是取1的情况,因此有些情况下将f_{00}纳入计算是不合理的情况,例如两个学生选课问题,1表示选修了某门课程,0表示未选修,而一个学生只需要选修一定数量的课程,还有大部分课程是不需要选修的,因此f_{00}的情况会比较多,这种情况下考虑f_{00}就不太合理。

           Jaccord系数

           Jaccard系数是简单匹配系数中不考虑f_{00}的情况,其定义为

                                                                                          J=\frac{f_{11}}{f_{01}+f_{10}+f_{11}}     

          皮尔森相关系数

          皮尔森相关系数可以用于具有连续取值属性对象间的相似性度量,该参数在统计学中一般简称为相关系数,设数据 x 和 y均具有n个连续取值属性,则相关系数定义为

                                                                                         corr(x,y)=\frac{s_{xy}}{s_{x}s_{y} }

          s_{xy}=\frac{1}{n-1}\sum_{i=1}^{n}(x_{i}-\bar{x})(y_{i}-\bar{y})

          s_{x}=\sqrt{\frac{1}{n-1}\sum_{i=1}^{n}(x_{i}-\bar{x})^{2}}

          s_{y}=\sqrt{\frac{1}{n-1}\sum_{i=1}^{n}(y_{i}-\bar{y})^{2}}

          \bar{x}=\frac{1}{n}\sum_{i=1}^{n}x_{i}

          \bar{y}=\frac{1}{n}\sum_{i=1}^{n}y_{i}

          皮尔森相关系数的取值范围为[-1,1],0表示不相关,1表示正相关,-1表示负相关,该系数上的加、减、乘、除操作均无意义,只有序数操作是有意义的。在讨论相似性的条件下,负相关表示的“不相似”程度可能比不相关更严重,当然这个还得在实际的任务中去判断。

          2.2.2 单属性数据相似性分析

          当属性为标称类型时,如路人甲头发颜色为黑色,路人乙头发颜色为黄色,仅依据头发颜色分析二人之间相似性,给出的结论只能是不相似,假如用区间[0,1]之间的值来表示相似程度,0表示不相似,1表示相似,则这种情况相似度为0,但若路人甲与路人乙头发颜色相同,则相似度为1。因此,在属性为标称类型情况下,相似度只能取0和1中的一种。

          当属性为序数类型时,则需考虑序数信息,例如2.1.1节中的例子,属性的取值为{awful,poor,ok,good,great},一个明显的结论是,相对于"ok","great"更接近"good",但是在分析相似性时一般需要将其量化,这里可以量化为 {awful=0,poor=1,ok=2,good=3,great-4}。依据第1节中对序数类型属性的描述,可知其减法操作是没有意义的,又或者说“ok”与"good"间的差真的与“good”与"great"间的差相同吗?但是在实践中一般手段有限,因此对于这种情况,可以将两个序数间的相似性定义为

                                                                          sim(v_{1},v_{2})=\frac{\left |v_{1}-v_{2} \right |}{v_{max}-v_{min}}

           当属性为区间和比率类型时,一般用差值的绝对值来度量相似性。特别的,对于区间型属性,若是取值区间有限,则也可以使用

                                                                         sim(v_{1},v_{2})=\frac{\left |v_{1}-v_{2} \right |}{v_{max}-v_{min}}

    的相似性定义形式。

            2.2.3 多属性数据相似性分析

            多属性的情况,一般的做法是将每个属性取值按照以上介绍的方法处理之后,再选择一个度量标准分析相似性,在一些场合下也对不同的属性进行加权处理,但是也存在一些特殊情况,例如部分属性为非对称属性。

             对于部分属性为非对称属性的情况,则可以按照以下公式计算

                                                                    similarity(x,y)=\frac{\sum_{i=1}^{k}\delta_{k}s_{k}(x,y) }{\sum_{i=1}^{k}\delta_{k}}

             上式中k表示数据xy的属性个数,s_{k}(x,y)表示在第k个属性上计算的xy相似度(按照2.2.2节中方式计算),\delta _{k}定义为:当第k个属性为非对称属性,且xy在该属性上取值均为0,或者其中一个属性值缺失,则\delta _{k}=0,否则为1。

          

          

           

            

     

     

     

    展开全文
  • 为解决因数据过量重复而带来的信息网络运行过慢问题,设计基于比对矩阵模型的信息相似性检测系统,进行相似检测相关关键技术与模型算法研究。在总体功能架构中,规范化连接相似性信息捕获模块与检测分发模块,实现...
  • 在时间序列数据挖掘中, 时间序列相似性是一个重要的概念. 对于诸多算法而言, 能否与一种合适的相似性度量方法结合应用, 对其挖掘性能有着关键影响. 然而, 至今仍没有统一的度量相似性的方法. 对此, 首先综述了常用的...
  • 常用相似性(距离)度量方法概述

    千次阅读 2020-08-12 11:00:45
    在数据分析和数据挖掘的过程中,我们经常需要知道个体间差异的大小,进而评价个体的相似性和类别。 最常见的是数据分析中的相关性分析,数据挖掘中的分类和聚类算法,如K最近邻(KNN)和K均值(K-Means)、图计算...

    1 使用背景

    在数据分析和数据挖掘的过程中,我们经常需要知道个体间差异的大小,进而评价个体的相似性和类别。

    最常见的是数据分析中的相关性分析,数据挖掘中的分类和聚类算法,如K最近邻(KNN)和K均值(K-Means)、图计算等等。

    在做很多研究问题

    2 距离度量

    距离度量(Distance)用于衡量个体在空间上存在的距离,距离越远说明个体间的差异越大。

    2.1. 曼哈顿距离(Manhattan Distance)

       在曼哈顿要从一个十字路口开车到另外一个十字路口,实际驾驶距离就是这个“曼哈顿距离”。而这也是曼哈顿距离名称的来源, 曼哈顿距离也称为城市街区距离(City Block distance)。
    

    (1)二维平面两点a(x1,y1)与b(x2,y2)间的曼哈顿距离
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210624174216544.png
    (2)两个n维向量a(x11,x12,…,x1n)与 b(x21,x22,…,x2n)间的曼哈顿距离在这里插入图片描述
    2.2. 欧氏距离(Euclidean Distance)

       欧氏距离是最易于理解的一种距离计算方法,源自欧氏空间中两点间的距离公式,衡量的是多维空间中各个点之间的绝对距离。
    

    (1)二维平面上两点a(x1,y1)与b(x2,y2)间的欧氏距离:
    在这里插入图片描述
    (2)三维空间两点a(x1,y1,z1)与b(x2,y2,z2)间的欧氏距离:
    在这里插入图片描述
    (3)两个n维向量a(x11,x12,…,x1n)与 b(x21,x22,…,x2n)间的欧氏距离:
    在这里插入图片描述
      也可以用表示成向量运算的形式:
      在这里插入图片描述
    因为计算是基于各维度特征的绝对数值,所以欧氏度量需要保证各维度指标在相同的刻度级别,比如对身高(cm)和体重(kg)两个单位不同的指标使用欧式距离可能使结果失效。

    2.3. 切比雪夫距离 ( Chebyshev Distance )

       国际象棋中国王走一步能够移动到相邻的8个方格中的任意一个,那么国王从格子(x1,y1)走到格子(x2,y2)最少需要多少步?自己走走试试。 你会发现最少步数总是max( | x2-x1 | , | y2-y1 | ) 步 。
    
      有一种类似的一种距离度量方法叫切比雪夫距离。
    

    (1)二维平面两点a(x1,y1)与b(x2,y2)间的切比雪夫距离
    在这里插入图片描述
    (2)两个n维向量a(x11,x12,…,x1n)与 b(x21,x22,…,x2n)间的切比雪夫距离
    在这里插入图片描述
      这个公式的另一种等价形式是
      在这里插入图片描述
    扩展到多维空间,其实切比雪夫距离就是当p趋向于无穷大时的闵氏距离

    2.4. 闵可夫斯基距离(Minkowski Distance)

    闵氏距离不是一种距离,而是一组距离的定义

    也是欧氏距离的推广,是对多个距离度量公式的概括性的表述。

    (1) 闵氏距离的定义

       两个n维变量a(x11,x12,…,x1n)与 b(x21,x22,…,x2n)间的闵可夫斯基距离定义为:
    

    在这里插入图片描述
    其中p是一个变参数。

    当p=1时,就是曼哈顿距离

    当p=2时,就是欧氏距离

    当p→∞时,就是切比雪夫距离

       根据变参数的不同,闵氏距离可以表示一类的距离。
    

    (2) 闵氏距离的缺点

    闵氏距离,包括曼哈顿距离、欧氏距离和切比雪夫距离都存在明显的缺点。

    举个例子:二维样本(身高,体重),其中身高范围是150190,体重范围是5060,有三个样 本:a(180,50),b(190,50),c(180,60)。那么a与b之间的闵氏距离(无论是曼哈顿距离、欧氏距离或切比雪夫距离)等于a与c之 间的闵氏距离,但是身高的10cm真的等价于体重的10kg么?因此用闵氏距离来衡量这些样本间的相似度很有问题。

       简单说来,闵氏距离的缺点主要有两个:(1)将各个分量的量纲(scale),也就是“单位”当作相同的看待了。(2)没有考虑各个分量的分布(期望,方差等)可能是不同的。所以使用前需要考虑是否进行标准化 (非归一化)
    

    2.5. 标准化欧氏距离 (Standardized Euclidean distance )

    标准化欧氏距离的定义

    标准化欧氏距离是针对简单欧氏距离的缺点而作的一种改进方案。标准欧氏距离的思路:既然数据各维分量的分布不一样,好吧!那我先将各个分量都“标准 化”到均值、方差相等吧。均值和方差标准化到多少呢?假设样本集X的均值(mean)为m,标准差(standard deviation)为s,标准化变量的数学期望为0,方差为1。那么X的标准化过程(standardization)用公式描述就是:
      在这里插入图片描述
      标准化后的值 = ( 标准化前的值 - 分量的均值 ) / 分量的标准差

    经过简单的推导就可以得到两个n维向量a(x11,x12,…,x1n)与 b(x21,x22,…,x2n)间的标准化欧氏距离的公式:
     在这里插入图片描述
      如果将方差的倒数看成是一个权重,这个公式可以看成是一种加权欧氏距离(Weighted Euclidean distance)。

    2.6. 马氏距离(Mahalanobis Distance)

    既然欧几里得距离无法忽略指标度量的差异,所以在使用欧氏距离之前需要对底层指标进行数据的标准化,而基于各指标维度进行标准化后再使用欧氏距离就衍生出来另外一个距离度量——马哈拉诺比斯距离(Mahalanobis Distance),简称马氏距离。与标准化欧氏距离不同的是它认为各个维度之间不是独立分布的,所以马氏距离考虑到各种特性之间的联系。。

    (1)马氏距离定义
    有M个样本向量X1~Xm,协方差矩阵记为S,均值记为向量μ,则其中样本向量X到u的马氏距离表示为:
    在这里插入图片描述
    而其中向量Xi与Xj之间的马氏距离定义为:在这里插入图片描述
    (2) 若协方差矩阵是单位矩阵(各个样本向量之间独立同分布,各个维度上的方差均为1),则公式就成了:
    在这里插入图片描述
     也就是欧氏距离了
     若协方差矩阵是对角矩阵(各个维度上的方差不一定为1),公式变成了标准化欧氏距离。即先对各维度上的距离标准化(除以方差)再计算欧氏距离

    (3) 马氏距离的优缺点:

    优点:马氏距离不受量纲的影响,两点之间的马氏距离与原始数据的测量单位无关;由标准化数据和中心化数据(即原始数据与均值之差)计算出的两点之间的马氏距离相同。马氏距离还可以排除变量之间的相关性的干扰。缺点:马氏距离的缺点夸大了变化微小的变量的作用。

    (4) 注意事项

    马氏距离的计算是建立在总体样本的基础上的,这一点可以从上述协方差矩阵的解释中得出,也就是说,如果拿同样的两个样本,放入两个不同的总体中,最后计算得出的两个样本间的马氏距离通常是不相同的,除非这两个总体的协方差矩阵碰巧相同;

    在计算马氏距离过程中,要求总体样本数大于样本的维数;否则得到的总体样本协方差矩阵逆矩阵不存在,在此情况下,用欧式距离计算即可;Σ= D1 * D1’ (D1为m*n矩阵,m>n, m为特征维数,n为样本数) rank(Σ)<=n 故 Σ 不可逆。

    还有一种情况,满足了条件总体样本数大于样本的维数,但是协方差矩阵的逆矩阵仍然不存在,比如三个样本点(3,4)、(5, 6)和(7,8),这种情况是因为这三个样本在其所处的二维空间平面内共线。这种情况下,也采用欧式距离计算。比如:均值向量为[5, 6], D1=[-2 0 2;-2 0 2], Σ显然不可逆

    在实际应用中“总体样本数大于样本的维数”这个条件是很容易满足的,而所有样本点出现3)中所描述的情况是很少出现的,所以在绝大多数情况下,马氏距离是能够顺利计算的,但是马氏距离的计算是不稳定的,不稳定的来源是协方差矩阵,这也是马氏距离与欧式距离的最大差异之处。

    最典型的就是根据距离作判别问题,即假设有n个总体,计算某个样品X归属于哪一类的问题。此时虽然样品X离某个总体的欧氏距离最近,但是未必归属它,比如该总体的方差很小,说明需要非常近才能归为该类。对于这种情况,马氏距离比欧氏距离更适合作判别。

    2.7. 海林格距离 ( Hellinger Distance ) 和 巴氏距离(Bhattacharyya Distance)

    (1) 海林格距离的定义

    在概率论和统计理论中,Hellinger距离被用来度量两个概率分布的相似度。它是f散度的一种(f散度——度量两个概率分布相似度的指标)。Hellinger距离被定义成Hellinger积分的形式,这种形式由Ernst Hellinger在1909年引进。

    对于两个离散概率分布 P=(p1,p2,…,pn)和 Q=(q1,q2,…,qn),它们的Hellinger距离可以定义如下:
    在这里插入图片描述

    上式可以被看作两个离散概率分布平方根向量的欧式距离,如下所示:
    在这里插入图片描述
    或者
    在这里插入图片描述

    注意:

    上公中系数2的平方根之一经常被省略,此时海林格距离的范围是0 ~ 2的平方根

    海林格距离和巴氏系数BC(P, Q)的关系:

    (2) 巴氏距离的定义

    在统计中,Bhattacharyya距离测量两个离散或连续概率分布的相似性。它与衡量两个统计样品或种群之间的重叠量的Bhattacharyya系数密切相关。Bhattacharyya距离和Bhattacharyya系数以20世纪30年代曾在印度统计研究所工作的一个统计学家A. Bhattacharya命名。同时,Bhattacharyya系数可以被用来确定两个样本被认为相对接近的,它是用来测量中的类分类的可分离性。

    在同一定义域X中,概率分布p和q的巴氏距离定义如下:其中(2)离散概率分布和(3)连续概率分布
    在这里插入图片描述

    BC是巴氏系数(Bhattacharyya coefficient,因此,求得巴氏系数之后,就可以求得巴氏距离和Hellinger距离。

    2.8. 汉明距离(Hamming distance)

    (1) 汉明距离的定义

      两个等长字符串s1与s2之间的汉明距离定义为将其中一个变为另外一个所需要作的最小替换次数。例如字符串“1111”与“1001”之间的汉明距离为2。
    
       应用:信息编码(为了增强容错性,应使得编码间的最小汉明距离尽可能大)、SimHash最后的计算结果
    

    (2) 汉明重量: 它是一种特殊的汉明距离。指一个字符串与一个等长的“零”字符串 的汉明距离,即一个字符串中非零的字符个数
    在这里插入图片描述
    在这里插入图片描述

    2.9. 编辑距离(Edit Distance/ Levenshtein Distance)

    编辑距离/ 莱文斯坦距离的定义

      在信息论、语言学和计算机科学领域,Levenshtein Distance 是用来度量两个序列相似程度的指标。通俗地来讲,编辑距离指的是在两个单词之间,由其中一个单词w1
    

    转换为另一个单词w2所需要的最少单字符编辑操作次数,操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。一般来说,编辑距离越小,两个串的相似度越大。俄罗斯科学家Vladimir Levenshtein在1965年提出这个概念。编辑距离越小的两个字符串越相似,当编辑距离为0时,两字符串相等。

    例如将kitten一字转成sitting,编辑距离是3:

    sitten (k→s)

    sittin (e→i)

    sitting (→g)

    3. 相似度度量

    相似度度量(Similarity),即计算个体间的相似程度,与距离度量相反,相似度度量的值越小,说明个体间相似度越小,差异越大。

    3.1. 余弦相似度/ 夹角余弦(Cosine Similarity)

      几何中夹角余弦可用来衡量两个向量方向的差异,机器学习中借用这一概念来衡量样本向量之间的差异。
    

    假设两用户同时对两件商品评分,向量分别为(3,3)和(5,5),这两位用户对两件商品的喜好其实是一样的,余弦距离此时为1,欧式距离给出的解显然没有余弦值直观。

    (1)在二维空间中向量A(x1,y1)与向量B(x2,y2)的夹角余弦公式:
    在这里插入图片描述

    (2) 两个n维样本点a(x11,x12,…,x1n)和b(x21,x22,…,x2n)的夹角余弦

       类似的,对于两个n维样本点a(x11,x12,…,x1n)和b(x21,x22,…,x2n),可以使用类似于夹角余弦的概念来衡量它们间的相似程度。
    

    在这里插入图片描述
    即:
    在这里插入图片描述

       夹角余弦取值范围为[-1,1]。夹角余弦越大表示两个向量的夹角越小,夹角余弦越小表示两向量的夹角越大。当两个向量的方向重合时夹角余弦取最大值1,当两个向量的方向完全相反夹角余弦取最小值-1。
    

    (3) 借助三维坐标系来看下欧氏距离和余弦相似度的区别:
    在这里插入图片描述

    根据欧氏距离和余弦相似度各自的计算方式和衡量特征,分别适用于不同的数据分析模型:欧氏距离能够体现个体数值特征的绝对差异,所以更多的用于需要从维度的数值大小中体现差异的分析,如使用用户行为指标分析用户价值的相似度或差异;而余弦相似度更多的是从方向上区分差异,而对绝对的数值不敏感,更多的用于使用用户对内容评分来区分用户兴趣的相似度和差异,同时修正了用户间可能存在的度量标准不统一的问题(因为余弦相似度对绝对数值不敏感)。

    (4) 优点和缺点

    优点:余弦距离根据向量方向来判断向量相似度,与向量各个维度的相对大小有关,不受各个维度直接数值影响。某种程度上,归一化后的欧氏距离和余弦相似性表征能力相同。

    缺点:对数值大小不够敏感

    (5) 适用范围

    计算结果对用户数据绝对值不敏感,例如在描述用户的兴趣、喜好、或用于情感分析时。

    用户数据中的评分值其实是用户主观的评分结果,换言之,每个用户的评价标准是不一致的,有一些对于“好的”界定标准更为苛刻,而另一些则对于“好”、“不好”的界定则更为宽容。这种情况下,用余弦相似度来计算用户之间的相似度或差异,可以弱化度量标准不统一这一因素。

    3.2. 杰卡德相似系数(Jaccard similarity coefficient)

    (1) 杰卡德相似系数

       两个集合A和B的交集元素在A,B的并集中所占的比例,称为两个集合的杰卡德相似系数,用符号J(A,B)表示。
    

    在这里插入图片描述
    杰卡德相似系数是衡量两个集合的相似度一种指标。

    (2) 杰卡德距离

       与杰卡德相似系数相反的概念是杰卡德距离(Jaccard distance)。杰卡德距离可用如下公式表示:
    

    在这里插入图片描述
    杰卡德距离用两个集合中不同元素占所有元素的比例来衡量两个集合的区分度。

    (3) 杰卡德相似系数与杰卡德距离的应用

       可将杰卡德相似系数用在衡量样本的相似度上。
    

    样本A与样本B是两个n维向量,而且所有维度的取值都是0或1。例如:A(0111)和B(1011)。我们将样本看成是一个集合,1表示集合包含该元素,0表示集合不包含该元素。

    p :样本A与B都是1的维度的个数

    q :样本A是1,样本B是0的维度的个数

    r :样本A是0,样本B是1的维度的个数

    s :样本A与B都是0的维度的个数

    那么样本A与B的杰卡德相似系数可以表示为:

    这里p+q+r可理解为A与B的并集的元素个数,而p是A与B的交集的元素个数。

    而样本A与B的杰卡德距离表示为:
    在这里插入图片描述

    3.3. Tanimoto 系数(Tanimoto Coefficient)/ (广义Jaccard相似系数)

    在这里插入图片描述

    原理:又名广义Jaccard系数,是对Jaccard系数的扩展,元素的取值可以是实数。又叫作谷本系数

    范围:[0,1],完全重叠时为1,无重叠项时为0,越接近1说明越相似。

    说明:处理无打分的偏好数据,也多用于计算文档数据的相似度。分母是大于等于 cos similarity的分母,但仅A,B长度一样时才相等。这就意味着,Tonimoto系数考虑了两个向量的长度差异,长度差异越大相似性越小。

    关系:如果我们的x,y都是二值向量,那么Tanimoto系数就等同Jaccard距离。

    应用场景:比较文本相似度,用于文本查重与去重;计算对象间距离,用于数据聚类等。

    3.4. 相关系数 ( Correlation coefficient )或皮尔逊相关系数(Pearson Correlation Coefficient ) 与相关距离(Correlation distance)

    (1) 相关系数的定义
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    (其中,E为数学期望或均值,D为方差,D开根号为标准差,E{ [X-E(X)] [Y-E(Y)]}称为随机变量X与Y的协方差,记为Cov(X,Y),即Cov(X,Y) = E{ [X-E(X)] [Y-E(Y)]},而两个变量之间的协方差和标准差的商则称为随机变量X与Y的相关系数,记为)

    相关系数是衡量随机变量X与Y相关程度的一种方法,相关系数的取值范围是[-1,1]。相关系数的绝对值越大,则表明X与Y相关度越高。当X与Y线性相关时,相关系数取值为1(正线性相关)或-1(负线性相关)。

    具体的,如果有两个变量:X、Y,最终计算出的相关系数的含义可以有如下理解:

    当相关系数为0时,X和Y两变量无关系。

    当X的值增大(减小),Y值增大(减小),两个变量为正相关,相关系数在0.00与1.00之间。

    当X的值增大(减小),Y值减小(增大),两个变量为负相关,相关系数在-1.00与0.00之间。

    说明:

    不考虑重叠的数量;

    如果只有一项重叠,无法计算相似性(计算过程被除数有n-1);

    如果重叠的值都相等,也无法计算相似性(标准差为0,做除数)。

    该相似度并不是最好的选择,也不是最坏的选择,只是因为其容易理解,在早期研究中经常被提起。使用Pearson线性相关系数必须假设数据是成对地从正态分布中取得的,并且数据至少在逻辑范畴内必须是等间距的数据。

    皮尔逊相关系数是余弦相似度在维度值缺失情况下的一种改进

    余弦相似度的问题是: 其计算严格要求"两个向量必须所有维度上都有数值", 比如:v1 = (1, 2, 4),v2=(3, -1, null),那么这两个向量由于v2中第三个维度有null, 无法进行计算.

    然而, 实际我们做数据挖掘的过程中, 向量在某个维度的值常常是缺失的, 比如v2=(3, -1, null), v2数据采集或者保存中缺少一个维度的信息, 只有两个维度. 那么, 我们一个很朴素的想法就是, 我们在这个地方填充一个值, 不就满足了"两个向量必须所有维度上都有数值"的严格要求了吗? 填充值的时候, 我们一般这个向量已有数据的平均值, 所以v2填充后变成v2=(3, -1, 1), 接下来我们就可以计算cos<v1, v2>了.

    而皮尔逊相关系数的思路是, 我把这些null的维度都填上0, 然后让所有其他维度减去这个向量各维度的平均值, 这样的操作叫作中心化. 中心化之后所有维度的平均值就是0了, 也满足进行余弦计算的要求,然后再进行我们的余弦计算得到结果. 这样先中心化再余弦计得到的相关系数叫作皮尔逊相关系数.

    通常情况下通过以下取值范围判断变量的相关强度:

    相关系数

    相关程度

    0.8-1.0

    极强相关

    0.6-0.8

    强相关

    0.4-0.6

    中等程度相关

    0.2-0.4

    弱相关

    0.0-0.2

    极弱相关或无相关

    (2) 相关距离的定义
    在这里插入图片描述

    3.5. 调整余弦相似度(Adjusted Cosine Similarity)

    在这里插入图片描述

    在余弦相似度的介绍中说到:余弦相似度更多的是从方向上区分差异,而对绝对的数值不敏感。因此没法衡量每个维数值的差异,会导致这样一个情况:比如用户对内容评分,5分制,X和Y两个用户对两个内容的评分分别为(1,2)和(4,5),使用余弦相似度得出的结果是0.98,两者极为相似,但从评分上看X似乎不喜欢这两个内容,而Y比较喜欢,余弦相似度对数值的不敏感导致了结果的误差,需要修正这种不合理性,就出现了调整余弦相似度,即所有维度上的数值都减去一个均值,比如X和Y的评分均值都是3,那么调整后为(-2,-1)和(1,2),再用余弦相似度计算,得到-0.8,相似度为负值并且差异不小,但显然更加符合现实。

    计算方法和皮尔逊方法类似,只是去中心化的方式不一样:

    皮尔森区中心化的方式,减去的均值是 item的均值。

    修正的余弦,减去的是这个user 的评分均值。

    3.6. 信息熵(Information Entropy) 和条件熵(Conditional entropy)

    (1) 信息熵是衡量分布的混乱程度或分散程度的一种度量。分布越分散(或者说分布越平均),信息熵就越大。分布越有序(或者说分布越集中),信息熵就越小。

       计算给定的样本集X的信息熵的公式:
    

    在这里插入图片描述
    参数的含义:

    n:样本集X的分类数

    pi:X中第i类元素出现的概率

       信息熵越大表明样本集S分类越分散,信息熵越小则表明样本集X分类越集中。。当S中n个分类出现的概率一样大时(都是1/n),信息熵取最大值log2(n)。当X只有一个分类时,信息熵取最小值0
    

    (2) 条件熵 𝐻(𝑌|𝑋)H(Y|X) 表示在已知随机变量 𝑋的条件下随机变量 𝑌 的不确定性。条件熵 𝐻(𝑌|𝑋)H(Y|X) 定义为 𝑋 给定条件下 𝑌 的条件概率分布的熵对 𝑋 的数学期望:在这里插入图片描述

    条件熵 𝐻(𝑌|𝑋)H(Y|X) 相当于联合熵 𝐻(𝑋,𝑌)H(X,Y) 减去单独的熵 𝐻(𝑋)H(X),即

    𝐻(𝑌|𝑋)=𝐻(𝑋,𝑌)−𝐻(𝑋)H(Y|X)=H(X,Y)−H(X) ,证明如下:
    在这里插入图片描述

    3.7. 相对熵(relative entropy)/KL散度Kullback-Leibler divergence和交叉熵 (Kullback-Leibler divergence)

    (1) 相对熵/KL散度:又叫交叉熵,用来衡量两个取值为正数的函数(概率分布)的相似性,当两个随机分布相同时,它们的相对熵为零,当两个随机分布的差别增大时,它们的相对熵也会增大。所以相对熵可以用于比较两个分布的相似度。

    设 p(x)、q(x) 是 离散随机变量 𝑋中取值的两个概率分布,则 p 对 q的相对熵是:在这里插入图片描述

    性质:

    1、如果 𝑝(𝑥)p(x) 和 𝑞(𝑥)q(x) 两个分布相同,那么相对熵等于0

    2、𝐷𝐾𝐿(𝑝||𝑞)≠𝐷𝐾𝐿(𝑞||𝑝)DKL(p||q)≠DKL(q||p) ,相对熵具有不对称性。大家可以举个简单例子算一下。

    3、𝐷𝐾𝐿(𝑝||𝑞)≥0DKL(p||q)≥0

    总结:相对熵可以用来衡量两个概率分布之间的差异,上面公式的意义就是求 p 与 q 之间的对数差在 p 上的期望值。

    (2) 交叉熵
    在这里插入图片描述

    https://www.cnblogs.com/kyrieng/p/8694705.html

    (3) 总结

    信息熵是衡量随机变量分布的混乱程度,是随机分布各事件发生的信息量的期望值,随机变量的取值个数越多,状态数也就越多,信息熵就越大,混乱程度就越大。当随机分布为均匀分布时,熵最大;信息熵推广到多维领域,则可得到联合信息熵;条件熵表示的是在 𝑋X 给定条件下,𝑌Y 的条件概率分布的熵对 𝑋X的期望。

    相对熵可以用来衡量两个概率分布之间的差异。

    交叉熵可以来衡量在给定的真实分布下,使用非真实分布所指定的策略消除系统的不确定性所需要付出的努力的大小。

    信息熵是传输一个随机变量状态值所需的比特位下界(最短平均编码长度)。

    相对熵是指用 q 来表示分布 p 额外需要的编码长度。

    交叉熵是指用分布 q 来表示本来表示分布 p 的平均编码长度。

    3.8. 对数似然相似度 (LogLikelihoodSimilarity)

    反映的是用户之间喜欢物品的相关性,处理无打分的偏好数据,比Tanimoto系数的计算方法更为直观

    假设有商品全集I={a,b,c,d,e,f},其中A用户偏好商品{a,b,c},B用户偏好商品{b,d},那么有如下矩阵:在这里插入图片描述

    k11k11表示用户A和用户B的共同偏好的商品数量,显然只有商品b,因此值为1

    k12k12表示用户A的特有偏好,即商品{a,c},因此值为2

    k21k21表示用户B的特有偏好,即商品d,因此值为1

    k22k22表示用户A、B的共同非偏好,有商品{e,f},值为2

    行熵: rowEntropy = entropy(k11, k12) + entropy(k21, k22)列熵: columnEntropy = entropy(k11, k21) + entropy(k12, k22)矩阵熵: matrixEntropy = entropy(k11, k12, k21, k22)

    用户间相似度: 2 * (matrixEntropy - rowEntropy - columnEntropy)

    3.9. 互信息/ 信息增益 (Mutual Information)

    互信息/信息增益:信息论中两个随机变量的相关性程度 在这里插入图片描述

    3.10. 词对相似度 - 点间相似度PMI (Pointwise Mutual Information)

    PMI(Pointwise Mutual Information),不是指经济上的那个PMI,而是点互信息,作用是衡量两个随机变量的相关性。可以用于情感分析中的情感分数计算,计算公式如下:在这里插入图片描述

    基本思想是统计两个词语在文本中同时出现的概率,概率越大,其相关性就越紧密,关联度越高。

    3.11. 信息检索 - 词频-逆文档频率(TF-IDF)

    在网页查询(Query)中相关性以词频(TF)与逆文档频率(IDF)来度量查询词(key)和网页(page)的相关性;

    网页中出现key越多,该page与查询结果越相关,可以使用TF值来量化

    每个词的权重越高,也即一个词的信息量越大;比如“原子能”就比“应用”的预测能力强,可以使用IDF值来量化,这里的IDF就是一个特定条件下关键词的概率分布的交叉熵。 在这里插入图片描述

    4. 如何选择?

    如果数据存在“分数膨胀“问题( 有的人打分分布正常,有的人就比较极端),就使用皮尔逊相关系数

    如果数据比较密集,变量之间基本都存在共有值,且这些距离数据都是非常重要的,那就使用欧几里得/ 曼哈顿距离/ 海林格距离。(空缺值处理:用0代替空缺值的方法可能会造成较大误差,“平均值”填充效果好于0值填充)

    如果数据是稀疏的,就使用余弦相似度

    调整余弦相似度和余弦相似度,皮尔逊相关系数在推荐系统中应用比较多;在基于项目的推荐中,已有论文证明,调整余弦相似度性能要优于后两者

    5. 参考文献

    https://www.cnblogs.com/soyo/p/6893551.html

    http://blog.sina.com.cn/s/blog_62b83291010127bf.html

    https://blog.csdn.net/weixin_43486780/article/details/104313350

    https://blog.csdn.net/Kevin_cc98/article/details/73742037?utm_source=blogxgwz0

    https://www.jianshu.com/p/7e3dbab7023c

    https://www.cnblogs.com/arachis/p/Similarity.html

    https://zhuanlan.zhihu.com/p/46626607

    https://www.tuiedu.org/74.html

    https://blog.csdn.net/lby503274708/article/details/88996795

    https://blog.csdn.net/u014374284/article/details/49823557

    https://en.wikipedia.org/wiki/Hellinger_distance

    https://en.wikipedia.org/wiki/Bhattacharyya_distance

    https://www.cnblogs.com/kyrieng/p/8694705.html
    https://cloud.tencent.com/developer/article/1668762 比较清晰

    展开全文
  • MATLAB余弦相似性学习

    千次阅读 2019-08-24 17:05:20
    根据余弦相似性原理判断两篇文章的相似程度。原理很简单,大致就是利用几个关键字组成一个特征向量,然后统计两篇文章各自对应的特征向量的值。最后计算两个特征矢量点积后的结果,即利用余弦值。如果值为1,表示两...
  • 数据相似性的度量方法总结

    万次阅读 多人点赞 2016-10-30 22:34:13
    而对数据相似性的度量又是数据挖掘分析中非常重要的环节。针对这些不同形式的数据,不可能找到一种具备普遍意义的相似性度量算法,甚至可以说,每种类型的数据都有它对应的相似度度量标准。这些标准很多,也比较杂乱...
  • 节点相似性指标

    千次阅读 2020-06-24 21:38:20
    基于局部信息的节点相似性指标 对于一般的网络,两个节点的共同邻居的数量越多,这两个节点越相似,也就更倾向于相互连接。 其中: Γ(x)\Gamma (x)Γ(x) 为节点x的邻居节点的集合 k(x)=∣Γ(x)∣k(x)=\left | \...
  • rdkit 化学指纹(fingerprint)和相似性

    千次阅读 2020-06-29 10:25:29
    文章目录一、引入所需库二、化学指纹2.1 拓扑指纹 Chem.RDKFingerprint(mol)2.2 ...2)2.6 摩根指纹拓展三、相似性计算3.1 基于指纹计算相似性3.1.1 方案一:基于拓扑指纹和Tanimoto相似性方法指纹计算3个分子的相似性
  • 结构相似性(SSIM)原理及其实现

    千次阅读 2020-05-30 00:44:04
    SSIM一、结构相似性二、SSIM指数2.1 亮度对比函数2.2 对比度对比函数2.3 结构对比函数2.4 SSIM测量函数2.5 SSIM函数满足的三个条件三、MSSIM四、实现 一、结构相似性 自然图像具有极高的结构性,表现在图像的像素间...
  • NLP句子相似性方法总结及实现

    千次阅读 2019-07-31 22:57:37
    2、TextRank算法中的句子相似性 3、莱文斯坦距离(编辑距离) 4、莱文斯坦比 5、汉明距离 6、Jaro距离(Jaro Distance) 7、Jaro-Winkler距离(Jaro-WinklerDistance) 8、基于Doc2Vec的句子相似度计算 1、...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 717,081
精华内容 286,832
关键字:

相似性