자카드 유사도(Jaccard Similarity), 자카드 계수(Jaccard Coefficient), 자카드 지수(Jaccard Index) 다 같은 말이다.
유사도(similarity)
유사도라 함은 우리가 흔히 알고 있듯이 A라는 아이템과 B라는 아이템이 얼마나 유사한지를 수치화한 것이다. 대표적인 유사도 측정 방법으로는 유클리디안 거리, 맨하튼 거리, 피어슨 상관계수, 코사인 유사도, 그리고 본 피드에서 다룰 자카드 유사도 등이 있다.
자카드 유사도 공식
이름이 뭐 대단해보여서 그렇지 자카드 유사도 공식은 매우 쉬운데, 교집합을 합집합으로 나눈 것으로 정의된다. 다음과 같이 예를 들어서 설명해보면 더욱 이해가 쉬울 것이다.
예시
A가 보유한 주식 종목
삼성전자, 네이버, 카카오, 셀트리온, 아시아시멘트
B가 보유한 주식 종목
삼성전자, 네이버, 한국조선해양, 현대미포조선, SK하이닉스
=> A와 B가 보유하고 있는 종목은 각각 5개씩이고, 얼마나 유사한지 자카드 유사도를 통해 확인해보자.
교집합
삼성전자, 네이버 : 2개
합집합
A가 보유한 종목 : 5개 + B가 보유한 종목 : 5개 - 교집합 : 2개 = 8개
따라서, 자카드 유사도는 2/8로 0.25로 계산된다. 즉, A와 B가 25% 유사하다고 해석할 수 있다.
다음은 파이썬 코드로 구현한 자카드 유사도이다.
def Jarracard_Similarity(A, B):
a = set(A)
b = set(B)
tmp = float(len(a.intersection(b))/len(a.union(b)))
return tmp