랭킹 비교 함수

어떤 데이터셋의 나열에 대한 비교를 수행할때 Correlation을 많이 사용한다.
이전에 inlink 카운트와 인덱스된 페이지의 갯수에 대한 분석을 Correlation을 이용해서 했는데 이 식은 그런 경향성을 분석하는데 유용하게 쓰일 아주 중요한 식이다.

사용자 삽입 이미지


Pearson correlation


일반적으로 Correlation이라고 함은 Pearson Correlation을 지칭함을 의미한다. 그리고 이 Pearson Correlation은 랭킹을 비교할때 쓰이는 Spearman’s rank correlation coefficient 같은 특수한 식의 기본 개념이 된다.

이 함수를 랭킹을 비교하는데 쓸라고 했었는데 무리가 있었다. 왜냐면 랭킹은 상대적인 것인데 이 상대성에 대한 개념을 식이 전혀 반영하고 있지 않다. 다시 말해서 두 가지 랭킹 결과로 나온 것들의 개개 랭킹 순위의 같은 순위에 대한 비교정보만 식에 반영이 될뿐 각기 랭킹 안의 상대적인 랭킹의 의미는 전혀 들어 있지 않다.

여기서 새로운 관점의 랭킹 evaluation 방법이 나오는데 바로 Kendall tau rank correlation coefficient 다.
이 방법은 각 랭크별로 이 랭크의 위치가 비교 대상이 되는 랭킹에 비해 상대적으로 어떤 위치에 있는지 가늠하게 해준다.

사용자 삽입 이미지

Kendall tau rank correlation



위 식에서 P와 Q 변수가 나오는데 P는 원본 랭킹과 비교했을때 적합한 쌍의 갯수를 의미한다. 그리고 Q는 그 반대의 갯수를 의미한다. 따라서 P와Q를 더한 값은 mC2 값이 된다.

직관적으로 위 식에서 앞쪽 식을 보면 이해가 쉽다. 이어지는 식은 그저 계산을 편하게 하기 위한 식이 되겠다. pair에 대한 비교 식이기 때문에  분모는 mC2 가 되고 m은 랭크의 숫자를 의미하며 이 식을 풀어 쓰면 “1/2 * m(m-1)”이 된다.

이것 역시 일반적인 Correlation 값의 의미하고 같다.
1에 가까울수록 비교한 랭킹과 유사도가 크게 되고 -1에 가까울수록 역의 유사도와 같게 된다.

볼만한 예제를 올려본다.


(1) (2)
1   1
2   4
3   9
4   16
5   25
6   36
7   49
8   64
9   81
10  100
11  121
12  144
13  169
14  196

위 (1), (2) 가 뭐 랭킹이라고 하긴 뭐하지만 Pearson Correlation값과 Kendall tau rank correlation 값을 구해보면 각각 0.97과 -0.93 값이 나온다. (여기서 역의 유사도하고 비슷하지 않은데도 -1에 가깝게 나온걸 보면 좀더 고민해야 될 부분이라 생각한다.)
사실 (2) 데이터는 (1) 데이터의 각 원소의 제곱을 한 값이라는 걸 안다면 Pearson이 왜 이렇게 나왔는지 잘 이해할 수 있을것이다.
특정 원소들이 일정 값으로 shift하는 경향을 띄는것들에 대한 원소 비교를 하고자 한다면 Pearson이 적합할 것이다. 하지만 랭킹은 그렇지 않으니 적재적소에 잘 쓰기 위해 확실한 차이를 알아둘 필요가 있을 것이다.

CC BY-NC 4.0 랭킹 비교 함수 by from __future__ import dream is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.