사잇각을 활용한 데이터의 유사도


                                         by 이상구 with 이재화



  [참고]  http://matrix.skku.ac.kr/math4ai/part1/

            http://matrix.skku.ac.kr/math4ai-tools/



  데이터의 유형과 분석가의 관심사에 따라 데이터 사이의 유사도를 재는 척도는 다양할 수 있다.
  지난 원고에서는 두 데이터 사이의 거리를 계산하여 유사도를 측정하는 척도에 대하여 설명하였다.



  * 데이터의 유사도(거리척도)

 http://matrix.skku.ac.kr/math4ai-tools/distance_similarity/



  그러나 데이터 분석가가 단지 데이터의 패턴(방향)에만 관심이 있는 경우, 이런 (거리)척도는 적합하지 않다.
  예를 들어, 아래와 같이 좌표평면 상에 벡터로 표현된 두 데이터 는 패턴(방향)은 유사하지만
  거리는 매우 큰 값을 갖게 되어, 이러한 (거리)척도로는 “두 데이터가 관계가 없다”라고 판단하게 되기 때문이다.


              그림입니다.
원본 그림의 이름: CLP00003aa00002.bmp
원본 그림의 크기: 가로 393pixel, 세로 265pixel



  코사인 유사도


  이런 경우에는 유사도를 어떻게 측정해야 할까? 우리는 이번에는 데이터의 패턴(방향)에만 관심이 있으므로,
  두 데이터(벡터)가 이루는
사잇각 로 유사도를 측정할 수 있을 것이다. 예를 들어, 가 작으면 데이터의 유사도가 높고,
   가 크면 데이터의 유사도가 낮다고 판단할 수 있다. 그러나 사잇각은
벡터의 내적(inner product)으로부터 정의되므로,
   를 직접 계산하기 보다는 벡터의 내적을 이용하여 의 코사인 값으로 유사도를 측정한다. 이를
코사인 유사도(cosine similarity)라고 한다.



  내적


  먼저 두 벡터 의 내적(inner product)은 다음과 같이 정의된다.


                              


그리고 다음의 성질을 만족한다. 대부분은 실수의 곱셈이 만족하는 성질과 유사하다.


  ① ,

  ②    (교환법칙)

  ③   (분배법칙)

  ④



  *내적

http://matrix.skku.ac.kr/K-MOOC-LA/cla-week-1.html 



  사잇각


  벡터의 내적은 두 벡터가 이루는 사잇각과 관련이 있는데, 먼저 아래 그림에서 피타고라스 정리를 적용하면 다음을 쉽게 알 수 있다.


                 그림입니다.
원본 그림의 이름: CLP000033bc0001.bmp
원본 그림의 크기: 가로 431pixel, 세로 350pixel


                  


이를 벡터를 이용하여 다시 표현하면 다음과 같다.


                  


또한 내적의 정의와 성질에 의해


    


이므로, 위의 두 식을 비교하면 다음을 얻는다.


           ,  즉   ()



  코사인 유사도의 계산


  두 데이터 코사인 유사도는 다음과 같이 계산할 수 있다.
   차원 공간 의 두 벡터 에 대해서도 동일한 공식이 성립한다.


                    



    그림입니다.
원본 그림의 이름: CLP00003aa00001.bmp
원본 그림의 크기: 가로 852pixel, 세로 383pixel


  여기서 는 원 데이터 , 의 크기에 관계없이, 크기가 항상 단위벡터(unit vector)이므로,
  코사인 유사도는 데이터의 크기와 데이터 사이의 거리는 무시하고 단지 데이터의 패턴(방향)만 고려하게 된다.


  이렇게 두 데이터의 코사인 유사도를 계산하여, 만일 코사인 값이 크면, 코사인 함수의 성질에 의해 사잇각은 작아지게 되고,
  그에 따라 유사도는 높아지게 된다. 이런 방식으로 데이터 사이의 패턴을 분석할 수 있게 된다.


               그림입니다.
원본 그림의 이름: CLP000033bc0003.bmp
원본 그림의 크기: 가로 647pixel, 세로 395pixel



  예제 1. 두 벡터 , 에 대하여 내적 과 코사인 유사도, 사잇각 ()를 계산하여라.




  예제 2. 코사인 유사도를 활용하여 세 개의 데이터 , , 에 대하여 중 어느 데이터에 더 가까운지 판단하여라.




  생각해보기


  Question.  어떤 데이터들이 코사인 유사도를 사용하여 분석이 가능할지 생각해보자.



   [참고]국가에서 보유하고 있는 다양한 공공데이터  https://www.data.go.kr/



Copyright @ 2020 SKKU Matrix Lab. All rights reserved.
Made by Manager: Prof. Sang-Gu Lee and Dr. Jae Hwa Lee