모바일은 화면을 돌려 가로화면으로 보시는 게 읽으시기 편할 수 있습니다. 돌려서 보시는 걸 추천드릴게요!!
🧩 Distance Measure 마지막 포스팅입니다🙄. Document Frequency를 위한 Cosine Similarity 에 대해 알아봅시다.
🚩 1. Cosine Similarity of two vectors
Document Frequency가 정확히 무엇인지 궁금하실 수 있을 텐데, 신문기사나 인터넷 기사를 가장 대표적인 예시로 생각하시면 될 것 같습니다. 예를 들어 연예기사에는 연예기사만의 자주 나오는 용어들이 있을 것이고, 스포츠 기사에는 그만의 자주 등장하는 용어들이 있을 것입니다. 서로 다른 두 기사들 간의 similarity를 계산해 유사성을 알아보는 것이 Cosine Similarity의 목적입니다. 또한 텍스트들의 유사성을 판단할 수 있기에 유전체에 대한 분석도 가능한 measure라는 점에서 Gene feature 혹은 biologic toxonomy등의 도메인에서도 사용하는 추세입니다.
🧩 예시부터 살펴보도록 하겠습니다.
위의 예시에서 각각의 Document들이 신문기사를 의미하고, 각 column들이 신문기사에서 나오는 용어들의 빈도를 나타냅니다. 이제 Frequency를 분석하기 위해서 각 document의 빈도를 vector로 표현할 것입니다. 각각의 벡터는 아래와 같이 표현됩니다.
$$\overrightarrow{d_{1}}=[5,0,3,0,2,0]$$
$$\overrightarrow{d_{2}}=[3,0,2,0,1,1]$$
$$\overrightarrow{d_{3}}=[0,7,0,2,1,0]$$
$$\overrightarrow{d_{4}}=[0,1,0,0,1,2]$$
앞으로 이 벡터들을 term-frquency vector 라고 부를 것입니다.
이제 이 벡터들을 가지고 similarity를 구하기 위한 measure를 살펴봅시다.
📝 Cosine Measure
두 term-frquency vector $\overrightarrow{d_{1}}$, $\overrightarrow{d_{2}}$ 에 대해서
$$cos(\overrightarrow{d_{1}}, \overrightarrow{d_{2}}) = \frac{\overrightarrow{d_{1}}\cdot\overrightarrow{d_{2}}}{|\overrightarrow{d_{1}}|\times|\overrightarrow{d_{2}}|}$$
벡터도 나오고 내적도 나와서 얼핏보면 복잡해보이는 식이긴 하지만 단순히 내적 계산 식에서 파생되는 measure입니다. 내적값은 두 벡터의 크기의 곱에 두 벡터 사이의 각 $θ$ 의 코사인 값을 구해 곱해주는 것이기에, 그냥 그 식을 넘겨주는 것 뿐 입니다.
코사인 그래프를 생각해보면 코사인 값은 $θ$ 가 작을수록 증가합니다. 따라서 cosine similarity 값인 $cos(\overrightarrow{d_{1}},\overrightarrow{d_{2}})$ 가 커지면 두 벡터 사잇각인 $θ$가 작아져 두 벡터가 서로 가깝다는 것을 의미합니다. 정리하면 다음과 같습니다.
▪ $cos(\overrightarrow{d_{1}},\overrightarrow{d_{2}})$ 가 크다 = 사잇각 $θ$ 가 작다 = 두 벡터가 서로 가깝다
▪ $cos(\overrightarrow{d_{1}},\overrightarrow{d_{2}})$ 가 작다 = 사잇각 $θ$ 가 크다 = 두 벡터가 서로 멀다
🧩 위의 예시에서 직접 cosine similarity를 구해보는 것으로 내용을 정리하겠습니다😉.
$$\overrightarrow{d_{1}}=[5,0,3,0,2,0] \;\;\;\;\;\; \overrightarrow{d_{2}}=[3,0,2,0,1,1] \;\;\;\;\;\; \overrightarrow{d_{3}}=[0,7,0,2,1,0] \;\;\;\;\;\;\ \overrightarrow{d_{4}}=[0,1,0,0,1,2]$$
$cos(\overrightarrow{d_{1}},\overrightarrow{d_{2}})$ 에 대해서
$$\overrightarrow{d_{1}}⋅\overrightarrow{d_{2}}=15+0+6+0+2+0=23$$
$$|\overrightarrow{d_{1}}|=25+0+9+0+4+0=38$$
$$|\overrightarrow{d_{2}}|=9+0+4+0+1+1=15$$
$$cos(\overrightarrow{d_{1}},\overrightarrow{d_{2}})=2338×15=0.963$$
🧩 cosine similarity 값이 1에 가까운 큰 값을 가지기 때문에 두 벡터는 서로 가깝다고 할 수 있습니다.
🚩 2. Distance Measure 요약
▪ Distance Matrix
▪ Q-Q plot
▪ Scatter plot
▪ Categorical Attributes : Simple Matching
▪ Binary Attributes : contingency table
▪ Numeric Data : Minkowski Distance
▪ Manhattan (1)
▪ Euclidean (2)
▪ Supremum (∞)
▪ Document / Term Frequency : Cosine Similarity
🧩 Distance Measure 관련 링크를 아래에 첨부해두었으니 필요한 사람은 참고하면 정리에 도움이 될 것 같습니다😉.
📝 1. QQ plot / Scatter plot 관련 포스팅
📝 3. Categorical / Binary Attributes 관련 포스팅
📝 4. Numeric Data - Minkowski Distance 관련 포스팅
🧩 이렇게 해서 Distance Measure를 모두 알아보았습니다. 수식이 복잡해보이는 경우도 있고, 그 개념이 헷갈리는 경우도 있지만 어떤 자료형의 데이터에 어떠한 measure를 사용하는지 알고 있으면 distance를 계산하는 데에는 전혀 어려움이 없을 것 같습니다. 또 대부분의 measure가 파이썬이나 R에 구현되어 있으니 사용하는 경우만 알아도 문제는 없을 것 같습니다😀😀.
🧩 다음 포스팅부터는 Data Preprocessing을 위한 방법들을 알아보겠습니다!!
💡위 포스팅은 한국외국어대학교 바이오메디컬공학부 고윤희 교수님의 [생명정보학을 위한 데이터마이닝] 강의를 바탕으로 합니다.
'📌 데이터마이닝 > 데이터 분포 확인' 카테고리의 다른 글
🚩 데이터마이닝 05. Numerical Distance (0) | 2023.02.07 |
---|---|
🚩 데이터마이닝 04. Categorical / Binary Distance (0) | 2023.02.06 |
🚩 데이터마이닝 03. Distance Matrix (2) | 2023.02.06 |
🚩 데이터마이닝 02. QQ Plot (0) | 2023.02.05 |
🚩 데이터마이닝 01. 소개 (0) | 2023.02.05 |