两个不同有序序列之间的相似性度量

机器算法验证 序列分析 电车
2022-03-10 05:08:16

我知道我们可以通过排序相关性来量化具有相同长度和相同元素的两个序列之间的相似性。但是如何衡量两个不同长度的序列之间的相似性,并且只有一些共同的元素呢?

例如,如果我有三个这样的排序数字序列:

序列A:1、2、3、4、5、6、7、8、9;

序列 B:2,3,4,5,6,7,8,9,10,11,12,13

序列 C:4,2,9,7,11,13,14,16,18

直观地说,我猜序列 A 和 B 更相似,因为它们有更多的公共数字,并且公共数字在两个序列中具有相同的顺序。序列 A 和 C 不太相似,因为它们的公共数量较少,并且公共数字在每个序列中具有不同的顺序。是否有任何定量测量来捕捉共同元素的顺序相似性和两个序列中共同元素的百分比?

2个回答

正如@ttnphns 的评论中提到的,存在很多不同的措施。看看Studer & Ritchard (2015)的评论,他们检查了度量对排序、位置(时间)和持续时间(一个状态重复多少次)的敏感性。该论文中提到的措施都是由TraMineR R 包seqdist的功能提供的

如果您主要对两个序列之间的不常见部分感兴趣,那么最佳匹配等编辑距离可能是解决方案。最佳匹配测量通过插入缺失(插入或删除)和替换将一个序列转换为另一个序列的最小成本,并且可以考虑插入缺失和替换成本。如果等级 1 和 3 之间的差异是等级 1 和 2 之间差异的两倍,您可以将替代成本设置为等级差异。这种度量适用于不同长度的序列。它只考虑了使序列长度相等所需的插入缺失的成本。

如果您希望更多地关注序列中元素排序的相似性,则其他一些措施(例如转换的最佳匹配)可能是更好的选择。

希望这可以帮助。

在我看来,您正在寻找类似子序列相似性的东西,对吗?如果是这样:将序列 A 和 B 都想象成字符串,那么您可以应用:

  1. 最长公共子串
  2. 最长公共子序列

然后可以将结果字符串的长度除以关于 A 和 B 的最大长度。这对您来说是一个选择吗?