중간 분포를 만드는 계산
두 분포를 P와 Q라고 할 때 같은 가중치의 평균 M=(P+Q)/2를 만든다. P에서 M으로의 쿨백라이블러 발산과 Q에서 M으로의 발산을 구한 뒤 둘을 더해 반으로 나눈다. 한 분포에서 다른 분포로 바로 비교하는 것과 기준이 다르다.
완전히 다른 두 결과의 예
P=(1, 0), Q=(0, 1)이면 M은 (1/2, 1/2)다. 밑이 2인 로그를 쓰면 두 방향의 발산은 각각 1이므로 젠슨섀넌 발산도 1이다. P와 Q가 같다면 평균 분포도 같아 값이 0이 된다.
로그의 밑과 값의 크기
로그의 밑을 바꾸면 계산 결과의 배율도 달라진다. 같은 가중치의 두 분포에 밑 2를 쓰는 경우 발산은 0과 1 사이에 있다. 다른 밑의 결과를 같은 문턱값과 비교하려면 단위를 맞춰야 하며, 사용한 로그의 밑을 함께 기록하는 것이 좋다.
발산을 반환할까 거리를 반환할까
젠슨섀넌 거리에는 발산 뒤에 제곱근을 취하는 단계가 더 있다. SciPy의 jensenshannon 함수는 이 거리를 반환한다. 함수값을 그대로 발산이라고 부르면 제곱근을 혼동하게 되므로, 발산이 필요하면 함수가 반환한 거리의 제곱을 사용해야 한다.