📌 데이터마이닝/데이터 분포 확인

🚩 데이터마이닝 06. Document Frequency

nyamin9 2023. 2. 7. 10:58

모바일은 화면을 돌려 가로화면으로 보시는 게 읽으시기 편할 수 있습니다. 돌려서 보시는 걸 추천드릴게요!!

 

 


 

🧩 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 관련 포스팅

 

🚩 데이터마이닝 02. QQ Plot

🧩 이번 포스팅에서는 각 데이터의 상대적인 위치를 알 수 있는 몇가지 plot 방법에 대해 알아봅시다. 🚩 1. Quantile plot ▪ 각 object에 %를 부여함으로써 어느 위치에 존재하는지 알아내는 방법입

nyamin9-data.tistory.com

 

📝 2. Distance Matrix 관련 포스팅

 

🚩 데이터마이닝 03. Distance Matrix

🧩 이번 포스팅부터는 Distance measure에 대해 알아보겠습니다. 🚩 1. Similarity / Dissimilarity ▪ Similarity - 데이터들의 유사한 정도를 의미합니다. - 범위 : [0,1] - 0 : No Similarity - 1 : Completely Similar ▪ Diss

nyamin9-data.tistory.com

 

📝 3. Categorical / Binary Attributes 관련 포스팅

 

🚩 데이터마이닝 04. Categorical / Binary Distance

🧩 저번 포스팅을 통해 object 간의 Distance Matrix를 만드는 법에 대해 알아보았습니다. 이제는 본격적으로 Distance measure에 대해 알아볼텐데, 이 measure들은 feature의 자료형에 따라 다르게 적용됩니다

nyamin9-data.tistory.com

 

📝 4. Numeric Data - Minkowski Distance 관련 포스팅

 

🚩 데이터마이닝 05. Numerical Distance

저번 포스팅에서는 categorical data에 대한 distance measure를 알아보았습니다. 이번에는 Numerical Data를 위한 measure인 Minkowski Distance 를 배워보도록 하겠습니다. 🚩 1. Basic Minkowski Distance 🧩 Minkowski Distanc

nyamin9-data.tistory.com

 

 

 


🧩 이렇게 해서 Distance Measure를 모두 알아보았습니다. 수식이 복잡해보이는 경우도 있고, 그 개념이 헷갈리는 경우도 있지만 어떤 자료형의 데이터에 어떠한 measure를 사용하는지 알고 있으면 distance를 계산하는 데에는 전혀 어려움이 없을 것 같습니다. 또 대부분의 measure가 파이썬이나 R에 구현되어 있으니 사용하는 경우만 알아도 문제는 없을 것 같습니다😀😀.

 

🧩 다음 포스팅부터는 Data Preprocessing을 위한 방법들을 알아보겠습니다!!

 


💡위 포스팅은 한국외국어대학교 바이오메디컬공학부 고윤희 교수님의 [생명정보학을 위한 데이터마이닝] 강의를 바탕으로 합니다.