새소식

데이터과학/머신러닝 및 딥러닝

[딥러닝] 자카드 유사도(Jaccard Similarity) 개념 이해

  • -

📌 자카드 유사도(Jaccard Similarity)

자카드 유사도는 모두들 다 알고 있는 개념이다.

내가 만약에 A와 B라는 아이템이 얼마나 유사한지 비교하고 싶다라고 한다면 대부분이 자카드 유사도 개념 모르더라도 그 방법을 떠올릴 것이다.

그렇다면 자카드 유사도를 어떻게 구하는지 한 번 알아보자.

 

➤ 자카드 유사도 공식

위에 보이는 것처럼 공식이 너무나 간단하다. 두 아이템 A와 B의 교집합에서 합집합을 나눈 값이 바로 자카드 유사도를 구하는 공식이다.

이를 데이터 기반으로 이해하기 위해 계산해 보자.

 

➤ 종목 유사도 데이터 예시

보통 문서 유사도 같은 자연어 처리 관련으로 설명을 하는데 이해를 쉽게 하기 위해 주식 종목이 얼마나 유사한지 측정해 보자.

A 유저의 주식 종목

삼성전자, 테슬라, LG전자, 카카오, 펄어비스

B 유저의 주식 종목

삼성전자, 카카오, 넷마블, 현대자동차, 셀트리온

A유저와 B유저의 비교를 원할하게 하기 위해, 종목의 수는 동일하게 5개로 지정하였고 A와 B가 얼마나 유사한지를 체크해보도록 하자.

➤ 종목 유사도 검증

교집합

삼성전자, 카카오 = 2개

합집합

A유저(5) + B유저(5) - 교집합(2) = 8

자카드 유사도 계산

2/8 = 0.25

A와 B가 25% 유사하다고 계산이 되었다. 이 계산이 맞는지 자카드 유사도를 Python 코드를 이용하여 구현해 보자.

 

➤ Python으로 자카드 유사도 구현

def jacaard_similarity(listA, listB):
    s1 = set(listA)
    s2 = set(listB)
    return float(len(s1.intersection(s2)) / len(s1.union(s2)))

listA = ["삼성전자", "테슬라", "LG전자", "카카오", "펄어비스"]
listB = ["삼성전자", "카카오", "넷마블", "현대자동차", "셀트리온"]

print(jacaard_similarity(listA, listB))

위 코드를 실행하면 0.25의 자카드 유사도가 나오는 것을 확인할 수 있다.

이처럼 자카드는 공식이 매우 간단하기 때문에 그만큼 속도도 보장이 되는 공식이다. 자카드가 최고의 공식이 아니지만, 많이 쓰는 이유는 현업에서 다른 공식들은 속도 이슈로 인해서 쓰지 못할 경우가 많기 때문이라고 한다.

 

'데이터과학 > 머신러닝 및 딥러닝' 카테고리의 다른 글

[딥러닝] 딥러닝이란?  (0) 2023.05.08
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.