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

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

nyamin9 2023. 2. 6. 12:06

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

 

 


 

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

 


🚩 1. Nominal Categorical Attributes - 순서가 없는 범주형 데이터

 

 

🧩 Simple Matching

 

 

먼저 알아볼 방법은 simple matching 입니다. 이 방법을 통한 object 사이의 distance는 아래와 같이 구해집니다.

 

$$d(i,j)=(p−m)p$$

 

이때 m은 feature에 대해 같은 값의 개수이고, p는 feature의 개수를 의미합니다.

 

간단한 예를 한번 살펴봅시다.

 

 

위에서 student 2와 3은 Blood Type은 같지만 Hair Color가 다르기 때문에 distance는 아래와 같습니다.

 

$$d(s2,s3)=\frac{(2-1)}{2}=\frac{1}{2}$$

 

 

반면 student 2와 student 4는 두 feature가 모두 다르기 때문에 distacne는 다음과 같습니다.

 

$$d(s2,s4)=\frac{(2-0)}{2}=1$$

 

 

이렇게 하면 간단하게 simple matching 을 통해 distance를 구할 수 있습니다.

 


🧩 Use a large number of binary attributes

 

 

각 nominal state에 대해 새로운 binary attribute를 생성하는 방법입니다.

 

즉, 범주형으로 주어진 각 feature들을 binary 형태로 바꿔주겠다는 의미입니다.

 

 

위 예시에 적용해 Blod type A를 0, B를 1로 바꾸고 Hair Color Black을 1, Brown을 0으로 바꿔 나타낼 수 있습니다.

 

 

 

그 후에 distance를 구하는 방법은 simple matching과 같습니다.

 

 

$$d(i,j)=\frac{(p-m)}{p}$$

 

 


🚩 2. Ordinal Categorical Attributes - 순서가 있는 범주형 데이터

 

🧩 위에서 다룬 nominal data와는 다르게 순위나 순서가 있는 자료형입니다.

 

이 데이터의 distance는 ordinal variables를 그것의 순위로 변경해 구할 수 있는데, 이는 아래와 같은 방식으로 정해집니다.

 

 

$$feature\;f,\;index\;\,i,\;\;r_{if}∈{1,2,...,M_{if}}\;\;and\;\;r_{if}=\;value\;ranking,\;M_{if}=\;amount$$


$$Z_{if}=\frac{r_{if}-1}{M_{if}-1}$$

 

수식만 보면 뭔가 복잡해보이지만 쉽게 생각하면 $M_{if}$는 전체 순위의 수를, $r_{if}$는 해당 변수의 순위를 나타냅니다.

 

 

예시를 한번 살펴보도록 합시다.

 

$$freshman =  1$$

$$sopomore = 2$$

$$junior = 3$$

$$senior = 4$$

 

에 대해서 각각의 Z값을 먼저 구해 보면,


$$Z_{if} = 0, \;\frac{1}{3}, \;\frac{2}{3},\;1$$ 로 계산됩니다.

 

 

Z값을 바탕으로 해서 distance를 구하게 되는데, 그 계산은 단순 뺼셈 연산을 사용하면 됩니다.

 

다만 distance가 음수일 수는 없기에, 큰값에서 작은 값을 빼준다고 생각하시면 됩니다.

 

$d(freshman,senior) = 1-0=1$


$d(junior,senior) = 1-\frac{2}{3}=\frac{1}{3}$

 

 


3. Binary Attributes - 이진변수

 

binary attribute들은 0또는 1의 값을 가지기 때문에, 이를 간단하게 합쳐서 하나의 table로 만들 수 있습니다.

 

이 table을  Contingency Table 이라 하는데, 그 모습은 아래와 같습니다.

 

 

📝 Contingency Table

 

 

 

 

두 object가 모두 1인 경우에는 $q$, 모두 0이면 $t$, (i,j) = (1,0) 이면 $s$, (0,1) 이면 $r$로 그 값이 집계됩니다.

 

contingency table 에서 distance를 구할때는 주로 s와 r을, similarity를 구할 때는 q와 t를 사용합니다.

 

 

⭐⭐ contingency table에 있어서 반드시 고려해야 할 점이 있습니다. 이는 저희가 binary로 나타내는 데이터는 두 가지 경우로 명확히 나눠져야 한다는 점입니다. 하지만 이러한 경우는 흔히 찾아보기가 힘들기 때문에, 이를 적극적으로 사용할 수 있는 도메인은 질병의 양성 / 음성을 판단하는 도메인입니다. 예를 들면 코로나 검사 결과가 양성(1)이냐 음성(0)이냐를 다루는 경우라 할 수 있습니다.

 

⭐⭐ 더욱 중요한 것은 질병 관련 조사에서 저희가 관심있는 대상은 대부분 양성인 경우입니다. 하지만 두 조사 대상이 모두 양성인 경우$(q)$보다는 당연히 음성$(t)$일 가능성이 높기에, 필연적으로 위의 contingency table에서 $q$보다 $t$가 월등히 큰 값을 가질 것입니다. 이렇게 asymmetric한 table에 대해서는 당연히 이 경우를 고려해야 주어야 합니다⭐⭐.

 

 

👉 이제 각각의 경우에 대한 distance를 구해보겠습니다.

 

 

🧩 Distance measure for symmetric binary variables

 

$$d(i,j)=\frac{r+s}{q+r+s+t}$$

 

 

🧩⭐Distance measure for asymmetric binary variables

 

$$d(i,j)=\frac{r+s}{q+r+s}$$

 

 

🧩⭐Similarity measure for asymmetric binary variables

 

$$Jaccard\;\,coefficient=Sim_{jaccard}(i,j)=\frac{q}{q+r+s}$$

 

 

 

예시를 한번 살펴보도록 합시다!!

 

 

 

어떤 질병에 관련된 7개의 feature를 가진 3개의 object로 구성된 데이터임을 확인할 수 있습니다. 이때 gender는 symmetric한 특징을 가지고 있기 때문에 이는 제외하고 distance를 계산해 줄 것입니다. 또한 test의 결과에서 나오는 P는 1로, N은 0으로 간주합니다. 이를 바탕으로 contingency table을 만들면 아래와 같습니다.

 

 

 

🧩 위의 공식에 따라서 distance를 구하겠습니다.

 

$$d(i,j)=\frac{r+s}{q+r+s}$$


$$d(jack,jim)=\frac{1+1}{1+1+1}=0.67$$


$$d(jack,mary)=\frac{0+1}{2+0+1}=0.33$$


$$d(jim,mary)=\frac{1+2}{1+1+2}=0.75$$

 

 

 

🧩 이렇게 해서 binary data에 대한 distance measure 역시 다뤄보았습니다. 고려해야 할 것도 있고, 그 경우마다 적용되는 공식도 살짝씩 달라지지만 서로 다른 것들로 distance를 계산하고 같은 것으로 similarity를 계산한다는 것만 기억하고 계시면 그렇게 어려운 개념은 아닐 것 같다고 생각합니다🙂.

 

 


🧩 이번 포스팅에서는 categorical data에 대한 distance measure를 알아보았습니다. 종류가 다양하고, 데이터의 도메인에 따라서 적용하는 법이 다르지만 위의 예시들만 잘 살펴봐도 나름 스근하게 넘어갈 수 있는 내용들인 것 같습니다😊. 앞으로 나올 내용들의 기초가 되는 부분들이기 때문에 나름 자세히 다뤄보았는데, 충분한 설명이 되었으면 좋겠네요. 이제 다음 포스팅에서는 Numerical Data의 distance를 구해보도록 하겠습니다🏃‍♂️🏃‍♂️.

 


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