데이터과학을 위한 수학복습(2)

이번에는 벡터의 내적(inner product)에 관해 알아보자.

원점 O에서  와 같은 벡터 를 만들 때 를 벡터 가 이루는 각이라고 한다.

 

일 때, 벡터 와 벡터 는 수직이라고 하며 기호 로 나타낸다.

벡터의 시작점을 원점으로 할 때 벡터의 끝점의 좌표를 벡터의 성분이라고 하며,

 혹은 로 표시한다. 이 때 벡터 의 크기(길이)는 ,  의 크기는 이다. 이 크기를 벡터의 노름(norm)이라고도 한다.

이 경우 벡터의 내적(혹은 스칼라적)은 다음과 같이 정의된다.

두 벡터의 크기(벡터의 크기는 절대값 기호로 나타냄)의 곱에 사이각의 코사인 값을 곱한 것이다. 기호로는  또는 로 나타낸다. 즉,

벡터의 내적은 아래와 같이 벡터의 성분을 사용하여 나타낼 수 있다.

평면벡터 에 대하여

그리고 내적의 정의에 의하여

두 벡터 사이 각의 코사인 값은 두 벡터의 내적을 두 벡터의 크기의 곱으로 나눈 값이다. 영벡터가 아닌 두 벡터 의 내적이 0이면, 두 벡터는 직교(orthogonal)한다(혹은 수직이다)고 말하고 라고 표시한다.

이 코사인 값은 두 벡터의 상관성을 측정하는 코사인 유사도(cosine similarity)라는 척도에 바로 적용된다. 온라인 서점의 예를 보자.

위 그림에서 사용자 1은 책을 {B,C,B} 순으로 살펴보았고, 사용자 2는 책을 {C,A,B} 순으로 살펴보았을 때, 만약 사용자 3이 들어와서 책 A를 살펴보고 있다면, 그에게 어떤 책을 추천하면 좋을까?

온라인 서점은 사용자들의 클릭 혹은 검색 행태에 관한 데이터를 가지고 책들 사이의 상관성을 파악해 둔다. 그리고 만약 어떤 새로운 사용자가 들어와서 특정한 책을 살표보면 온라인 서점(의 컴퓨터)는 그 책과 상관성이 가장 높은 책(들)을 추천한다. 그 때 코사인 유사도가 사용될 수 있다.

온라인 서점은 사용자들의 검색 데이터를 가지고 품목(책) 대 품목(책) 행렬을  구한다. 그러면 각 책은 행벡터를 갖게 된다. 책 A는  , 책 B는  등의 행벡터를 갖는다. 그러면 책 A와 책 B 사이의 코사인 유사도는 위에서 소개한 사이각의 코사인 값을 구하는 공식으로 계산될 수 있다.

여기서 분자인 의 내적은 (0*1 + 1*0 + 1*2 + 0*0) = 2이다. 분모인 두 벡터의 크기와 크기의 곱은 아래와 같다.

따라서  책 A와 책 B의 코사인 유사도는,

다른 두 책들 사이의 코사인 유사도도 동일한 방법으로 계산할 수 있다. 온라인 서점의 컴퓨터는 책 A와 코사인 유사도가 가장 큰 책을 추천할 것이다.