肯德尔Rank相关系数(Kendall rank correlation coefficient)
肯德尔Rank相关系数(Kendall rank correlation coefficient
),
又叫 Kendall's tau
是数学统计中一个常用的系数,用来描述两个序列的相关系数。
如果两个序列完全一致,则 Kendall's tau
值为1,两个毫不相关的序列的 Kendall's tau
值为0,
而两个互逆的序列的 Kendall's tau
系数为-1。
具体的计算方式为: $1 - 2 \cdot symDif / (n \cdot (n - 1))$, 其中 $n$ 为排列的长度(两个序列的长度相同),$symDif$为对称距离。
对称距离的计算方式如下:
- 对于两个给定的序列 $S1 = \lbrace a, b, c, d \rbrace; S2 = \lbrace a, c, b, d \rbrace $ 分别找出两个序列的二元约束集。
- $S1$的所有二元约束集为 $\lbrace (a,b), (a,c), (a,d), (b,c), (b,d), (c,d) \rbrace$,
- $S2$ 的所有二元约束集为 $\lbrace (a,c), (a,b), (a,d), (c,b), (c,d), (b,d) \rbrace $,
- 比较两个二元约束集,其中不同的二元约束有两个$(b,c)$和$(c,b)$,所以对称距离为$2$。
代入上面的计算公式可以得到这两个序列的相关系数为: $ 1 - 2 \cdot 2 / (4 \cdot 3) = 2 / 3 = 0.667 $
这是一个很有用的参数,可以用来比较两个序列的相似性,例如可以用于搜索引擎的排序结果的好坏。 比较一个序列与一个类似标准答案的排序序列的相似性(人工评价),得出排序序列的有效性。
计算的代码如下:
1 | def cal_kendall_tau(list_1 , list_2): |