기록하는삶
[추천 시스템/RecSys] 다양한 거리와 유사도 측정법 본문
유사도(Similarity)는 두 개체 간의 유사성을 수량화한 것으로, 일반적으로 거리에 반비례하도록 그 측정 방법을 구성한다. 일반적으로 거리라고 하면 떠오르는 것이 두 점 사이의 거리의 표현 중 가장 대중적인 유클리디안 거리지만 그 외에도 개체의 속성에 따라 다양한 거리 측정법과 그에 기반한 유사도 측정법이 존재한다. 이 글에서는 그 중 일부를 정리해본다.
1) Mean Squared Difference Similarity
동일한 유저에 대한 아이템별 rating의 msd, 혹은 동일한 아이템에 대한 유저별 rating의 msd의 역수를 이용해 유사도를 표현하는 방법이다. 분모가 0이 되지 않도록 하기 위해 분모에 1을 더해주어 0과 1 사이의 실수로 표현 가능하고, 1에 가까울수록 유사하다고 볼 수 있다.
2) Cosine Similarity
차원이 같은 두 벡터의 각도를 이용하는 유사도로 -1과 1 사이의 값을 가진다. 0은 서로 직각을 이뤄 관련이 없음을 의미하고 1에 가까울수록 유사하며, -1에 가까울수록 정반대(유사하지 않음)를 가리킨다.
코사인 유사도의 경우 주어지는 벡터들의 norm이 다른 경우에, 유사도는 높지만 실제 거리는 먼 경우들이 존재할 수 있어 이에 대한 고려가 필요할 수 있다. (Item-based collaborative filtering recommendation algorithms(2010) 논문에서 이를 보완하기 위해 rating에 regression 기법을 적용한 것이 그 예다.)
3) Pearson Similarity (Pearson Correlation)
코사인 유사도의 변형이다. 피어슨 상관계수의 연산 식과 닮아 있다. 일반적으로 평균을 0으로 만들어주는 표준화 작업은 연산 오차를 줄여주는 효과가 있는 것으로 알려져있다.
4) Jaccard Similarity
집합 개념을 사용한 유사도다. 두 집합이 얼마나 많은 원소를 공유하느냐를 0과 1사이의 실수로 표현한다. 1에 가까울수록 많은 원소(전체)를 공유하고, 0이면 공유하는 원소가 없음을 의미한다. 두 집합의 크기(차원)가 다르더라도 유사도를 계산할 수 있다는 장점이 있다. 두 문장이 공유하는 단어 수를 이용해 유사한 정도를 표현하는 데 활용될 수 있다. 다만 집합으로 접근하기 때문에, 특정 단어가 등장하는 빈도가 고려되지 않는다는 단점이 있다.
5) Levenshtein distance & CER(Character Error Rate)
편집거리라고도 불리는, 레벤슈타인 거리를 활용해 문장 간 유사도를 표현하는 방법이 CER이다. 레벤슈타인 거리는 두 문장을 일치하게 만드는데 필요한 삭제(Delete), 변경(Subsitute), 삽입(Insert)의 수를 count하여 나타낸다.
구현은 위 점화식을 활용해 가능한데, 파이썬에서는 Levenshtein 라이브러리가 이를 자동으로 지원한다.
A = '나는 지금 배가 고프다'
B = '너는 지금 뭐가 먹고싶어?'
의 두 문장간 레벤슈타인 거리를 구해보자. (A → B)
삭제(D): 0
변경(S): 5 - (나 → 너 / 배 → 뭐 / 고 → 먹 / 프 → 고 / 다 → 싶)
삽입(I): 2 - (어 / ?)
따라서 두 문장의 편집거리는 7이다. CER은 (레벤슈타인 거리 / 원래 문장의 길이)로 구할 수 있는데, 그 수치가 작을수록 유사한 문장임을 알 수 있다.
'AI > 추천시스템(RecSys)' 카테고리의 다른 글
[추천 시스템/RecSys] 딥러닝을 활용한 추천 모델 DeepFM, DIN, BST (0) | 2022.03.17 |
---|---|
[추천 시스템/RecSys] CAR(Context-aware Recommendation), FM, FFM (0) | 2022.03.15 |
[추천 시스템/RecSys] KNN과 ANN / ANNOY, HNSW, IVF 등의 방법론 (0) | 2022.03.12 |
[추천 시스템/RecSys] 연관 규칙 분석 관련 용어 정리(support, confidence, lift) (0) | 2022.03.08 |
[추천 시스템/RecSys] 추천 시스템의 필요성과 의의, 사용 데이터, 평가 지표 (0) | 2022.03.07 |