벡터의 방향을 이용하는 코사인 유사도를 배우고, 유클리드 유사도와 비교한 뒤 Ⅱ단원 전체를 정리합니다.
| 단계 | 활동 | |
|---|---|---|
| 도입 | 코사인 유사도란? | 10분 |
| 활동1 | 코사인 유사도로 리뷰 감성 분석하기 | 15분 |
| 활동2 | 유클리드 유사도 vs 코사인 유사도 | 10분 |
| 활동3 | Ⅱ단원 정리 퀴즈 | 15분 |
두 텍스트 데이터를 나타내는 벡터의 방향이 비슷한 정도를 코사인 유사도라고 합니다. 두 벡터 $\vec a=(a_1,\cdots,a_n), \vec b=(b_1,\cdots,b_n)$이 이루는 각의 크기를 $x°$라 할 때,
$C(\vec a,\vec b)=\cos x°=\dfrac{a_1b_1+a_2b_2+\cdots+a_nb_n}{\sqrt{a_1^2+\cdots+a_n^2}\sqrt{b_1^2+\cdots+b_n^2}}$
코사인 유사도 값이 1에 가까울수록 두 벡터의 각이 0°에 가까워 유사하고, 0에 가까울수록 각이 90°에 가까워 유사하지 않다고 판단합니다. 예를 들어 벡터 $\vec a=(1,0)$과 세 벡터 $\vec b=(3,0), \vec c=(3,2), \vec d=(0,2)$가 이루는 각과 코사인 유사도는 다음과 같습니다.
| 벡터 | 두 벡터 사이의 각 | 코사인 유사도 |
|---|---|---|
| $\vec a$와 $\vec b$ | 0° | 1 |
| $\vec a$와 $\vec c$ | 약 33.7° | $\dfrac{3\sqrt{13}}{13}\approx0.83$ |
| $\vec a$와 $\vec d$ | 90° | 0 |
4차시와 같은 데이터 — 긍정 단어 $\vec p=(1,1,1,1,0,0,0,0)$, 부정 단어 $\vec n=(0,0,0,0,1,1,1,1)$, $U=\{$청결하다, 빠르다, 맛있다, 많다, 불편하다, 별로다, 불친절, 최악$\}$ — 로 리뷰 X의 코사인 유사도를 분석해 봅시다.
$C(\vec p,\vec x)=\dfrac{2}{\sqrt4\sqrt5}\approx0.45$, $C(\vec n,\vec x)=\dfrac{3}{\sqrt4\sqrt5}\approx0.67$이므로 $\vec x$는 $\vec p$보다 $\vec n$과 이루는 각이 더 작습니다. 따라서 리뷰 X는 부정 리뷰로 분류합니다. (4차시의 유클리드 유사도 결과와 같습니다.)
우유와 주스에 대한 선호 정도를 (우유 선호도, 주스 선호도)의 벡터로 나타냈다고 합시다. '나'는 우유보다 주스를 더 좋아하고, '민서'는 나와 벡터의 크기(거리)는 비슷하지만 반대로 우유를 더 좋아하며, '민준'은 나와 같은 방향(우유보다 주스를 더 좋아하는 비율이 같음)이지만 훨씬 강하게 좋아합니다.
거리 기준(유클리드 유사도)으로는 나와 민서가 더 비슷하다고 판단하지만, 방향 기준(코사인 유사도)으로는 나와 민준이 더 비슷하다고 판단합니다. 실제로 나와 민준은 정도의 차이는 있지만 우유보다 주스를 더 좋아하는 경향이 같으므로, 이 경우 코사인 유사도의 판단이 더 합리적입니다.
| 유클리드 유사도 | 코사인 유사도 | |
|---|---|---|
| 장점 | 거리로 직관적 해석 가능, 벡터 크기가 중요할 때 유용 | 벡터의 차원이 늘어도 성능이 크게 저하되지 않음 |
| 단점 | 차원이 커지면 신뢰성이 떨어지고, 방향이 비슷해도 멀면 유사하지 않다고 판단 | 벡터의 크기 정보를 고려하지 않음, 직관적 해석이 어려움 |
텍스트 데이터를 집합·벡터로 표현하는 방법, TF-IDF로 중요한 단어를 찾는 방법, 자카드·유클리드·코사인 유사도로 텍스트의 감성을 분석하는 방법까지 살펴보았습니다. 수고 많았습니다!