본문 바로가기
R 주제/통게분석(임시)

[R강의] 134. 여러 점들 사이의 코사인 거리 한번에 구하는 법 (dist함수)

by 만다린망고 2022. 2. 19.
반응형

아래와 같이 5개의 점이 있다고 합시다.

 

P1=c(1,2,3)
P2=c(3,5,2)
P3=c(5,5,4)
P4=c(1,4,7)
P5=c(2,2,4)

 

이들 중 어느 두 점이 가장 가까운 거리에 있는지 알고 싶은 상황입니다. 일반적으로 알고 있는 유클리드 거리가 아닌 코사인 거리를 행렬 형태로 출력해보겠습니다. 코사인 각도는 원점과 각 점을 잇는 벡터들 사이 각도의 코사인 값입니다. 

 

먼저 위 점들을 하나의 행렬로 묶어줍니다. 

 

mat1=matrix(c(P1,P2,P3,P4,P5),byrow=TRUE,nrow=5)

> mat1
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    3    5    2
[3,]    5    5    4
[4,]    1    4    7
[5,]    2    2    4

 

코사인 거리를 계산할 때는 dist 함수에서 method 를 cosine 으로 설정해주면 됩니다. 이때 사용하는 dist 함수는 base 패키지의 함수가 아니라, proxy 패키지의 dist 함수입니다. 

 

library(proxy)

> dist(mat1,method='cosine')
           1          2          3          4
2 0.17624553                                 
3 0.11176521 0.04153232                      
4 0.01307246 0.26118117 0.19696970           
5 0.01801949 0.20528059 0.09546597 0.04521408

 

P2와 P3사이의 코사인거리가 가장 가깝습니다. 

반응형

댓글