背景
给定两个等长的数字序列,如何衡量他们之间的相似程度?
如
[
2
,
1
,
0
,
3
]
[2, 1, 0, 3]
[2,1,0,3]、
[
2
,
0
,
3
,
1
]
[2, 0, 3, 1]
[2,0,3,1]与
[
1
,
3
,
2
,
0
]
[1, 3, 2, 0]
[1,3,2,0]三个序列之间哪两个最相似?
为了解决上述问题,本文提出了两类衡量指标用来衡量序列相似度。
指标
0.符号约定
n
n
n:序列长度
P
P
P:数字序列
[
0
,
1
,
2
,
3
,
.
.
.
,
n
−
1
]
[0,1,2,3,...,n-1]
[0,1,2,3,...,n−1]
A
,
B
A,B
A,B:数字序列
P
P
P的某种排列方式
R
(
A
)
R(A)
R(A):
A
A
A的反转序列
A
[
i
]
A[i]
A[i]:
A
A
A中第
i
i
i位的数字
i
[
A
]
i[A]
i[A]:数字
i
i
i在
A
A
A中的位置
s
=
A
(
i
,
j
)
s=A(i,j)
s=A(i,j):交换,
A
A
A中的第
i
i
i位与第
j
j
j位互换
w
(
s
)
w(s)
w(s):交换权,进行交换
s
s
s需要的代价
S
=
A
→
B
=
[
s
1
,
s
2
,
s
3
,
.
.
.
]
S=A\to B=[s_1,s_2,s_3,...]
S=A→B=[s1,s2,s3,...]:转换,能将
A
A
A转换为
B
B
B的一系列交换
W
(
S
)
=
∑
s
∈
S
w
(
s
)
W(S)=\sum_{s\in S} w(s)
W(S)=∑s∈Sw(s):转换权,转换
S
S
S中所有交换的交换权之和
1.基于位置的指标
-
位方差(location square deviation, LSD)
L S D ( A , B ) = 1 n ∑ i = 0 n − 1 ( i [ A ] − i [ B ] ) 2 LSD(A,B)=\frac{1}{n}\sum^{n-1}_{i=0}(i[A]-i[B])^2 LSD(A,B)=n1∑i=0n−1(i[A]−i[B])2
各数在两序列中的位置差距的平方的平均值,值越小序列越相似。 -
位均差(location mean deviation, LMD)
L M D ( A , B ) = 1 n ∑ i = 0 n − 1 ∣ i [ A ] − i [ B ] ∣ LMD(A,B)=\frac{1}{n}\sum^{n-1}_{i=0}|i[A]-i[B]| LMD(A,B)=n1∑i=0n−1∣i[A]−i[B]∣
各数在两序列中位置间差距绝对值的平均值,值越小序列越相似。 -
交换差(swap deviation, SD)
S D ( A , B ) = m i n ( W ( A → B ) ) = m i n ( ∑ s ∈ A → B 1 ) SD(A,B)=min(W(A\to B))=min(\sum_{s\in A\to B}1) SD(A,B)=min(W(A→B))=min(∑s∈A→B1)
两序列转换所需最小交换次数,即令 w ( s ) = 1 w(s)=1 w(s)=1的最小转换权,值越小序列越相似。 -
交换距离差(swap distance deviation, SDD)
S D D ( A , B ) = m i n ( W ( A → B ) ) = m i n ( ∑ s ∈ A → B ∣ i − j ∣ ) SDD(A,B)=min(W(A\to B))=min(\sum_{s\in A\to B}|i-j|) SDD(A,B)=min(W(A→B))=min(∑s∈A→B∣i−j∣)
两序列转换所需最小交换距离(交换位置间距离)之和,即令 w ( s ) = ∣ i − j ∣ w(s)=|i-j| w(s)=∣i−j∣的最小转换权,值越小序列越相似。
2.基于数值的指标
-
值方差(value square deviation, VSD)
V S D ( A , B ) = 1 n ∑ i = 0 n − 1 ( A [ i ] − B [ i ] ) 2 VSD(A,B)=\frac{1}{n}\sum^{n-1}_{i=0}(A[i]-B[i])^2 VSD(A,B)=n1∑i=0n−1(A[i]−B[i])2
两序列对应位置两数之差平方的平均值,值越小序列越相似。 -
值均差(value mean deviation, VMD)
V M D ( A , B ) = 1 n ∑ i = 0 n − 1 ∣ A [ i ] − B [ i ] ∣ VMD(A,B)=\frac{1}{n}\sum^{n-1}_{i=0}|A[i]-B[i]| VMD(A,B)=n1∑i=0n−1∣A[i]−B[i]∣
两序列对应位置两数之差绝对值的平均值,值越小序列越相似。 -
点积比(dot product ratio, DPR)
D P R ( A , B ) = ∑ i = 0 n − 1 A [ i ] × B [ i ] ∑ i = 0 n − 1 A [ i ] 2 DPR(A,B)=\frac{\sum^{n-1}_{i=0}A[i]×B[i]}{\sum^{n-1}_{i=0}A[i]^2} DPR(A,B)=∑i=0n−1A[i]2∑i=0n−1A[i]×B[i]
两序列对应位置两数乘积的和除以序列各数平方和,值越大序列越相似,其取值范围为 [ n − 2 2 n − 1 , 1 ] [\frac{n-2}{2n-1},1] [2n−1n−2,1]。 -
归一化点积比(normalization dot product ratio, NDPR)
N D P R ( A , B ) = 2 n − 1 n + 1 D P R ( A , B ) − n − 2 n + 1 NDPR(A,B)=\frac{2n-1}{n+1}DPR(A,B)-\frac{n-2}{n+1} NDPR(A,B)=n+12n−1DPR(A,B)−n+1n−2
将点积比归一化,取值范围为 [ 0 , 1 ] [0,1] [0,1]。
性质
S
D
D
(
A
,
B
)
=
n
2
L
M
D
(
A
,
B
)
SDD(A, B)=\frac{n}{2}LMD(A, B)
SDD(A,B)=2nLMD(A,B)
L
S
D
(
A
,
P
)
=
n
(
n
2
−
1
)
3
N
D
P
R
(
R
(
A
)
,
P
)
LSD(A,P)=\frac{n(n^2-1)}{3}NDPR(R(A),P)
LSD(A,P)=3n(n2−1)NDPR(R(A),P)
L
S
D
(
R
(
A
)
,
P
)
=
n
(
n
2
−
1
)
3
N
D
P
R
(
A
,
P
)
LSD(R(A),P)=\frac{n(n^2-1)}{3}NDPR(A,P)
LSD(R(A),P)=3n(n2−1)NDPR(A,P)
L
S
D
(
A
,
P
)
=
n
(
n
2
−
1
)
3
N
D
P
R
(
A
,
R
(
P
)
)
LSD(A,P)=\frac{n(n^2-1)}{3}NDPR(A,R(P))
LSD(A,P)=3n(n2−1)NDPR(A,R(P))
L
S
D
(
A
,
R
(
P
)
)
=
n
(
n
2
−
1
)
3
N
D
P
R
(
A
,
P
)
LSD(A,R(P))=\frac{n(n^2-1)}{3}NDPR(A,P)
LSD(A,R(P))=3n(n2−1)NDPR(A,P)
图像
根据如何将数字序列映射为整数和计算序列相似度的算法,将整数转换为序列之后就可以以整数为自变量算出以上指标并画出三维图像。以下给出各个指标在 n = 6 n=6 n=6的情况下的图像。
- 位方差(location square deviation, LSD)
- 位均差(location mean deviation, LMD)
- 交换差(swap deviation, SD)
- 交换距离差(swap distance deviation, SDD)
- 值方差(value square deviation, VSD)
- 值均差(value mean deviation, VMD)
- 点积比(dot product ratio, DPR)
- 归一化点积比(normalization dot product ratio, NDPR)